cano-koa
v2.0.1
Published
Koa-based microframework with modular cube architecture
Maintainers
Readme
cano-koa
Core framework for Cano - a modular Koa-based microframework with cube plugin architecture.
Installation
npm install cano-koa
# or
pnpm add cano-koaUsage
import Cano from 'cano-koa';
const cano = new Cano(__dirname);
await cano.up();Configuration
Create configuration files in the config/ directory:
config/cubes.ts
import ControllersCube from 'cano-cube-controllers';
import ServicesCube from 'cano-cube-services';
import RoutersCube from 'cano-cube-routers';
export default [ControllersCube, ServicesCube, RoutersCube];config/web.ts
export default {
port: process.env.PORT || 3000,
env: process.env.NODE_ENV || 'development',
};config/middlewares.ts
import cors from '@koa/cors';
import bodyParser from 'koa-bodyparser';
export default [cors(), bodyParser()];Project Structure
my-app/
├── api/
│ ├── controllers/
│ ├── services/
│ ├── routers/
│ └── models/
├── config/
│ ├── cubes.ts
│ ├── web.ts
│ └── middlewares.ts
└── app.tsAPI
Cano
class Cano extends Koa {
constructor(rootPath: string);
app: CanoApp;
log: Logger;
up(): Promise<Server>;
}CanoApp
interface CanoApp {
paths: {
root: string;
config: string;
api: string;
};
config: AppConfig;
controllers?: Record<string, unknown>;
services?: Record<string, unknown>;
policies?: Record<string, unknown>;
models?: Record<string, unknown>;
routers?: Record<string, unknown>;
}Global Access
The Cano instance is available globally:
// Access from anywhere
const cano = globalThis.cano;Related Packages
- cano-cube - Base Cube class
- cano-cube-controllers - Controller loader
- cano-cube-services - Service loader
- cano-cube-routers - Router loader
- cano-cube-mongoose - Mongoose integration
License
Apache-2.0
