๐ณ Install with Docker โ
The fastest way to get KitchenAsty running. Docker Compose starts the API server, admin dashboard, storefront, and PostgreSQL in one command.
1. ๐ฅ Clone the Repository โ
bash
git clone https://github.com/kitchenasty/kitchenasty.git
cd kitchenasty2. โ๏ธ Configure Environment โ
bash
cp packages/server/.env.example packages/server/.envEdit packages/server/.env and set at minimum:
dotenv
DATABASE_URL=postgresql://kitchenasty:kitchenasty@postgres:5432/kitchenasty
JWT_SECRET=your-random-secret-here
CORS_ORIGINS=http://localhost:5173,http://localhost:5174See Environment Variables for the full reference.
3. ๐ Start Services โ
bash
docker compose up --buildThis starts:
| Service | URL |
|---|---|
| API Server | http://localhost:3000 |
| Admin Dashboard | http://localhost:5173 |
| Storefront | http://localhost:5174 |
| PostgreSQL | localhost:5432 |
4. ๐๏ธ Run Migrations & Seed โ
In a separate terminal, run the database setup inside the server container:
bash
docker compose exec server npx prisma migrate deploy --schema ../../prisma/schema.prisma
docker compose exec server npx tsx ../../prisma/seed.ts5. โ Access the Platform โ
๐ ๏ธ Admin Dashboard โ
- URL: http://localhost:5173
- Email:
admin@kitchenasty.com - Password:
admin123
๐๏ธ Storefront โ
- URL: http://localhost:5174
- Register a new customer account or browse as a guest
๐ API Documentation โ
- Swagger UI: http://localhost:3000/api/docs
- OpenAPI spec: http://localhost:3000/api/openapi.json
๐ Stopping โ
bash
docker compose downTo also remove the database volume:
bash
docker compose down -v๐ Rebuilding โ
After pulling changes:
bash
docker compose up --build๐ Troubleshooting โ
๐ง Port conflicts โ
If ports 3000, 5173, 5174, or 5432 are in use, edit docker-compose.yml and change the host port mappings (left side of the colon).
๐ Database connection refused โ
The server waits for PostgreSQL to be healthy before starting. If you still see connection errors, check that the DATABASE_URL in your .env uses postgres (the Docker service name) as the host, not localhost.