Laravel for TypeScript
A Laravel-inspired framework built in TypeScript. Brings Laravel's elegant syntax and architecture to the Node.js ecosystem.
Familiar syntax, modern stack
If you know Laravel, you already know Orchestr.
import { Injectable, Controller } from '@orchestr-sh/orchestr';
@Injectable()
export class UserController extends Controller {
constructor(private userService: UserService) {
super();
}
async index(req: Request, res: Response) {
const users = await this.userService.getAll();
return res.json({ users });
}
}Everything you love about Laravel
Built from the ground up with TypeScript, bringing type safety to Laravel's elegant architecture.
Service Container
Full IoC container with automatic dependency injection using TypeScript reflection.
Routing
Laravel-style routing with parameter binding, middleware, and file-based route loading.
Query Builder & ORM
Fluent query builder and Ensemble ORM with relationships, soft deletes, and attribute casting.
Service Providers
Bootstrap and organize your application services with Laravel's provider pattern.
Type Safety
Full TypeScript support with IntelliSense, autocomplete, and compile-time type checking.
Facades
Static proxy access to services with Route, DB, and custom facades.
Get started in seconds
Install and start building with familiar Laravel syntax.
Install
npm install @orchestr-sh/orchestr reflect-metadataCreate your app
import 'reflect-metadata';
import { Application, Kernel, Route } from '@orchestr-sh/orchestr';
const app = new Application(__dirname);
const kernel = new Kernel(app);
Route.get('/', async (req, res) => {
return res.json({ message: 'Hello from Orchestr!' });
});
kernel.listen(3000);Start building
Controllers
MVC architecture with dependency injection
Database
Query builder and ORM with relationships
Middleware
Global and route-level middleware pipeline
Providers
Service providers for organization
Laravel developers feel right at home
Familiar syntax, same patterns, enhanced with TypeScript.
Laravel (PHP)
Route::get('/users', [UserController::class, 'index']);
class UserController extends Controller {
public function index() {
$users = User::where('active', true)->get();
return response()->json(['users' => $users]);
}
}Orchestr (TypeScript)Recommended
Route.get('/users', [UserController, 'index']);
class UserController extends Controller {
async index() {
const users = await User.where('active', true).get();
return res.json({ users });
}
}Start building with Orchestr
Experience Laravel's elegance with TypeScript's power.