Monorepo Airbnb-style app built with React, NestJS, PostgreSQL, and S3-compatible storage.
apps/client: React + Viteapps/server: NestJS + TypeORMpostgres: local database via Docker Composes3ninja: local S3-compatible object storage via Docker Composepnpm+ Turborepo
- Node.js 20+
- pnpm 10+
- Docker
- Google Maps API key for client search/location features
- Install dependencies:
pnpm install- Create the root env file:
cp .env.example .env- Start local services:
docker compose up -d- Start the apps:
pnpm devClient runs on http://localhost:5173.
Server runs on http://localhost:8080.
- TypeORM migrations are enabled on server startup
synchronizeis disabled- migration history is stored in
migrations_history
Useful commands:
pnpm --filter @airbnb-clone/server migration:run
pnpm --filter @airbnb-clone/server migration:revert
pnpm --filter @airbnb-clone/server migration:generate --name YourMigrationNameSeed data lives in scripts/seed/data.json.
Run:
pnpm seedThis seeds users, listings, locations, and listing images.
The app uses S3-compatible storage.
- Local endpoint:
http://localhost:9444 - Local service:
s3ninja
Seeded search recommendations in the client are based on destinations from scripts/seed/data.json.
pnpm dev
pnpm dev:client
pnpm dev:server
pnpm build
pnpm lint
pnpm seedapps/
client/
server/
docker/
scripts/seed/
docs/