Lince is a modern TypeScript-based backend framework built on top of Node.js, inspired by the best features of NestJS and Spring Boot. Designed specifically for microservices and distributed systems, it aims to provide a scalable, efficient, and developer-friendly foundation for building cloud-native applications.
- Automatic Controller Conversion 🔄 - Convert any class into a controller by simply adding decorators, with built-in JSON to class instance conversion using
class-validator
-
- Comprehensive HTTP Method Support 🌐 - Support for GET, POST, PUT, PATCH, DELETE, and dynamic handling of parameters and queries
- First-Class ORM Support 🗂️ - Built-in, opinionated ORM for TypeScript - Lince BeeORM
- Observability & Logging Built-in 👀 - Own logging and tracing
- RPC Module with Reactive Features 📡 - Robust RPC module with integrated reactive features for seamless communication
- Discovery Service for Microservices 🔍 - Advanced service discovery mechanism for microservices architecture
- Node.js (v16.x or higher)
- TypeScript (v4.x or higher)
# NPM
npm i lince
# Yarn
yarn add lince
# PNPM
pnpm add lince
// app.ts
import { Aplication } from "./src/bootstrap/Application";
import { createContext } from "./src/bootstrap/AppContext";
import { Route, Get, Post, Put, Patch, Delete, Update } from "./src/common/decorators/RestDecorators";
import { Body, Param, Query } from "./src/common/decorators/ParamDecoratos";
import "reflect-metadata";
//if you want class conversion
import { IsInt, IsString } from "class-validator";
class User {
@IsInt()
id: number
@IsString()
name: string
};
@Route("/test")
class controlador {
@Get("/name")
getName(@Param("tunombre") name: string, @Query("edad") edad: number) {
return "Hola "+name+" Edad "+edad;
}
@Get("/testing")
getTest(@Param("name") name: string, @Query("Edad") edad: number) {
return `name ${name} edad ${edad}`;
}
@Post("/prueba")
getPrueba(@Param("nombre") name: string, @Query("edad") edad: number, @Body("datos", User) data: User) {
console.log(data);
return "Hola muy buenas "+name+" edad "+edad;
}
@Post("/name2")
getNamePost(@Param("tunombre") name: string, @Query("edad") edad: number, @Body("data", User) data: User) {
console.log(data.name)
return "Hola "+name+" Edad "+edad;
}
};
Comprehensive documentation is coming soon. Stay tuned!
# Clone the repository
git clone https://github.com/CoderAnchel/Beehive.TS.git
cd Beehive.TS
# Install dependencies
npm install
# Run in development mode
npm run dev
# Run tests (when available)
npm test
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by NestJS and Spring Boot
- Built with ❤️ by Anchel Ascaso Castro
LinceTS is currently in early development (v0.0.1). APIs might change as we progress toward a stable release.