Exzly is an enterprise-grade starter kit for Express.js Monolithic Applications, designed to help teams build scalable, maintainable monolithic apps — fast and smart.
With a robust architecture, built-in features, and production-ready configuration, Exzly accelerates development without compromising quality. It’s ideal for building internal tools, admin panels, business dashboards, or custom backend services.
Whether you're creating a business platform, a complex service, or a company-grade application, Exzly offers a flexible and extensible foundation tailored to enterprise needs.
👉 For more detailed documentation and implementation guidelines, please visit the Exzly Documentation.
- 📖 Description
- 📚 Table of Contents
- 📸 Preview UI Screenshots
- ✨ Features
- 🔧 Tech Stack
- 📂 Project Structure
- 🏁 Getting Started
- 🌱 Migration and Seeder
- 🧹 Linter and Formatter
- 🚀 Running the Project
- 🧪 Running Tests
- 📬 RESTful API Documentation
- 👤 Default Account
- 📄 License
Here's a glimpse of what Exzly looks like out of the box:
Home Page and Login Page
Administrator Dashboard and User Management
-
🧩 Extensible & Scalable
Built to adapt - easily extendable to match a wide range of use cases, from internal tools to enterprise platforms. -
🛡️ Security Best Practices
Pre-configured with security essentials like Helmet and CORS, making your app safer from day one. -
⚙️ Database Migration & Seeding
Manage database versions and development data using built-in migration and seeding scripts. -
🧪 Integrated Testing Environment
Includes out-of-the-box unit and API testing setup using Jest, with support for coverage tracking and CI pipelines. -
📦 Modular Monolithic Architecture
Clean and modular structure within a monolithic design - easy to scale and maintain over time. -
🛠️ Optimized Developer Experience
Equipped with ESLint, Prettier, Husky, and structured commit hooks to ensure a clean and consistent codebase. -
🔄 CI/CD Ready Seamlessly integrates with continuous integration and deployment workflows, enabling faster and more reliable shipping cycles.
-
🚀 Production-Ready Configuration
Pre-configured for production environments, with linting, testing, environment management, and database seeding out of the box. -
📁 Clear & Maintainable Project Structure
A well-organized file structure that’s intuitive and scalable for teams of any size. -
🔐 Built-in Authentication & User Management
Includes a ready-to-use authentication system with user role management - no need to build it from scratch.
Exzly is built using modern, battle-tested technologies that prioritize performance, maintainability, and developer experience.
- View engine: using Nunjucks
- Database ORM: using Sequelize
- Authentication: using jsonwebtoken
- Session: using express-session
- Session store: using session-file-store
- Environment variable: using dotenv
- Editor config: using EditorConfig
- Security headers: using helmet
- CORS: using cors
- Rate limiter: using express-rate-limit
- File validation: using file-type
- Hashing: using crypto-js
- Validation: using express-validator
- Compression: using compression
- Logging: using morgan and winston
- Debugging: using debug
- Email: using Nodemailer
- Testing: using Jest
- Linting & formatting: using ESLint and Prettier
- Git hooks: using husky and lint-staged
- database/ # Database-related files
├─ migrations/ # Sequelize migration files
└─ seeders/ # Sequelize seeder files
- public/ # Static assets (images, CSS, JS for frontend)
- src/ # Main source code
├─ config/ # App configuration (security, module, etc.)
├─ helpers/ # Helper functions and utilities
├─ middlewares/ # Express middleware (auth, error handling, etc.)
├─ models/ # Sequelize models
├─ routes/ # Route definitions
│ ├─ admin/ # Routes for admin panel
│ ├─ api/ # RESTful API routes
│ └─ web/ # Web (frontend) routes
├─ utils/ # Utility modules (e.g., logger, debugger, JWT)
├─ validators/ # Request validation using express-validator
└─ views/ # Nunjucks templates
├─ admin/ # Nunjucks templates for admin views
├─ email/ # Templates for email
└─ web/ # Public site templates
To get started with Exzly, follow the steps below:
-
Clone this repository:
git clone https://github.com/agoenks29D/exzly.git
-
Duplicate the example
.envfile to create your configuration file:cp .env.example .env
For a detailed explanation of environment variables, refer to Environment Setup.
-
Run the following command to install the required packages:
npm install
-
Configure the database settings in the
/database/config.jsonfile according to your environment. -
Before starting the application, you need to set up the database. You can choose between demo data (for development) or production-ready setup. See more options in the Migration and Seeder section.
-
Now, you're ready to run the app! refer to the 👉 Running the Project section.
Exzly uses Git Large File Storage (Git LFS) to manage binary assets such as images, logos, and other static files efficiently. Git LFS replaces large files in the Git repository with lightweight pointer files and stores the actual binaries separately.
Therefore, Git LFS must be installed and initialized before cloning, running, or deploying this project to ensure all assets load correctly.
Modify the security configurations in the /src/config/security.js file.
Handle database migrations and seeders as follows:
-
Run all migrations and seeders for development:
npm run db:demo
-
Run all migrations and seeders for production:
npm run db:start
This command ensures no fake data is generated.
-
Run all migration files:
npx sequelize-cli db:migrate --name all.js
-
Run a specific migration:
npx sequelize-cli db:migrate --name base.js
-
Run specific seeders:
-
Start seeder (used for production, no fake data):
npx sequelize-cli db:seed --seed start
-
Demo seeder (includes fake data for testing purposes):
npx sequelize-cli db:seed --seed demo
-
Keep your code clean and consistent by using the following commands:
-
Run linter:
npm run lint
-
Run formatter:
npm run format
Run the project in the desired mode:
-
Production mode:
npm start
-
Development mode:
npm run start:dev
Exzly comes with an integrated testing environment using Jest. This setup is ready out of the box and supports both unit and API tests.
Run all tests:
npm testRun a specific test suite:
npm test -- <test_suite_name>To prepare the database specifically for the test environment, run the following command:
npm run db:testRun test coverage:
npm run test:covYou can explore and test all available API endpoints using our Postman documentation:

Visit the Exzly Postman Collection
| Username | Password | Role | |
|---|---|---|---|
| admin@exzly.dev | admin | admin | Administrator |
| member@exzly.dev | member | member | Member |
| Generated by Faker | Generated by Faker | member | Member |
Exzly is distributed under the MIT License.









