04 Β· Shared-resource scheduling Β· Access control

Smart Meeting Management System with Role-Based Access

Node.js API architecture & access logic Β· 6 weeks

A robust meeting room scheduling system with recurrence, access control, approvals, and conflict prevention.

6 WK

Engagement, API architecture

15

Permission rules, 5 user types Γ— 3 actions

4

Recurrence rhythms, generated not stored

Meeting Room Overview
  • Duration6 Weeks
  • RoleNodeJS API Architecture & Access Logic
  • EnvironmentRole-based Access Control (RBAC)
  • TechnologyNode.js, Sequelize ORM
  • Node.js
  • Sequelize
  • Express
  • PostgreSQL / MySQL
  • date-fns
  • RBAC

This project is a fully featured meeting room booking and scheduling platform designed for complex, real-world use cases where room access, recurring meetings, and approval workflows are essential.

🧠 Core Idea

The platform solves the classic problem of scheduling conflicts, visibility, and approval for organizations that need room-level access control through user groups and permissions.

πŸ’‘ Features

  • Role-based room visibility using RoomGroup + GroupUser relationships
  • One-off and recurring meetings (daily, weekly, monthly, yearly)
  • Access control down to room level β€” who can view, book, cancel
  • Approval workflows: auto-approve for full-access, pending for limited-access
  • Ghost/fake recurring meetings to preview future occurrences
  • Meeting overlap prevention
  • Cancel, update, or modify individual or all recurring meetings
  • Special permissions override normal access rules
  • Support for blocked times (e.g., maintenance)

πŸ› οΈ How It Works

Users are assigned to groups, which in turn are linked to rooms. These group-room bindings dictate visibility and booking rights.

  • GroupUser β†’ assigns users to groups
  • RoomGroup β†’ assigns groups to rooms
  • MeetingRecurrence β†’ controls repeat frequency and scope
  • SpecialPermission β†’ gives users access to individual meetings outside normal permissions

Admins bypass all restrictions. All others require group membership or special permission to view, book, or modify meetings.


πŸ’¬ Example Use Case

Imagine a university with shared conference rooms:

  • Professors can book only in rooms assigned to their department.
  • Admins can view and manage all bookings.
  • Facilities can block rooms during renovations.
  • Recurring faculty meetings are automatically scheduled but remain editable.
  • Students can see available rooms but cannot book them.

All these are supported out-of-the-box.


βœ… Smart Booking

Every booking is checked for:

  • Room-level group access
  • Time conflicts (existing or future repeating events)
  • Blocked periods
  • Meeting status (Approved / Waiting on Approval)
  • Overlap with virtual/ghost meetings
Conflict Detection SystemConflict Detection System

πŸ” Recurrence System

Meetings are not stored in the database indefinitely. Instead, ghost meetings are dynamically generated from recurrence rules to visualize future slots. This reduces storage load and makes UI rendering flexible.

Recurring Meetings SetupRecurring Meetings Setup

πŸ”’ Permission Structure

User TypeViewBookApprove
Adminβœ…βœ…βœ…
Full Access Groupβœ…βœ…βœ…
Read-Only Groupβœ…βŒβŒ
Special Permissionβœ…βŒβŒ
No Group❌❌❌

🧠 Tech Stack

  • Node.js: Core application engine
  • Sequelize ORM: Data modeling and querying
  • PostgreSQL: (or MySQL) database layer
  • Express: Routing and middleware
  • date-fns: Recurrence and date utilities

πŸ“ˆ Result

The system is highly extensible, easy to plug into an existing frontend (e.g., React/Next.js), and ready for real-world scheduling complexity. It removes friction from managing access-sensitive bookings across teams, departments, or organizations.


🀝 Future Add-ons

  • Notification/Reminders
  • OAuth + SSO
  • iCal export
  • GraphQL integration
  • Public booking forms

Want to try the demo? Head to Room-Sync and try it out.

Hi there! Want to support my work?

Sharing
Looking for a reliable software developer?

Let’s Build Something Great

Get in touch to discuss your project β€” whether it’s a web app, custom API, or performance tuning. I’ll help you go from idea to deploy with clean, scalable code.