Koa-based microframework with modular cube architecture
npm install cano-koaCore framework for Cano - a modular Koa-based microframework with cube plugin architecture.
``bash`
npm install cano-koaor
pnpm add cano-koa
`typescript
import Cano from 'cano-koa';
const cano = new Cano(__dirname);
await cano.up();
`
Create configuration files in the config/ directory:
`typescript
import ControllersCube from 'cano-cube-controllers';
import ServicesCube from 'cano-cube-services';
import RoutersCube from 'cano-cube-routers';
export default [ControllersCube, ServicesCube, RoutersCube];
`
`typescript`
export default {
port: process.env.PORT || 3000,
env: process.env.NODE_ENV || 'development',
};
`typescript
import cors from '@koa/cors';
import bodyParser from 'koa-bodyparser';
export default [cors(), bodyParser()];
`
``
my-app/
├── api/
│ ├── controllers/
│ ├── services/
│ ├── routers/
│ └── models/
├── config/
│ ├── cubes.ts
│ ├── web.ts
│ └── middlewares.ts
└── app.ts
`typescript
class Cano extends Koa {
constructor(rootPath: string);
app: CanoApp;
log: Logger;
up(): Promise
}
`
`typescript`
interface CanoApp {
paths: {
root: string;
config: string;
api: string;
};
config: AppConfig;
controllers?: Record
services?: Record
policies?: Record
models?: Record
routers?: Record
}
The Cano instance is available globally:
`typescript``
// Access from anywhere
const cano = globalThis.cano;
- 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
Apache-2.0