Premium booking platform for beauty & wellness businesses. Book appointments 24/7.
Note: This is a demo deployment for portfolio and resume purposes only.
- Monorepo: Turborepo
- API: NestJS 11, Prisma, PostgreSQL, Redis, Stripe, Resend
- Web: Next.js 16, React 19, Tailwind CSS, shadcn/ui, Recharts
- Shared: TypeScript, Zod, path aliases
- Node.js 18+
- Docker (for PostgreSQL and Redis)
- npm 10+
git clone <repo-url>
cd blooso
npm installCopy example env files and fill in values:
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.envRequired for API: DATABASE_URL, JWT_SECRET, REDIS_URL, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, RESEND_API_KEY
Required for Web: NEXT_PUBLIC_API_URL (e.g. http://localhost:3001)
# Start Postgres and Redis
docker compose up -d
# Run migrations
npm run db:migrate
# Seed (creates admin user)
npm run db:seednpm run dev- Web: http://localhost:3000
- API: http://localhost:3001
- API docs: http://localhost:3001/api/docs
| Command | Description |
|---|---|
npm run dev |
Start both apps in dev mode |
npm run build |
Build all apps |
npm run db:migrate |
Run Prisma migrations |
npm run db:push |
Push schema (dev) |
npm run db:seed |
Seed database |
npm run db:studio |
Open Prisma Studio |
blooso/
├── apps/
│ ├── api/ # NestJS API
│ ├── web/ # Next.js web app
│ └── docs/ # Documentation
├── packages/
│ ├── shared/ # Shared types and utils
│ ├── tailwind-config/
│ └── ui/
└── package.json
- Create a Railway project
- Add PostgreSQL and Redis (or use Neon + Upstash)
- Connect repo, set root directory to
apps/api - Set env vars:
DATABASE_URL,JWT_SECRET,REDIS_URL,STRIPE_*,RESEND_*,CORS_ORIGIN - Deploy
- Import project in Vercel
- Set root directory to
apps/web - Set
NEXT_PUBLIC_API_URLto your API URL - Deploy
cd apps/api
DATABASE_URL="postgresql://..." npx ts-node prisma/seed-production.ts- Admin (dev seed): admin@blooso.com / Admin123!
- Demo (production seed): demo@blooso.com / Demo123!
Private / Unlicensed

