# Vontor CZ Welcome to **Vontor CZ**! ## frontend Folder Overview The `frontend` folder contains all code and assets for the client-side React application. Its structure typically includes: - **src/** Tady se ukladají věci, které uživateli se nepředavají přímo spíš takové stavební kostky. - **api/** TypeScript/JS soubory které se starají o API a o JWT tokeny. Čistě pracují s backendem - **context/** Kontext si načte data které mu předáš a můžeš si je předávat mezi komponenty rychleji. - **hooks/** Pracuje s API a formátují to do výstupu který potřebujeme. - **components/** Konktrétní komponenty které se vykreslují na stránce. Už využívají už hooky a contexty pro vykreslení informaci bez složite logiky (ať je komponenta hezky čistá a né moc obsáhla). - **features/** Nejsou to celé stránky, ale hotové komponenty. Obsahuje všechny komponenty plus její hooky, API, state a utils potřebné pro jednu konkrétní funkcionalitu aplikace. (použijí se jenom jednou) Features zajišťují modularitu a přehlednost aplikace. Příklad: komponenta košík, která zahrnuje API volání, state management a UI komponenty. --- - **layouts/** Tohle je jenom komponenta, která načte další komponenty, ale používá se jako layout kde jsou například navigace footer a ostatní se opakující prvky stránky, ale hlavní obsah ještě není součastí! Ten se načte skrz v pages. - **pages/** Tady se jde do finále tady se vkládají samostatné komponenty a tvoří se už hlavní obsah stránky a vkládají se komponenty a tvoří se logika mezi ně. - **routes/** tady se ukládají routy které například zabraňuji načtení stránky nepříhlášeným uživatelům nebo jenom pro ty s určitou roli/oprávněním... tyhle route komponenty se pak využívají v --- - **assets/** Obrázky, fonty, a ostatní statické soubory. --- - **App.tsx** Root komponenta pro aplikaci, kde se nastavují routy pro jednotlivé stránky. Pozor nemyslím ty routy ze složky routes/ ... to jsou jenom obaly pro konktrétní routy pro jednotlivé stránky. - **main.tsx** Vstupní bod pro načítaní aplikace (načíta se první komponenta App.jsx) --- - **utils/** Sběrné místo pro pomocné funkce, které nejsou přímo komponenty nebo hooky, ale jsou znovupoužitelné napříč aplikací. --- - **index.css** globální styly - **App.css** obsahuje stylovaní layoutu, navigace, footer, error okna atd. takové věci které zůstavjí vždy stejně - **public/** Složka public obsahuje statické soubory dostupné přímo přes URL (např. index.html, favicon, obrázky), které React přímo nereenderuje ani neoptimalizuje. - **package.json** něco jak requirements.txt v pythonu - **vite.config.js / vite.config.ts** Vite konfigurace pro building a serving frontend aplikace. - **Dockerfile** Konfigurace pro Docker ## Getting Started :3 1. **Instalace balíčku (bere z package.json):** ```sh npm install ``` 3. **Start dev server:** ```sh npm run dev ``` 4. **Build pro produkci(finále):** ```sh npm run build ``` 5. **Preview production build:** ```sh npm run preview ``` ## Portfolio site structure (vontor.cz) New top-level navigation and sections were added to build a modern portfolio: - components/ - navbar/SiteNav.tsx – sticky top navigation with dropdown - hero/HeroCarousel.tsx – YouTube carousel hero with overlay text - portfolio/PortfolioGrid.tsx – grid of projects with modal detail - trading/TradingGraph.tsx – placeholder for Trading212 live graph - donate/DonationShop.tsx – symbolic donation tiers styled as product cards - skills/SkillsSection.tsx – categorized skill lists - hosting/HostingSecuritySection.tsx – hosting & protection info panel - common/Modal.tsx – reusable accessible modal - pages/ - home/home.tsx – composes all sections on the homepage - portfolio/PortfolioPage.tsx - skills/SkillsPage.tsx - hosting/HostingSecurityPage.tsx - donate/DonateShopPage.tsx - contact/ContactPage.tsx - layouts/ - HomeLayout.tsx – wraps pages with SiteNav and Footer Routing (src/App.tsx): - "/" → Home (all sections) - "/portfolio" - "/skills" - "/hosting-security" - "/donate" - "/contact" Styling: - The global palette lives in `src/index.css` as CSS variables and Tailwind is available via `@import "tailwindcss"`. - Reusable helpers: `.glass`, `.glow`, `.section`, `.container`, `.divider`. Assets: - Public project images are in `public/portfolio/` and used by `PortfolioGrid`. ## Creating a New React Project with Vite If you want to start a new project: ```sh npm create vite@latest # Choose 'react' or 'react-ts' for TypeScript cd your-project npm install npm run dev ```