β‘ A config-first development framework for Node.js, Deno, and Bun. Build applications faster by declaring resources in YAML instead of writing boilerplate code.
- π― Config-First - Define servers, databases, and services in YAML
- π Plugin System - Modular architecture with official and community plugins
- π Multi-Runtime - Works with Node.js, Deno, and Bun
- π Framework Agnostic - Switch between Express, Fastify, or native HTTP
- π Auto-Wiring - Automatic dependency injection via takeover system
- π¦ TypeScript-First - Built with TypeScript, works with JavaScript too
- π οΈ CLI Tools - Project scaffolding, building, and plugin management
# Install CLI globally
npm install -g @ckenx/cli
# Create new project
ckenx create my-app
# Navigate to project
cd my-app
# Start development server
npm run devConfiguration (.config/index.yml):
typescript: true
directory:
base: './src'
pattern: '-'
servers:
- type: http
key: api
plugin: '@ckenx/kenx-express'
PORT: 8000Application (src/index.ts):
export const takeover = ['http:api']
export default async (server) => {
server.app.router('/hello', (req, res) => {
res.json({ message: 'Hello from Kenx!' })
})
await server.listen()
}π Documentation Guide - Complete overview of all documentation
π Online Documentation - Browse online
- Installation & Setup - Get up and running quickly
- Core Concepts - Understand Kenx's philosophy
- Project Structure - Learn about project organization
- Configuration System - YAML configuration reference
- CLI Commands - Command-line interface guide
- Architecture - Internal system design
- Environment Setup - TypeScript, runtimes, and tools
- Services & Resources - HTTP servers, databases, and takeover
- Plugin System - Using and creating plugins
- Available Plugins - Official plugin catalog
- Adapters - Express, Fastify, and framework adapters
- Testing - Unit, integration, and API testing
- Deployment - Docker, CI/CD, and production
- Best Practices - Security, performance, and code quality
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions
Servers:
@ckenx/kenx-express- Express.js integration@ckenx/kenx-fastify- Fastify integration@ckenx/kenx-http- Native HTTP server
Databases:
@ckenx/kenx-mysql- MySQL/MariaDB support@ckenx/kenx-mongodb- MongoDB integration
Real-Time:
@ckenx/kenx-socketio- Socket.io for WebSockets
Build Tools:
@ckenx/kenx-vite- Vite build integration
Check out example projects in the examples/ directory:
- simple-ts - Basic TypeScript application
- simple-js - Basic JavaScript application
- mvc - MVC pattern example
- react-ssr-ts - React SSR with TypeScript
Traditional Setup:
// Lots of boilerplate code
import express from 'express'
import mysql from 'mysql2'
const app = express()
const db = mysql.createPool({ /* config */ })
app.use(express.json())
app.get('/users', async (req, res) => {
// handler
})
app.listen(8000)Kenx Setup:
# Just configuration
servers:
- plugin: '@ckenx/kenx-express'
PORT: 8000
databases:
- plugin: '@ckenx/kenx-mysql'
host: localhost// Clean application code
export const takeover = ['http', 'database']
export default async (server, db) => {
server.app.router('/users', handler)
await server.listen()
}Feedback is always welcome! Please report any issues in our Issue Tracker and we'll address them promptly.
We welcome contributions! This is a monorepo managed with Turborepo and Changesets.
# Clone and install
git clone https://github.com/ckenx/kenx-js
cd kenx-js
yarn install
# Build all packages (with caching)
yarn build
# Run tests
yarn test
# Make changes and create a changeset
yarn changeset| Command | Description |
|---|---|
yarn build |
Build all packages (Turborepo, cached) |
yarn test |
Run all tests in parallel |
yarn lint |
Lint all packages |
yarn changeset |
Create version bump changeset |
yarn dev |
Watch mode for development |
- Fork the repository
- Create your feature branch
- Make your changes
- Create a changeset:
yarn changeset - Submit a pull request
Please review our:
- Contributing Guidelines - Detailed development guide
- Code of Conduct - Community standards
- Project Roadmap - Future plans
- Migration Guide - Turborepo setup details
- GitHub Discussions: Ask questions and share ideas
- Issues: Report bugs or request features
This software is free to use under the MIT license. See the LICENSE file for details.
Made with β€οΈ by the Kenx team