# 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 ```bash 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 ```bash 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: - **Admin:** admin@example.com / adminpassword - **User:** user@example.com / userpassword ## Development Commands ### Backend ```bash 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 ```bash 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) - [x] User authentication with JWT - [x] Login page with email/password - [x] Protected routes - [x] Token storage and validation - [x] Redirect to dashboard on successful login - [x] 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