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
- 📬 API Documentation (Postman)
- 👤 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
.env
file 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.json
file 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.
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 test
Run 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:test
Run test coverage:
npm run test:cov
You can explore and test all available API endpoints using our public Postman documentation:
👉 View 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.