Skip to content

mykhailokurochkin/bookme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏢 BookMe

Modern meeting room booking system with role-based access control.

✨ Features

  • 🔐 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

🛠️ Tech Stack

Frontend: React 18 + TypeScript + Vite + Tailwind CSS
Backend: Node.js + Express + TypeScript + Prisma + PostgreSQL
Auth: JWT with access & refresh tokens

🚀 Quick Start

Prerequisites

  • Node.js (v18+)
  • PostgreSQL

1. Clone & Install

git clone https://github.com/mykhailokurochkin/bookme
cd bookme
npm run install:all

2. Database Setup

# Create database
createdb meeting_rooms_db

# Setup environment files
cd backend
cp .env.example .env

cd ../frontend  
cp .env.example .env

3. Environment Configuration

Backend - Edit backend/.env:

DATABASE_URL="postgresql://postgres:your_password@localhost:5432/meeting_rooms_db"
JWT_SECRET=your-super-secret-jwt-key-here

Frontend - Edit frontend/.env (optional):

VITE_PORT=5173
VITE_API_BASE_URL=http://localhost:4000

4. Database Migration

cd backend
npx prisma migrate dev
npx prisma generate

5. Start Development

npm run dev

Open 🌐 http://localhost:5173

📁 Project Structure

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

📡 API Endpoints

Authentication

  • POST /auth/register - Register user
  • POST /auth/login - Login
  • POST /auth/refresh - Refresh token
  • POST /auth/logout - Logout
  • GET /auth/me - Get user info

Rooms & Bookings

  • GET /api/rooms - List user rooms
  • POST /api/rooms - Create room
  • GET /api/rooms/:id - Get room details
  • PUT /api/rooms/:id - Update room
  • DELETE /api/rooms/:id - Delete room
  • GET /api/rooms/:roomId/members - List room members
  • POST /api/rooms/:roomId/members - Add member
  • PUT /api/rooms/:roomId/members/:userId - Update member role
  • DELETE /api/rooms/:roomId/members/:userId - Remove member
  • GET /api/bookings - List user bookings
  • POST /api/rooms/:roomId/bookings - Create booking
  • GET /api/bookings/:id - Get booking details
  • PUT /api/bookings/:id - Update booking
  • DELETE /api/bookings/:id - Cancel booking

🗄️ Database Models

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
}

🎯 Development Scripts

npm run install:all    # Install all dependencies
npm run dev           # Start development servers
npm run build         # Build for production

🚀 Deployment

Backend:

cd backend && npm run build && npm start

Frontend:

cd frontend && npm run build
# Deploy dist/ folder

Built with 💪 by Mykhailo Kurochkin

About

This project is a modern meeting room booking system built with React, Node.js, and TypeScript. It features secure JWT authentication and role-based access control for admins and users to schedule and manage room reservations.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages