QueueKiller is a full-stack scheduling and queue management application. It consists of a React TypeScript frontend and a Node.js/Express backend, designed to help companies and users manage schedules and appointments efficiently.
QueueKiller/
├── client/ # Frontend (React + TypeScript + Vite)
│ ├── public/ # Static assets
│ ├── src/ # Source code
│ │ ├── assets/ # Images and static assets
│ │ ├── components/ # Reusable UI components
│ │ │ ├── company/
│ │ │ ├── Dashboard/
│ │ │ └── Landing/
│ │ ├── pages/ # Main pages (BookSchedule, Scheduler)
│ │ └── redux/ # Redux store setup
│ ├── package.json # Frontend dependencies
│ └── vite.config.ts # Vite configuration
├── server/ # Backend (Node.js + Express)
│ ├── controllers/ # Route controllers (schedule logic)
│ ├── middlewares/ # Express middlewares
│ ├── models/ # Mongoose models (schedule)
│ ├── routes/ # API route definitions
│ ├── services/ # Business logic
│ ├── utils/ # Utility functions (e.g., db.js)
│ ├── app.js # Express app entry point
│ └── package.json # Backend dependencies
└── README.md # Project documentation
- Company and user scheduling
- Book and edit schedules
- Dashboard and landing pages
- Redux for state management (frontend)
- RESTful API for schedule management (backend)
- MongoDB integration (via Mongoose)
- Node.js (v16+ recommended)
- npm or yarn
- MongoDB (local or cloud)
git clone https://github.com/Durgeshwar-AI/QueueKiller.git
cd QueueKiller- Frontend:
cd client npm install
- Backend:
cd ../server npm install
- Set up your MongoDB connection string in
server/utils/db.jsor use environment variables as needed.
- Start the backend:
cd server npm start
- Start the frontend (in a new terminal):
cd client npm run dev
- client/src/components/company/: Components for company schedule management (create/edit)
- client/src/pages/: Main pages for booking and scheduling
- server/controllers/: Handles API logic for schedules
- server/models/: Mongoose models for MongoDB
- server/routes/: Express route definitions
A Node.js/Express server for managing schedules, built with TypeScript, ESM modules, Mongoose, and tested with Jest.
- TypeScript-first codebase
- ESM module support (
"type": "module") - Express REST API for schedule management
- MongoDB/Mongoose models
- Jest + ts-jest for unit testing
- Node.js v18+ (for stable ESM support)
- npm
- MongoDB
cd server
npm install- Copy
.env.exampleto.envand fill in your MongoDB URI and other secrets.
| Command | Description |
|---|---|
npm run dev |
Start server in development mode (nodemon) |
npm run build |
Compile TypeScript to dist/ |
npm start |
Run compiled server from dist/ |
npm test |
Run Jest unit tests |
npm run lint |
Run ESLint |
npm run devnpm run build
npm start- Tests are written in TypeScript and use Jest with ESM and ts-jest.
- Test files are named
*.test.tsand live in thesrc/testsortestsdirectory.
npm test- The project uses
"type": "module"inpackage.json. - Jest config is in
jest.config.mjsand uses thets-jest/presets/default-esmpreset. - Mocks in tests must use
jest.unstable_mockModuleand dynamicimport().
server/
src/
controllers/
models/
services/
tests/
...
dist/
package.json
tsconfig.json
jest.config.mjs
-
ECMAScript imports and exports cannot be written in a CommonJS file
→ Ensure"type": "module"is set inpackage.jsonandtsconfig.jsonuses"module": "NodeNext"or"module": "ESNext". -
Jest cannot find module with .js extension
→ Use.jsin import paths in your TypeScript source, and match those in your test mocks. -
ts-jest hybrid module warnings
→ Set"isolatedModules": truein yourtsconfig.json.
MIT