Comsy is a full‑stack web application built to streamline the reporting, tracking, and management of technical issues inside college computer labs. It focuses on role‑based access, real‑time updates, and an offline LAN mode via Electron so labs remain functional without internet.
- Demo & Screenshots
- Features
- Tech Stack
- How It Works
- Project Structure
- Setup & Installation
- Environment Variables
- Run / Development Commands
- API Summary (examples)
- Tests & CI
- Contributing
- License
- Contact
Main Dashboard
Lab Computer List
Registration Requests
Reported Issue View
Booking / Scheduling
Attendance
Registration Details
Create New User
Dark Mode
Login Page
Landing Page
About Page
Tech Stack Overview
Features Snapshot
Team
- 🧾 Issue Reporting: Students can report hardware and software problems with optional screenshots and lab/computer selection.
- 👨🏫 Role-Based Dashboards: Admin, Faculty and Student views with different permissions and actions.
- 🔐 JWT Authentication: Secure login with role-based access tokens and session handling.
- 🌐 Real-Time Updates: Live status updates through WebSockets (or short polling where applicable).
- 💾 MongoDB: Mongoose models persist users, issues, labs, attendance and bookings.
- 🖧 Offline LAN Mode: Electron app to run within local lab network without internet.
- 📊 Admin Control Panel: Filter, assign, and resolve issues; view analytics and logs.
Frontend
- HTML5, CSS3, JavaScript (vanilla) - simple modular UI (or optionally React)
Backend
- Node.js, Express.js
- JWT authentication middleware
Database
- MongoDB with Mongoose ODM
Other
- Electron.js (offline LAN wrapper)
- Git & GitHub, Postman for API testing
- Student logs in and submits an issue choosing lab & computer and optionally attaching a screenshot.
- Faculty / Admin receives the issue in their dashboard, assigns it to a technician or marks it in progress.
- Status moves along:
Pending→In Progress→Resolved(notifications / live updates are pushed to clients). - Data persists in MongoDB; Electron ensures the same flow works over LAN when the internet is unavailable.
COMSY-Computer-Lab-Management-System/
├── README.md
├── LICENSE
├── .gitignore
├── .env.example
├── images/
├── client/
│ ├── package.json
│ └── src/
├── server/
│ ├── package.json
│ └── src/
│ ├── index.js
│ ├── config/db.js
│ ├── models/
│ ├── controllers/
│ └── routes/
├── electron/
├── docs/
└── scripts/
Requirements: Node.js (v16+ recommended), npm or yarn, MongoDB (Atlas or local)
- Clone the repo:
git clone https://github.com/<your-username>/COMSY-Computer-Lab-Management-System.git
cd COMSY-Computer-Lab-Management-System- Server setup
cd server
cp .env.example .env # then edit .env with real values
npm install
npm run dev # starts server (nodemon) on PORT from .env- Client setup (if separated)
cd client
npm install
npm run dev # or open index.html if vanilla frontend- Electron (LAN app)
cd electron
npm install
npm run startCreate a .env file in server/ using the example below:
PORT=5000
MONGO_URI=mongodb+srv://<user>:<pass>@cluster0.mongodb.net/comsy?retryWrites=true&w=majority
JWT_SECRET=your_jwt_secret
CLIENT_URL=http://localhost:3000Important: Never commit your real
.envto the repository. Keep.envin.gitignore.
Top-level package.json (optional) can orchestrate both client and server.
# From server/
npm run dev # development server with nodemon
npm start # production start
# From client/
npm run dev # starts client dev server
# From electron/
npm run start # runs electron app for LAN modeThese are sample endpoints - adapt to your routes.
Auth
POST /api/auth/register # register user
POST /api/auth/login # login -> returns JWT
GET /api/auth/me # get current user (protected)Issues
GET /api/issues # list issues (admin / filters)
POST /api/issues # create issue (student)
GET /api/issues/:id # view a specific issue
PUT /api/issues/:id # update status/assign (protected)Users
GET /api/users # list users (admin)
POST /api/users # create new user (admin)Example: create issue (curl)
curl -X POST http://localhost:5000/api/issues \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"labId":"LAB001","computerId":"PC03","title":"Monitor not working","description":"No display, power light on"}'Add a Postman collection to docs/ for easy testing and link it from the README.
Add basic tests and a GitHub Actions workflow in .github/workflows/ci.yml to run lint/tests on push/PRs. See scripts/ for seeds like createSuperAdmin.js.
Contributions are welcome - please follow these steps:
- Fork the repo
- Create a feature branch:
git checkout -b feat/your-feature - Commit changes:
git commit -m "feat: add ..." - Push and open a Pull Request
Include meaningful commit messages and keep PRs focused.
This project is licensed under the MIT License - see LICENSE for details.
Om Barabhai - [om.r.barabhai@email.com]
Project Link: [https://github.com/OmBarabhai/COMSY-Computer-Lab-Management-System]














