novex-kit is a monorepo template for building full-stack JavaScript applications, micro-services and frontends with NodeJS (version 24 or Higher). VueJS and ExpressJS are highlighted but end-user is free to implement their own JS/TS stack.
The folder contents are as follows:
apps: userland backend and frontend application workspacesscripts: deployment, service mocks and documentation scriptscommon: shared JavaScript used byapps/scriptsdocs: for documentation
IMPORTANT! The apps folder is for userland content. E.g workspace codes, documents, scripts, schemas, etc. End-users please work within the apps folder.
Other files and folders are managed by template maintainers.
- Sample API backend apps/sample-api
- Mininal Vue frontend apps/sample-vue-minimal
- Sample Vue frontend apps/sample-vue-full
- Shared codes
common/*ESM modules for Node, browser, Vue, and isomorphic code- sample implementations for SAML, OIDC, OAuth, OTP, FIDO2, and push notifications, zod, OpenAPI, etc.
- Database schemas, migrations, and seeds db and Mock serivcesscripts/service-mocks
- API backend — or use the app creation CLI below
- Vue frontend
- Publish common/** workspaces to npm. for template maintainers ONLY
Novex Kit provides reference template apps that can be used to quickly create new backend applications and services.
Instead of manually copying an existing application, use the app creation CLI.
The following templates are currently available:
| Template | Description |
|---|---|
vision-rest-app |
REST API application |
vision-queue-consumer |
Queue consumer application |
Reference template apps live under apps/ — apps/sample-rest-app and apps/sample-queue-consumer — alongside every other app (see Available Templates above).
Run the following command from the repository root:
npm run create:appThe CLI will display the available templates:
🚀 Create new app
Available templates:
1. vision-rest-app
2. vision-queue-consumer
Choose template [1-2]:
Select the template you want to use, then provide the name of the new application:
Choose template [1-2]: 1
App name: my-new-service
The CLI will copy the selected template into the apps directory:
apps/
└── my-new-service/
The package.json inside the new application will also be updated with the application name.
Example output:
📦 Using template: vision-rest-app
📁 Creating: apps/my-new-service
✔ Template copied
✔ package.json updated
✨ Done!
Created:
apps/my-new-service
Application names must:
- use lowercase letters
- use numbers when needed
- use hyphens (
-) to separate words - start with a letter or number
Valid examples:
payment-service
user-api
notification-worker
order-service-v2
Invalid examples:
PaymentService
payment_service
payment service
Reference template apps are maintained under apps/, alongside every other app.
For example:
apps/
├── sample-rest-app/
└── sample-queue-consumer/
To add a new template:
- Create a new app directory under
apps/. - Add the application starter code.
- Add or update its
package.json. - Register the template in
create-app.js.
For example:
const templates = {
"vision-rest-app": "sample-rest-app",
"vision-queue-consumer": "sample-queue-consumer",
"my-new-template": "my-new-template-sample",
};After registering the template, it will automatically become available when running:
npm run create:appImportant: the generated application is created under apps/ and is considered userland content. Template maintainers should keep reusable starter code in its own dedicated app under apps/ (e.g. sample-rest-app) rather than modifying a generated application to serve as a future template.
-
Contributors: read .github/CONTRIBUTING.md and .github/SECURITY.md before opening issues or pull requests. End Users: BEFORE making ANY changes. Read the following:
-
SETUP
-
READ
- Merge strategy
- Engineering standards format, lint, commit message, language, tooling, etc.
- Workflows
- Housekeeping dependency and GitHub Actions updates — Dependabot plus on-demand Claude Code commands
- Design Features
- OPTIONAL: Roadmap
- OPTIONAL: repo custom properties