raiton
v6.8.3-beta.19
Published
Modular TypeScript Backend Framework with Dependency Injection, Plugins, Controllers, Middleware and Hot Reloading
Maintainers
Readme
Protorians Raiton
Protorians Raiton est un framework backend moderne et performant, conçu pour construire des microservices TypeScript. Optimisé pour Bun, il offre également un support complet pour Node.js et Deno.
Caractéristiques
- Optimisé pour Bun : Utilise
Bun.servenativement pour des performances maximales. - Multi-Runtime : Compatible avec Bun (recommandé), Node.js et les environnements Web.
- Architecture Décorative : Utilise les décorateurs TypeScript pour définir contrôleurs, routes et injections.
- Modulaire : Système de plugins et de middlewares flexible.
- CLI Puissant : Outils intégrés pour le développement, le build et le déploiement.
Installation
bun add raiton reflect-metadata
# ou
npm install raiton reflect-metadataNote : Raiton nécessite
reflect-metadatapour fonctionner avec les décorateurs. Importez-le au début de votre point d'entrée.
Démarrage Rapide
1. Créez un contrôleur (source/controllers/hello.controller.ts)
import { Controllable, Get, Param } from "raiton/framework";
@Controllable('/hello')
export class HelloController {
@Get('/')
index() {
return { message: "Bonjour de Raiton !" };
}
@Get('/:name')
greet(@Param("name") name?: string) {
return { message: `Bonjour, ${name} !` };
}
}2. Configurez votre application (source/main.ts)
import "reflect-metadata";
import { ThreadInterface } from "raiton/types";
import { Application } from "raiton/core";
import { RuntimeType } from "raiton/framework";
export default async (thread: ThreadInterface) => {
const app = new Application({
port: 5711,
prefix: '/api'
});
return await thread.setup({
application: app,
runtime: RuntimeType.Bun
}).run()
}Note : selon la configuration du projet, le bootstrapper est chargé depuis
source/main.tset la racine du projet peut être définie parraiton.config.tsviarootDir.
Utilisation du CLI
Raiton est livré avec une interface en ligne de commande pour faciliter le développement. Il fonctionne sur Bun, Node.js et Deno.
# Bun — exécution TypeScript native
bun raiton dev # mode développement avec HMR
bun raiton build # build du projet
bun raiton start # démarrage en production (sans HMR)
# Node.js (bundle JS préalable : bun run build)
node build/bin/index.mjs dev
node build/bin/index.mjs start
# Deno
deno task dev # mode développement avec HMR (--watch)
deno task build
deno task start # démarrage en production
deno task compile # binaire autonome stable et rapideRuntimes supportés
Raiton détecte automatiquement l'environnement d'exécution et adapte son serveur :
- Bun : Utilisation de
Bun.serve. - Node.js : Adaptateur pour serveurs HTTP Node.
- Deno : Utilisation de
Deno.serve.
Documentation API
Pour l’usage applicatif, voir le guide développeur : docs/user-guide/README.md
Example
import { Controllable, Get, ApiOkResponse, ApiResponse } from 'raiton/framework';
@Controllable('/users')
export class UserController {
@Get()
@ApiOkResponse({
description: 'Returns a list of users',
type: Array,
isArray: true
})
async getUsers() {
return [{ id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Smith' }];
}
@Get('/:id')
@ApiResponse({
status: 200,
description: 'Returns the user if found',
type: Object
})
@ApiResponse({
status: 404,
description: 'User not found'
})
async getUserById() {
// ... implementation
return { id: 1, name: 'John Doe' };
}
}import { Controllable, Get, ApiQuery } from "raiton/framework";
@Controllable("/users")
export class UserController {
@Get()
@ApiQuery("name", { description: "Filter by name", required: false, type:
String })
@ApiQuery("limit", { description: "Max results", required: false, type:
Number })
async getUsers(ctx) {
const { name, limit } = ctx.query;
// …
}
}Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Développé avec ❤️ par Y. Yannick GOBOU
