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-delete
Generiertes 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 ./sdk
sdk/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}`),
  };
}