This guide walks you through running the complete Stay Sidekick stack on your local machine using Docker Compose. A singleDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/sdurutr436/stay-sidekick/llms.txt
Use this file to discover all available pages before exploring further.
docker compose up -d --build command starts all five services — nginx, Angular frontend, 11ty static site, Flask backend, and PostgreSQL — behind a single Nginx reverse proxy on port 80. No manual service wiring required.
Run the Full Stack Locally
Check Prerequisites
Make sure you have the following tools installed before proceeding:
Verify your Docker installation:
| Tool | Minimum Version |
|---|---|
| Docker | 24+ |
| Docker Compose | v2 (plugin) |
| Git | any |
Copy the Environment Files
The stack is configured via three The root
.env files. Copy the provided examples to get started:web/.env is already included in the repository with the official Cloudflare Turnstile test key (1x00000000000000000000AA), which is always valid in development. No action needed for web/.env on first run..env ships with safe development defaults. At minimum, review these values before starting:| Variable | File | Required | Description |
|---|---|---|---|
POSTGRES_PASSWORD | .env | Yes (prod) | Change before any production deployment |
SECRET_KEY | backend/.env | Yes | Flask secret key — minimum 32 random characters |
JWT_SECRET_KEY | backend/.env | Yes | HS256 signing key for all JWT tokens |
FERNET_KEY | backend/.env | Yes | Fernet key for encrypting PMS/AI API keys at rest |
Build Images and Start the Stack
Build all service images and start the stack in the background:On first run, Docker will build four custom images (
nginx, frontend, web, backend) and pull postgres:16-alpine. This may take a few minutes depending on your connection speed.To follow the logs in real time during startup:Verify Service Health
Confirm that all five containers are running and the API is responding:You should see five services with Expected response:You can also check the nginx security headers are applied:
Up status. Then confirm the API health endpoint:Open the App and Log In
Navigate to
After logging in you will land on the main dashboard showing the tool catalog and external integration status for the seed company.
http://localhost/menu/ in your browser. Log in using the development seed credentials created automatically on first startup:| Field | Value |
|---|---|
dev@staysidekick.es | |
| Password | admin123 |
| Role | admin (superadmin privileges) |
Available URLs
After a successful startup, the following endpoints are available on your local machine:| URL | Service | Description |
|---|---|---|
http://localhost/ | 11ty static site | Public landing page and legal content |
http://localhost/menu/ | Angular 21 SPA | Private operational panel (requires login) |
http://localhost/api/ | Flask REST API | Backend API (JSON responses) |
nginx container on port 80. No other ports are exposed to the host.
Development Without Docker
For faster iteration on the frontend and static site without running the full Docker stack, use the provided development scripts. These start 11ty and Angular in parallel with hot-reload enabled. Linux / macOS:| URL | Service |
|---|---|
http://localhost:8080 | 11ty static site (with watch) |
http://localhost:4200 | Angular SPA (with hot-reload) |
The development servers do not include the Flask backend or PostgreSQL. To test authenticated API calls during development, run the full Docker stack and point the Angular dev server at
http://localhost/api/ — or start the Flask backend directly with cd backend && python run.py.
