express-ts-feature-based
v2.0.1
Published
A scalable Express.js project with TypeScript featuring CRUD with pagination, filtering, sorting, file uploads, soft delete, RBAC, JWT authentication, access and audit logs, and cron jobs for scheduled tasks.
Downloads
6
Readme
ExpressJS Starter Template For RBAC Systems
A scalable Express.js project with TypeScript featuring CRUD with pagination, filtering, sorting, file uploads, soft delete, RBAC, JWT authentication, access and audit logs, and cron jobs for scheduled tasks.

Features
- Role-Based Access Control (RBAC) – Fine-grained access control for different user roles and permissions.
- CRUD Operations – Create, Read, Update, Delete endpoints out of the box.
- Pagination, Filtering, Sorting, Searching – Easily manage large datasets with built-in pagination, query-based filtering, and sorting mechanisms.
- File Upload – Upload and manage files using multer.
- Soft Delete – Soft-delete support using timestamps instead of permanently removing data.
- Multi Delete & Multi Create – Perform bulk operations with ease.
- Authentication & Login – Token-based login system using JWT.
- Access Logs – Track all incoming requests for monitoring and debugging.
- Audit Logs – Record data changes with before/after snapshots for critical actions.
- Cron Jobs – Scheduled background tasks using node-cron.
- Job Queue – Queued background tasks using Redis & BullMQ.
🧱 Tech Stack
- Express.js – Web framework
- TypeScript – Static type-checking
- MySQL – Database
- Knex – Query Builder
- JWT – Authentication
- Multer – File uploads
- Node-Cron – Scheduled jobs
- Redis & BullMQ – Job Queue
- Morgan – Logging
- Docker - Containerization
- ESLint, Prettier - Controlling code quality
- Husky - Git hook
📦 Use Case Ideas
- Admin dashboards
- Internal tools
- APIs for web/mobile apps
- SaaS backends
🚀 Quick Start
Prerequisites
- Docker - Download Docker 🐳
- Docker Compose - Usually comes with Docker Desktop
Clone the repository
git clone https://github.com/MinPyaeKyaw/rbac-expressjs-starter.git
cd rbac-expressjs-starterStart the Application with Docker
- Build and start all services (MySQL, Redis, and the Express app):
docker compose up --buildThis will:
- Start a MySQL 8.0 database with the
rbac_expressschema automatically loaded - Start a Redis server for job queues
- Build and start the Express.js application
- Wait for MySQL to be ready before starting the app
Access the application:
- API Server: http://localhost:3000
- MySQL Database: localhost:3306
- Redis: localhost:6379
Default database credentials:
- Host:
localhost - Port:
3306 - User:
root - Password:
your db password - Database:
rbac_express
- Host:
Log in with these credentials:
- Username:
sai min - Password:
saimin
- Username:
Development Mode (Optional)
If you prefer to run without Docker for development:
- Install dependencies:
npm installSet up environment variables:
- Copy
.env.exampleto.env(if available) - Configure your local MySQL and Redis connections
- Copy
Start the development server:
npm run dev📄 API Documentation
- Postman Collection: Available in
src/docs/rbac_express.postman_collection.json - Technical Documentation: Read here
- Database Schema: Check
src/docs/rbac_express.sql
- Run these commands
cd rbac-expressjs-starter
npm install
npm run devLog in with this credential
- username - sai min
- password - saimin
📄 Postman collection can be found in
src/docsfolder. Get [here](src/docs/rbac_express.postman_collection.📝 Read detailed technical documentation here
👨💻 Author
Sai Min Pyae Kyaw
💼 Passionate Full Stack Developer | Node.js | TypeScript | React | MySQL
📍 Based in Myanmar
🌐 Connect with me
Made with ❤️ by Sai Min Pyae Kyaw
