Skip to content

About

A full-stack EdTech application created to manage educational workshops with JWT-based auth + RBAC, along with password hashing using bcrypt. Containerised using Docker.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

219 Commits

Folders and files

Repository files navigation

WorkshopHub

Node.js Express.js MongoDB Mongoose Docker JWT Bcrypt Postman React.js Tailwind CSS Vite

This project is a full-stack EdTech web application built with Node.js, Express.js, MongoDB, and React.js. It is designed to manage educational workshops.
The system handles workshop creation, registrations, attendance tracking, feedback collection, material distribution, and certificate generation while strictly enforcing role-based access control (RBAC).
It aims to streamline the entire workshop lifecycle for admins, instructors, and participants.

Important

Project Status: Complete
WorkshopHub is a completed personal learning and portfolio project developed independently by me.
While the core features have been fully implemented, the project might still receive occasional refinements and bug fixes in the future by me. Feedback and discussions are always welcome, but the repository is not intended for external contributions.

dashboard_preview_dark

Toggle light-theme admin dashboard preview

dashboard_preview_light

Note

These screenshots display placeholder data (names of legendary programmers as instructors and workshop names related to their projects/expertise) used for testing during development.


Tech Stack

  • Backend: Node.js, Express.js
  • Database: MongoDB
  • ODM: Mongoose
  • Authentication: JWT-based authentication
  • Password Hashing: Bcrypt (for secure password storage)
  • Containerisation: Docker, Docker Compose
  • Testing/Debugging Tools: Postman, Browser DevTools
  • Frontend: React, Tailwind CSS, Vite
  • Web Server: Nginx (serving the optimised frontend build)
  • Certificate PDF Generation: pdfkit
  • Toast Notifications: react-hot-toast
  • Icons: lucide-react

Docker Setup & Architecture

I containerised the entire application using Docker and Docker Compose to make local execution reproducible and to avoid configuration differences across systems.

graph TD
    subgraph Host Machine / Docker Network
        db[Database: MongoDB 7.0]
        backend[Backend: Express.js API]
        frontend[Frontend Web Server: Nginx]
    end

    user((Browser)) -->|Access App Port 3000| frontend
    user -->|Access API Port 8000| backend
    backend -->|Persists Data| db
Loading
  • Multi-Stage Build: Configured a multi-stage Dockerfile for the frontend to compile React with Node.js and serve the static files using Nginx. This keeps the production image extremely small (under 30MB).
  • Network Isolation: The database, backend, and frontend run in their own containers within a private bridge network.
  • Data Persistence: Used a named volume (mongo_data) so that data persists even when the containers are stopped or rebuilt.

Running the Application Locally (Docker)

Make sure you have Docker and Docker Compose installed on your system.

1. Start the Application

Spin up all services in the background:

docker compose up --build -d
  • Frontend: http://localhost:3000
  • Backend API: http://localhost:8000/api

2. Seed the Database (Optional; For a Quick Demo / Exploring the App)

Populate the database with sample data by running the seeder inside the backend container:

docker compose exec backend node scripts/seed.js

3. Log In or Register

  • Test Account: Log in using the pre-seeded test credentials:
    • Email: [EMAIL_ADDRESS]
    • Password: password123
  • New Users: You can register a new account directly from the registration page in the browser to experience the participant registration, attendance tracking, and certificate workflows from scratch.

4. Stop the Containers

Shut down and clean up running containers:

docker compose down

Key Features

  • Role-Based Access Control (RBAC) and JWT authentication
  • Workshop creation and management
  • Seamless participant registration and cancellation
  • Attendance tracking with instructor-level restrictions
  • Workshop material distribution
  • Feedback and rating system
  • PDF certificate generation for participants
  • Clean and responsive user interface
  • Robust RESTful API architecture

System Design

System Architecture

System Architecture Diagram

UML Use Case Diagram

UML Use Case Diagram

Entity Relationship (ER) Diagram

ER Diagram


Author

© 2025-2026 Saptaparno Chakraborty.
All rights reserved.


About

A full-stack EdTech application created to manage educational workshops with JWT-based auth + RBAC, along with password hashing using bcrypt. Containerised using Docker.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages