Cleaning company landing page built with React Router 7 (SSR mode).
- React 19 - UI library
- React Router 7 - SSR framework (Vite-based)
- TypeScript 5.9 - Type safety
- Tailwind CSS 4 - Utility-first styling
- Vite 7 - Build tool
- React Aria - Accessible component primitives
- Framer Motion - Animations
npm installStart the development server with HMR:
npm run devYour application will be available at http://localhost:5173.
npm run typecheckCreate a production build:
npm run buildRun the production server:
npm run startfrontend/
├── components/ # Reusable UI components
│ └── ui/ # Base components (button, heading, text)
├── core/ # Shared utilities and configuration
│ ├── config/ # App configuration (company info)
│ └── util/ # Utilities (cn, mergeRef)
├── pages/ # Page components and layouts
│ └── landing/ # Landing page with section layouts
├── root.tsx # App root component
└── routes.ts # Route definitions
~/* maps to frontend/*
import { cn } from '~/core/util/cn'docker build -t melloclean .
docker run -p 3000:3000 mellocleanDeploy the output of npm run build:
├── package.json
├── package-lock.json
├── build/
│ ├── client/ # Static assets
│ └── server/ # Server-side code