ToolStabil
Code Generator
Generiert automatisch CRUD-Module, REST-APIs, Auth-Setup und TypeScript-Clients aus Schemas.
Generator-Typen
CRUD
Create, Read, Update, Delete
REST API
Vollständige Endpoints
Auth
JWT, OAuth2, Sessions
TS Client
TypeScript SDK
Admin Panel
CRUD-UI generieren
Migration
DB-Migrationen
CRUD generieren
# CRUD-Modul aus Schema generieren
velin generate crud --model User --output src/api/users
# Mit allen Optionen
velin generate crud --model Product \
--output src/api/products \
--with-validation \
--with-pagination \
--with-soft-deleteGeneriertes Beispielvelin
// src/api/users/crud.velin (generiert)
use db
@GET("/users")
pub fn list(query: PaginationQuery): Result<List<User>> {
return db.users.findMany({
skip: query.offset,
take: query.limit,
orderBy: { createdAt: "desc" }
});
}
@GET("/users/:id")
pub fn getById(id: string): Result<User> {
return db.users.findUnique({ where: { id } });
}
@POST("/users")
pub fn create(data: CreateUserDto): Result<User> {
return db.users.create({ data });
}
@PUT("/users/:id")
pub fn update(id: string, data: UpdateUserDto): Result<User> {
return db.users.update({ where: { id }, data });
}
@DELETE("/users/:id")
pub fn delete(id: string): Result<void> {
return db.users.delete({ where: { id } });
}TypeScript Client
# TypeScript SDK aus API generieren
velin generate ts-client --api src/api --output ./sdksdk/client.ts (generiert)typescript
export class ApiClient {
constructor(private baseUrl: string) {}
users = {
list: (query?: PaginationQuery) =>
this.get<User[]>('/users', query),
getById: (id: string) =>
this.get<User>(`/users/${id}`),
create: (data: CreateUserDto) =>
this.post<User>('/users', data),
update: (id: string, data: UpdateUserDto) =>
this.put<User>(`/users/${id}`, data),
delete: (id: string) =>
this.delete(`/users/${id}`),
};
}