# ragusaitweb (Ragusa IT-Consulting website) ## Project name - `ragusaitweb` (from `package.json`) ## Purpose - Company website / marketing site for Ragusa IT-Consulting. - React SPA with routing, animations, i18n (English/German), and a contact form (EmailJS). - Production deployment configured for Firebase Hosting. ## Tech stack (from `package.json`) **Dependencies** - `react` `^19.2.3` - `react-dom` `^19.2.3` - `react-router-dom` `^7.12.0` - `motion` `^12.28.1` - `ogl` `^1.0.11` - `@emailjs/browser` `^4.4.1` - `react-icons` `^5.5.0` **Dev dependencies** - `vite` `^7.3.1` - `@vitejs/plugin-react` `^5.1.2` - `typescript` `^5.9.3` - `vitest` `^4.0.17` - `jsdom` `^27.4.0` - `@testing-library/react` `^16.3.2` - `@testing-library/dom` `^10.4.1` - `@types/react` `^19.2.9` - `@types/react-dom` `^19.2.3` **Notables** - ESM project (`"type": "module"`). ## Key config files - `vite.config.ts`: Vite + React plugin; dev server `port: 3000`; build output to `build/`; manual chunk for `motion`. - `tsconfig.json`: strict TS, `moduleResolution: bundler`, `noEmit: true`. - `tsconfig.node.json`: TS config for `vite.config.ts` (project reference). - `index.html`: Vite entry HTML. - `firebase.json`: Firebase Hosting (serves `build/`, SPA rewrite, security headers + CSP). - `.firebaserc`: Firebase project mapping. - `.env.example`: expected `VITE_EMAILJS_*` vars. - `AGENTS.md`: repo coding/testing conventions. ## Directory structure - `public/`: static assets - `src/`: application source - `src/components/` - `src/components/effects/`: visual effects (e.g. `GradientBlinds`) - `src/components/layout/`: layout components (Navbar/Footer/FancyCursor) - `src/components/sections/`: page sections (Hero/Services) - `src/components/ui/`: reusable UI components (Button/Input/Card/Modal/PageLoader) - `src/hooks/`: custom hooks (+ tests) - `src/i18n/`: translations + i18n wiring (+ tests) - `src/pages/`: route components (+ tests) - `src/styles/`: global styling (`global.css`, `theme.css`) - `src/utils/`: utilities (+ tests) - `src/main.tsx`: app entrypoint - `src/App.tsx`: routing/app shell - `src/config.ts`: app configuration