Modern meeting room booking system with role-based access control.
- 🔐 JWT Authentication - Secure login/registration with refresh tokens
- 👥 Role Management - Admin and user permissions
- 📅 Room Booking - Schedule and manage meeting rooms
- 📊 Dashboard - Real-time statistics and overview
- 🎨 Modern UI - Clean, responsive design with Tailwind CSS
Frontend: React 18 + TypeScript + Vite + Tailwind CSS
Backend: Node.js + Express + TypeScript + Prisma + PostgreSQL
Auth: JWT with access & refresh tokens
- Node.js (v18+)
- PostgreSQL
git clone https://github.com/mykhailokurochkin/bookme
cd bookme
npm run install:all# Create database
createdb meeting_rooms_db
# Setup environment files
cd backend
cp .env.example .env
cd ../frontend
cp .env.example .envBackend - Edit backend/.env:
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/meeting_rooms_db"
JWT_SECRET=your-super-secret-jwt-key-hereFrontend - Edit frontend/.env (optional):
VITE_PORT=5173
VITE_API_BASE_URL=http://localhost:4000cd backend
npx prisma migrate dev
npx prisma generatenpm run devOpen 🌐 http://localhost:5173
bookme/
├── backend/ # Express API
│ ├── prisma/ # Database schema
│ ├── src/ # Source code
│ └── .env.example # Environment template
├── frontend/ # React app
│ ├── src/ # Source code
│ └── .env.example # Environment template
└── README.md
POST /auth/register- Register userPOST /auth/login- LoginPOST /auth/refresh- Refresh tokenPOST /auth/logout- LogoutGET /auth/me- Get user info
GET /api/rooms- List user roomsPOST /api/rooms- Create roomGET /api/rooms/:id- Get room detailsPUT /api/rooms/:id- Update roomDELETE /api/rooms/:id- Delete roomGET /api/rooms/:roomId/members- List room membersPOST /api/rooms/:roomId/members- Add memberPUT /api/rooms/:roomId/members/:userId- Update member roleDELETE /api/rooms/:roomId/members/:userId- Remove memberGET /api/bookings- List user bookingsPOST /api/rooms/:roomId/bookings- Create bookingGET /api/bookings/:id- Get booking detailsPUT /api/bookings/:id- Update bookingDELETE /api/bookings/:id- Cancel booking
User {
id, email, name, password, createdAt, updatedAt
}
MeetingRoom {
id, name, description, createdBy, createdAt, creator, members
}
RoomMember {
id, roomId, userId, role (USER|ADMIN), createdAt, user
}
Booking {
id, userId, roomId, startTime, endTime, status, createdAt, updatedAt, description
}npm run install:all # Install all dependencies
npm run dev # Start development servers
npm run build # Build for productionBackend:
cd backend && npm run build && npm startFrontend:
cd frontend && npm run build
# Deploy dist/ folder