Skip to content

Exzly is an enterprise-grade starter kit for Express.js Monolithic Applications, designed to help teams build scalable, maintainable monolithic apps — fast and smart.

License

Notifications You must be signed in to change notification settings

agoenks29D/exzly

Repository files navigation

Exzly Logo

Exzly

Enterprise-Grade Starter Kit for Express.js Monolithic Applications

GitHub Release GitHub License GitHub Code Size

CI - Setup, Test & Coverage codecov

📖 Description

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.

📚 Table of Contents

📸 Preview UI Screenshots

Here's a glimpse of what Exzly looks like out of the box:

Home Page and Login Page

Administrator Dashboard and User Management

✨ Features

  • 🧩 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.

🔧 Tech Stack

Exzly is built using modern, battle-tested technologies that prioritize performance, maintainability, and developer experience.

Express.js Logo Express Validator Logo Sequelize Logo Nunjcuks Logo Nodemailer Logo

📂 Project Structure

- 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

🏁 Getting Started

To get started with Exzly, follow the steps below:

  1. Clone this repository:

    git clone https://github.com/agoenks29D/exzly.git
  2. 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.

  3. Run the following command to install the required packages:

    npm install
  4. Configure the database settings in the /database/config.json file according to your environment.

  5. 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.

  6. Now, you're ready to run the app! refer to the 👉 Running the Project section.

Security Settings

Modify the security configurations in the /src/config/security.js file.

🌱 Migration and Seeder

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

🧹 Linter and Formatter

Keep your code clean and consistent by using the following commands:

  • Run linter:

    npm run lint
  • Run formatter:

    npm run format

🚀 Running the Project

Run the project in the desired mode:

  • Production mode:

    npm start
  • Development mode:

    npm run start:dev

🧪 Running Tests

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

📬 API Documentation (Postman)

You can explore and test all available API endpoints using our public Postman documentation:

👉 View Exzly Postman Collection

👤 Default Account

Email Username Password Role
admin@exzly.dev admin admin Administrator
member@exzly.dev member member Member
Generated by Faker Generated by Faker member Member

📄 License

Exzly is distributed under the MIT License.

About

Exzly is an enterprise-grade starter kit for Express.js Monolithic Applications, designed to help teams build scalable, maintainable monolithic apps — fast and smart.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •