Technical Design Document
Document ID: FW-TDD-02032026
Current Version: 1.1
Date: 20.04.2026
Organisation: University of Ruse “Angel Kanchev”
Department: IIT
Author(s): H. Hristov
Reviewer(s): M. Dzurov
Confidentiality: Internal
Table of Contents
Introduction
Document Purpose
This document defines the technical design and architectural decisions underlying the Fervor Web website. It serves as a comprehensive reference for the system’s structure, technology choices, and component dependencies. This document aims to provide readers with a clear understanding of how the system is built, what technologies power it, and how its components interact.
Document Scope
The guidelines and specifications outlined in this document apply to the full technical implementation of the Fervor Web website. This includes the front-end architecture, the selected technology stack, and all external libraries and dependencies the project relies upon. This document is intended for the developers and technical reviewers working on the project. It is to be read alongside the Visual Style Guide (FW-VSG-01032026), which governs the visual and UX standards that this technical implementation must uphold.
Relationship to Other Documents
This Technical Design Document complements the Visual Style Guide by providing the technical foundation needed to realize the defined design standards. Decisions regarding component structure, styling approach, and library selection have been made with the requirements of the Visual Style Guide in mind, particularly with respect to typography, color usage, accessibility, and responsive layout.
Architectural Representation
The Fervor Web website follows a client-side multi-page architecture, built entirely on the front end with no backend or server-side rendering involved. All pages are rendered in the browser via React, with React Router managing navigation between them.
Component Stucture
The UI is organized into a hierarchy of reusable React components, following a standard separation of concerns:
- Pages - Top-level components, one per route, responsible for overall page layout and composition.
- Components - Reusable UI elements shared across pages, built with shadcn/ui primitives and styled via Tailwind to conform to the VSG.
- Layouts - Structural wrappers that define shared elements across pages, such as the navigation bar and footer.
Internationalisation
Language switching is managed entirely on the client side via react-i18next. Translation strings are stored in static JSON resource files, one per supported language, and are loaded at runtime. No server requests are made for language changes.
Wiki
The project wiki is architecturally separate from the main application. It is a static site generated by Jekyll and hosted on GitHub Pages under a separate subdomain, sharing no code or build pipeline with the React application.
Technology Stack
The Fervor Web website is built as a modern multi-page application, leveraging a component-based front-end architecture. The stack has been selected to prioritize development speed, visual consistency, and alignment with the standards defined in the Visual Style Guide.
Front End
- React 19 (via Vite) - The core UI framework. React’s component model enables modular, reusable interface elements that map naturally onto the design system defined in the VSG. Vite serves as the build tool and development server, providing near-instant Hot Module Replacement and optimized production builds via the SWC-based compiler.
- TypeScript - The project is written entirely in TypeScript, providing static type checking across all components, hooks, and utilities. This reduces runtime errors and improves maintainability and developer experience, particularly as the codebase scales across multiple pages and language configurations.
- Tailwind CSS - Utility-first CSS framework used for layout, spacing, and responsive design. Tailwind’s configuration is used to encode the design tokens from the VSG.
- shadcn/ui - Component library built on top of Radix UI primitives, used for interactive UI elements such as dialogs, dropdowns, and form controls. Components are unstyled by default and customized via Tailwind to conform to the VSG.
- HTML5 - Semantic HTML5 markup is used throughout, supporting both accessibility requirements and SEO optimization.
Component Development and Testing
- Storybook - Used to build, test, and visually validate UI components in isolation.
Documentation and Wiki
- Jekyll (GitHub Pages) - A static site generator used to host the project wiki. It is deployed separately via GitHub Pages and is not part of the root application. Jekyll’s Markdown-based authoring and GitHub-native integration make it well-suited for maintaining living documentation alongside the codebase.
Version Control
- Git & Github - Source control and collaboration are managed through GitHub. The repository also hosts the Jekyll wiki as a GitHub Pages site, keeping documentation co-located with the source code.
Runtime Environment
- Node.js / npm - Used as the JavaScript runtime and package manager for managing front-end dependencies, running the Vite dev server, and executing the production build pipeline.
Dependencies
- react (^19.0.0) - Core UI framework;
- react-dom (^19.0.0) - React DOM renderer;
- react-router-dom (^7.0.0) - Client-side routing and multi-page navigation;
- react-i18next (^15.0.0) - Internationalization and multi-language support;
- i18next (^24.0.0) - i18n core engine, required by react-i18next;
- typescript (^5.0.0) - Static type checking;
- vite (^6.0.0) - Build tool and development server;
- @vitejs/plugin-react-swc (^3.0.0) - SWC-based React plugin for Vite;
- tailwindcss (^4.0.0) - Utility-first CSS framework;
- shadcn/ui (latest) - Accessible, unstyled component primitives;
Project Structure
Root
.
├── docs/ # Project documentation
│ └── assets/ # Images and assets used in documentation
│ └── bg/ # Translation of the documentation, needed for the class
└── site/ # The React(Vite) application
Site
site/
├── public/ # Static files copied as-is to dist (404.html, favicon, etc.)
└── src/ # Application source code
Source (site/src/)
src/
├── assets/ # Images and assets used in the application
│ ├── fonts/ # Self-hosted WOFF2 font files (Montserrat Alternates, Ubuntu, Exo 2)
│ └── icons/ # Custom SVG icons imported as React components via vite-plugin-svgr
│
├── components/ # Reusable UI components shared across pages
│ └── ui/ # shadcn/ui primitives (Button, Card, Carousel, etc.)
│ └── utils/ # Utilities
│
├── context/ # React context providers (ThemeContext for dark/light mode)
│
├── lib/ # Utility modules (cookie helpers, etc.)
│
├── locales/ # Translation JSONs for available languages
│ └── ...
│
├── pages/ # Page-level components (About, Services, Work, Contact)
│
└── stories/ # Storybook stories for component development and documentation