A travel day planner application built with React and Express.
- Frontend: React 19, TypeScript, Vite, Tailwind CSS
- Backend: Express 5, TypeScript
- Testing: Vitest, Testing Library, Supertest
- Node.js 18+
- npm
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installYou need two terminal windows:
Terminal 1 - Backend (runs on http://localhost:3000):
cd backend
npm run devTerminal 2 - Frontend (runs on http://localhost:5173):
cd frontend
npm run devThe frontend proxies API requests to the backend automatically.
# Backend tests
cd backend
npm test
# Frontend tests
cd frontend
npm test├── backend/
│ ├── src/
│ │ └── server.ts # Express server
│ ├── data/
│ │ ├── cities.json # City catalogue
│ │ ├── activities.json # Activity catalogue
│ │ └── dayplan.json # Day plan storage
│ └── tests/
│
├── frontend/
│ ├── src/
│ │ └── App.tsx # Main React component
│ └── tests/
│
└── TASK.md # Task requirements
Cities are stored in backend/data/cities.json:
{ "id": "goa", "name": "Goa", "country": "India" }Activities are stored in backend/data/activities.json. Each activity has:
| Field | Type | Description |
|---|---|---|
| id | string | Unique identifier |
| cityId | string | References a city |
| title | string | Display name |
| type | string | Category: water_sport, sightseeing, adventure, leisure, wellness, transfer |
| duration | number | Duration in minutes |
| pricePerPax | number | Price per person |
The day plan is stored in backend/data/dayplan.json. The file starts empty ({}) - define your own structure.
See TASK.md for the full requirements.