Open source web hosting billing & management system — built with NestJS and PostgreSQL (via Prisma).
WHMJS is a free, open source alternative to WHMCS — built for the modern web.
No PHP. No expensive licenses. No ugly interfaces.
Just a clean, developer-friendly billing and client management system for hosting providers, built with a modern JavaScript stack.
- Billing & Invoicing — automated invoice generation, due date reminders.
- Client Management — admin panel, client portal, reseller support.
- Product & Plan Management — hosting plans, domains, VPS, licenses.
- Domain Management — real-time sync with registrars, async nameserver management, locking, and privacy control.
- Payment Gateways — Stripe, PayPal, crypto, manual payments.
- Server Provisioners — DirectAdmin and cPanel integration with automated account provisioning.
- Async Processing — robust background jobs with BullMQ (Redis) for registrar and server actions.
- Audit Logging — full tracking of administrative and management actions.
- Notifications — email and SMS support.
| Layer | Technology |
|---|---|
| Backend | Node.js, NestJS |
| Async | BullMQ (Redis), EventEmitter |
| Database | PostgreSQL, Prisma |
| Auth | JWT (Passport, @nestjs/jwt) |
| API Docs | Swagger / Scalar |
# Clone the repo
git clone https://github.com/irzix/whmjs-core.git
cd whmjs-core
# Install dependencies
npm install
# Setup environment
cp .env.example .env
# Generate Prisma client & run initial migrations
npm run prepare
# Start development server
npm run start:devwhmjs-core/
├── src/
│ ├── main.ts
│ ├── app.module.ts
│ ├── modules/
│ │ ├── auth/
│ │ ├── users/
│ │ ├── roles/
│ │ ├── organizations/
│ │ ├── products/
│ │ ├── orders/
│ │ ├── invoices/
│ │ ├── payment-gateways/ # Factory -> Provider pattern
│ │ ├── provisioners/ # cPanel, DirectAdmin, etc.
│ │ ├── domains/ # Registrar sync & management
│ │ ├── services/ # Managed hosting services
│ │ ├── audit-logs/ # Management audit trail
│ │ ├── notifications/ # Email/SMS handler
│ │ ├── notification-templates/
│ │ └── settings/
│ └── common/ # Guards, Decorators, DTOs
├── prisma/ # DB Schema & Migrations
└── test/ # Jest E2E & Unit tests
- Interactive Docs: http://localhost:3000/api
- Auth: Bearer JWT
- Engine: @nestjs/swagger + @scalar/nestjs-api-reference
- Auth & ACL
- Billing & Invoices
- Payment Gateways (Stripe)
- Domain Management (Sync & Async Actions)
- Server Provisioners (DirectAdmin/cPanel)
- Audit Logs
- Multi-currency
Set these in your .env:
DATABASE_URL— Postgres connection stringREDIS_HOST_URL— Redis connection string (e.g.redis://localhost:6379)PORT— server port (default: 3000)JWT_SECRET— secret for JWT tokensEMAIL_HOST,EMAIL_PORT,EMAIL_USER,EMAIL_PASSWORD,EMAIL_FROM— SMTP settings
WHMJS is built by the community, for the community. All contributions are welcome.
- Fork the repository
- Create a new branch —
git checkout -b feature/your-feature - Make your changes & write tests
- Open a Pull Request
MIT — free to use, modify, and distribute.