Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sangtran-127/kompact
https://github.com/sangtran-127/kompact
backend decorators express metadata nodejs typescript
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/sangtran-127/kompact
- Owner: SangTran-127
- Created: 2024-06-09T10:58:33.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-11-06T10:25:18.000Z (2 months ago)
- Last Synced: 2024-11-06T11:31:02.561Z (2 months ago)
- Topics: backend, decorators, express, metadata, nodejs, typescript
- Language: TypeScript
- Homepage:
- Size: 1.95 MB
- Stars: 10
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Kompact
Kompact is a TypeScript backend library for Express that leverages metadata programming using decorators. Inspired by NestJS, it provides a clean and declarative way to define routes, middleware, and request handlers, without using an Inversion of Control (IoC) container.
## Features
- **Decorators for Routes**: Define your Express routes using decorators.
- **Middleware Support**: Easily attach middleware to your routes.
- **Request Handlers**: Simplify the process of handling requests and responses.
- **Metadata Programming**: Utilize metadata to manage route configurations and middleware.## Installation
You can install Kompact via cli:
```bash
npm install -g kompact-cli
kompact create
```## Usage
Here's an example of how to create a simple Express server using Kompact.
1. Setting Up Your Project
First, ensure your tsconfig.json has the following settings enabled:
```json
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"target": "ES6",
"module": "commonjs",
"strict": true,
"esModuleInterop": true
}
}
```2. Example
Controller```ts
import {
Auth,
Controller,
CurrentUser,
Get,
Post,
Request,
Response,
} from "kompact";@Controller("cat")
export class CatController {
@Get()
getCat(req: Request, res: Response) {
res.send("hello, I sent you a cat");
}@Auth
@Post()
addCat(req: Request, res: Response, @CurrentUser user: any) {
console.log(user);
}
}
```In app.ts
```ts
import { KompactApp } from "kompact";
import { CatController } from "@controllers/cat.controller";const app = new KompactApp({
controllers: [CatController],
authenticator: (req, res, next) => {
// const accessToken = req.headers["authorization"];
// if (!accessToken) res.status(401);
req.user = {
name: "Sang tran",
};
return next();
},
});app.start(3001, () => {
console.log(`running at ${3001}`);
});
```Sorry 😢😢😢😢 I will update the docs later 🙏🙏🙏🙏
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
This project is licensed under the MIT License.
This `README.md` provides a clear overview of Kompact, including installation instructions, usage examples, and information on how to set up and run the project.