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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

114 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

📦 Asset Management (Git LFS)

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.

🛡️ 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

📬 RESTful API Documentation

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

Postman Logo
Visit the 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

  •  
  •  
  •