Claude Agent b9f994cf8d feat(docker): add Docker Compose deployment for Dokploy
- backend/Dockerfile: Python 3.12-slim, uvicorn on port 8000
- frontend/Dockerfile: multi-stage Node build + nginx:alpine serve
- frontend/nginx.conf: proxy /api to backend, SPA routing for Vue Router
- docker-compose.yml: backend+frontend services with Traefik labels
- fix(cors): use settings.frontend_url instead of hardcoded localhost

Fixes Nixpacks detection failure (requirements.txt/package.json not at root).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 07:32:28 +00:00

Space Booking System

Web application for booking offices and meeting rooms with administrative approval flow.

Tech Stack

Backend:

  • FastAPI 0.115+ (Python 3.12+)
  • SQLAlchemy 2.0 (ORM)
  • SQLite database
  • JWT authentication
  • Uvicorn (ASGI server)

Frontend:

  • Vue.js 3.4+
  • Vite 5.x (build tool)
  • Pinia (state management)
  • Vue Router 4.x
  • TypeScript
  • FullCalendar (calendar view)

Getting Started

Prerequisites

  • Python 3.12+
  • Node.js 18+
  • npm or yarn

Backend Setup

cd backend

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Seed database with demo users
python seed_db.py

# Run development server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Backend will be available at: http://localhost:8000

API documentation: http://localhost:8000/docs

Frontend Setup

cd frontend

# Install dependencies
npm install

# Run development server
npm run dev

Frontend will be available at: http://localhost:5173

Demo Accounts

After seeding the database:

Development Commands

Backend

cd backend

# Type checking
mypy app/

# Linting
ruff check .

# Format code
ruff format .

# Run tests
pytest

# Run with auto-reload
uvicorn app.main:app --reload

Frontend

cd frontend

# Type checking
npm run typecheck

# Linting
npm run lint

# Build for production
npm run build

# Preview production build
npm run preview

Project Structure

space-booking/
├── backend/
│   ├── app/
│   │   ├── api/          # API endpoints
│   │   ├── core/         # Core utilities (config, security)
│   │   ├── db/           # Database session
│   │   ├── models/       # SQLAlchemy models
│   │   ├── schemas/      # Pydantic schemas
│   │   └── main.py       # FastAPI application
│   ├── tests/            # Backend tests
│   ├── requirements.txt
│   └── seed_db.py        # Database seeding script
├── frontend/
│   ├── src/
│   │   ├── assets/       # CSS and static assets
│   │   ├── components/   # Vue components
│   │   ├── router/       # Vue Router configuration
│   │   ├── services/     # API services
│   │   ├── stores/       # Pinia stores
│   │   ├── types/        # TypeScript types
│   │   ├── views/        # Page components
│   │   ├── App.vue       # Root component
│   │   └── main.ts       # Application entry
│   └── package.json
└── README.md

Features

Implemented (US-001)

  • User authentication with JWT
  • Login page with email/password
  • Protected routes
  • Token storage and validation
  • Redirect to dashboard on successful login
  • Role-based access (admin/user)

Coming Soon

  • Space management (CRUD)
  • Booking calendar view
  • Booking request system
  • Admin approval workflow
  • Notifications
  • Audit log

API Endpoints

Authentication

  • POST /api/auth/login - Login with email and password

Health

  • GET / - API info
  • GET /health - Health check

License

MIT

Description
Space Booking Application - Aplicație pentru rezervarea spațiilor
Readme 636 KiB
Languages
Python 51.2%
Vue 43.3%
TypeScript 4.4%
CSS 0.5%
Shell 0.4%
Other 0.1%