https://github.com/sabinghost19/spaceflow
SmartHack'25 Hackathon Runner-up 🏆 - SpaceFlow - AI-powered workspace management platform. Features intelligent room booking, automated event planning, real-time availability tracking, and interactive floor maps
https://github.com/sabinghost19/spaceflow
hackaton-project smarthack
Last synced: 8 days ago
JSON representation
SmartHack'25 Hackathon Runner-up 🏆 - SpaceFlow - AI-powered workspace management platform. Features intelligent room booking, automated event planning, real-time availability tracking, and interactive floor maps
- Host: GitHub
- URL: https://github.com/sabinghost19/spaceflow
- Owner: SabinGhost19
- Created: 2025-11-08T09:42:27.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-11-10T16:20:09.000Z (7 months ago)
- Last Synced: 2025-11-10T16:25:00.561Z (7 months ago)
- Topics: hackaton-project, smarthack
- Language: TypeScript
- Homepage:
- Size: 51.1 MB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RoomBooking - Sistem Management Rezervare Spatii
## Cuprins
- [Despre Proiect](#despre-proiect)
- [Arhitectura Sistemului](#arhitectura-sistemului)
- [Functionalitati](#functionalitati)
- [Tehnologii](#tehnologii)
- [Instalare si Rulare](#instalare-si-rulare)
---
## Despre Proiect
RoomBooking este o platforma avansata de management si rezervare spatii, dezvoltata pentru Molson Coors in cadrul SmartHack. Sistemul ofera gestionare completa a spatiilor de lucru, meeting rooms, zone de relaxare si evenimente, cu planificare asistata de inteligenta artificiala.
**Problema rezolvata:** Optimizarea utilizarii spatiilor de lucru prin rezervari inteligente, colaborare facilitata intre echipe si planificare automata a evenimentelor.
---
# [GO_SEE_SCREENSHOTS_HERE](Screens.md)
## Arhitectura Sistemului

Aplicatia utilizeaza o arhitectura microservices containerizata cu Docker:
- **Frontend Container**: React + TypeScript (Port 5173)
- **Backend Container**: FastAPI + Python (Port 8000)
- **Database Container**: PostgreSQL 15 (Port 5432)
Toate componentele comunica printr-o retea Docker privata (roombooking_network).
---
## Functionalitati
### Frontend (React + TypeScript)
**1. Sistem de Autentificare**
- Inregistrare si autentificare utilizatori
- Roluri: User si Manager
- JWT token-based authentication
- Protected routes
**2. Gestionare Camere**
- Vizualizare lista camere cu filtrare si sortare
- Filtre: nume, capacitate minima, pret maxim
- Detalii camere: capacitate, pret, amenitati, imagini
- Tipuri spatii: Meeting Rooms, Phone Booths, Beer Points, Billiard Rooms
**3. Sistem Rezervari**
- Calendar interactiv pentru selectare data
- Slot-uri orare: 7:00 - 22:00
- Verificare disponibilitate real-time
- Rezervari cu participanti multipli
- Status: Upcoming, Completed, Cancelled, Pending Approval
- Anulare rezervari
**4. AI Event Planner**
- Planificare multipla evenimente pe o zi
- Input: activitati cu ore, participanti, amenitati necesare, preferinte
- Procesare prin OpenAI GPT
- Sugestii camere cu confidence score si explicatii
- Alternative pentru fiecare activitate
- Estimare cost total
- Confirmare bulk bookings
**5. Invitatii si Notificari**
- Sistem de invitatii pentru participanti
- Notificari real-time cu badge
- Accept/Reject invitatii
- Tracking status raspunsuri
**6. Dashboard Manager (Doar Manageri)**
- Vizualizare rezervari in asteptare
- Aprobare/Respingere rezervari
- Management camere (create, update, delete)
**7. Harti Interactive 2D**
- Plan de etaj SVG
- Obiecte interactive (camere, mese, scaune, plante)
- Zoom si pan
- Statistici: total camere, disponibilitate, rata ocupare, pret mediu
**8. Sistem Avatare**
- 100+ avatare in 28 stiluri diferite
- Paginare si preview
- Personalizare profil
### Backend (FastAPI + Python)
**1. Authentication API**
- POST /auth/register - Inregistrare utilizator
- POST /auth/login - Autentificare (returneaza access + refresh tokens)
- POST /auth/refresh - Reinnoire access token
**2. Users API**
- GET /users/me - Informatii utilizator curent
- PUT /users/me - Update profil
- GET /users - Lista utilizatori (pentru participanti)
**3. Rooms API**
- GET /rooms - Lista camere cu filtrare (search, capacity, price, availability)
- GET /rooms/{id} - Detalii camera
- POST /rooms - Creare camera (manager only)
- PUT /rooms/{id} - Update camera (manager only)
- DELETE /rooms/{id} - Stergere camera (manager only)
**4. Bookings API**
- GET /bookings/my-bookings - Rezervarile utilizatorului
- GET /bookings/my-schedule - Program complet utilizator
- GET /bookings/room/{id} - Rezervari pentru o camera
- POST /bookings/check-availability - Verificare disponibilitate
- POST /bookings - Creare rezervare
- PUT /bookings/{id} - Update rezervare
- POST /bookings/{id}/cancel - Anulare rezervare
- DELETE /bookings/{id} - Stergere rezervare
**5. Event Suggestions API (AI)**
- POST /event-suggestions/suggest - Obtine sugestii AI pentru evenimente
- POST /event-suggestions/confirm-bulk - Confirmare rezervari multiple
**6. Notifications API**
- GET /notifications - Lista invitatii cu filtrare (unread_only)
- GET /notifications/count - Numar notificari necitite
- POST /notifications/{id}/accept - Acceptare invitatie
- POST /notifications/{id}/reject - Respingere invitatie
**7. Avatars API**
- GET /avatars/styles - Lista stiluri avatar disponibile
- GET /avatars/list - Lista avatare paginate
- GET /avatars/generate - Generare avatar custom
**8. Business Logic**
- Validare disponibilitate camere (verificare conflicte)
- Validare capacitate (numar participanti vs capacitate camera)
- Validare interval orar (7:00-22:00)
- Validare participanti (verificare disponibilitate participanti)
- Integrare OpenAI pentru analiza evenimente si recomandari camere
- Sistem aprobare rezervari (pending/approved/rejected)
**9. Database Models**
- Users (id, email, username, full_name, hashed_password, is_manager, avatar_url)
- Rooms (id, name, description, capacity, price, amenities, image, svg_id, coordinates, is_available)
- Bookings (id, room_id, user_id, booking_date, start_time, end_time, status)
- Booking_Participants (many-to-many: bookings - users)
- Booking_Invitations (id, booking_id, user_id, status, read)
---
## Tehnologii
### Frontend
- React 18 + TypeScript
- Vite (build tool)
- Shadcn/UI + Radix UI + Tailwind CSS
- React Three Fiber + Three.js (3D graphics)
- TanStack Query (server state)
- React Hook Form + Zod (forms & validation)
- Axios (HTTP client)
- date-fns (date manipulation)
### Backend
- FastAPI 0.115.0
- Python 3.8+
- SQLAlchemy 2.0 (ORM)
- PostgreSQL 15
- AsyncPG (async PostgreSQL driver)
- python-jose (JWT)
- passlib + bcrypt (password hashing)
- OpenAI SDK 1.12.0 (AI integration)
- Pydantic 2.10.0 (validation)
### Infrastructure
- Docker + Docker Compose
- PostgreSQL 15 Alpine
---
## Instalare si Rulare
### Prerequisite
- Docker si Docker Compose instalate
- Git
### Instalare Rapida
**1. Cloneaza repository:**
```
git clone
cd RoomBooking
```
**2. Porneste aplicatia:**
```
docker-compose up -d
```
**3. Verifica status:**
```
docker-compose ps
```
**4. Acceseaza aplicatia:**
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/api/v1/docs
**5. Credentiale initiale:**
- Email: admin@example.com
- Password: Admin123!
- Role: Manager
### Comenzi Utile
**Opreste aplicatia:**
```
docker-compose down
```
**Rebuild dupa modificari:**
```
docker-compose up -d --build
```
**Vezi logs:**
```
docker-compose logs -f
```
**Logs specific:**
```
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f postgres
```
**Acceseaza containerul backend:**
```
docker-compose exec backend bash
```
**Acceseaza PostgreSQL:**
```
docker-compose exec postgres psql -U postgres -d roombooking
```
**Sterge tot (inclusiv date):**
```
docker-compose down -v
```
### Configurare (Optional)
Pentru productie, editeaza `docker-compose.yml`:
- SECRET_KEY: genereaza un key securizat
- OPENAI_API_KEY: adauga API key-ul tau OpenAI
- FIRST_SUPERUSER_EMAIL/PASSWORD: schimba credentialele admin
- BACKEND_CORS_ORIGINS: configureaza domeniile permise