onestack-cli
v0.1.0
Published
OneStack — Next.js + NestJS + Auto-CRUD admin, unified. Scaffold, generate, and deploy full-stack apps with one tool. No ORM, zero config.
Downloads
150
Maintainers
Readme
OneStack
onestack-cli
One framework. Full stack. Zero config. No ORM.
Next.js + NestJS + Auto-CRUD admin — unified into a single developer experience.
English · Azərbaycanca · Türkçe
English
What is OneStack?
OneStack is an opinionated full-stack meta-framework that combines:
- Next.js 15 (App Router) — frontend + admin panel
- NestJS 10 — backend API with auto-discovered resources
- Native DB drivers (
pg/mysql2/better-sqlite3) — no ORM, no schema files - Zod — one schema validates both API and forms
- Auto-CRUD admin — defines a resource once, every screen mounts itself
- JWT + RBAC auth — login, register, refresh, role guards out of the box
- Premium UI — Inter font, gradient brand panel, glassmorphism cards, smooth animations
Quickstart
# 1. Scaffold a new project
npx onestack-cli create my-app
# 2. Start every app
cd my-app
pnpm dev
# 3. Open
# web → http://localhost:3000
# api → http://localhost:4000/api
# admin → http://localhost:3001 ([email protected] / admin1234)Generate a resource
onestack generate resource Product
# Auto-creates: NestJS controller + service, admin CRUD page,
# typed FE method `api.products.list()`, SQL migration, Zod validator.CLI commands
| Command | Purpose |
|---|---|
| onestack create <name> | Scaffold a new monorepo |
| onestack generate resource <Name> | New CRUD resource (backend + admin + FE) |
| onestack generate module <Name> | Plain NestJS module, no CRUD |
| onestack generate page <Name> | Next.js page in apps/web/app/ |
| onestack add db | Re-configure database (sqlite/postgres/mysql) |
| onestack deploy --target docker\|vercel\|railway\|vps | One-shot deploy |
Resource example
Define once:
// apps/api/src/resources/product.resource.ts
import { defineResource, resources, z } from "@onestack/shared";
const Product = defineResource({
name: "Product",
fields: {
title: z.string().min(2),
price: z.coerce.number().nonnegative(),
image: z.string().optional(),
status: z.enum(["draft", "published"]).default("draft"),
},
permissions: { list: "public", create: "admin", update: "admin", delete: "admin" },
});
resources.register(Product);
export default Product;Get for free:
// apps/web/app/products/page.tsx (Server Component)
import { api } from "@/lib/api";
const { data } = await api.products.list({ query: { page: 1, perPage: 24 } });The admin panel auto-mounts a polished CRUD page at /products — no extra code.
Database — no ORM
OneStack uses native drivers and a thin query helper. The schema is derived from your Resource DSL, so there's no schema.prisma or schema.ts to keep in sync.
pnpm --filter @onestack/db migrate # creates tables from *.resource.ts
pnpm --filter @onestack/db seed # creates the admin userSupported: PostgreSQL, MySQL, SQLite.
Requirements
- Node.js ≥ 20
- pnpm 9 (recommended), npm, or yarn
License
MIT
Azərbaycanca
OneStack nədir?
OneStack — full-stack meta-framework olub aşağıdakıları bir vahid təcrübədə birləşdirir:
- Next.js 15 (App Router) — frontend və admin panel
- NestJS 10 — avtomatik kəşf olunan resurslarla backend API
- Native DB sürücüləri (
pg/mysql2/better-sqlite3) — ORM yoxdur, schema faylları yoxdur - Zod — bir sxema həm API-ni, həm form-ları validasiya edir
- Avtomatik admin CRUD — resursu bir dəfə təyin edirsən, hər səhifə özü qoşulur
- JWT + RBAC autentifikasiya — login, qeydiyyat, refresh, rol-guards hazır
- Premium UI — Inter font, gradient brand paneli, glass kartlar, hamar animasiyalar
Sürətli başlangıç
# 1. Yeni layihə qur
npx onestack-cli create my-app
# 2. Bütün app-ları başlat
cd my-app
pnpm dev
# 3. Aç
# web → http://localhost:3000
# api → http://localhost:4000/api
# admin → http://localhost:3001 ([email protected] / admin1234)Resurs yarat
onestack generate resource Product
# Avtomatik yaradır: NestJS controller + service, admin CRUD səhifəsi,
# tip-təhlükəsiz FE metodu `api.products.list()`, SQL migrasiyası, Zod validator.CLI komandaları
| Komanda | Nə edir |
|---|---|
| onestack create <name> | Yeni monorepo qurur |
| onestack generate resource <Name> | Yeni CRUD resursu (backend + admin + FE) |
| onestack generate module <Name> | Sadə NestJS modulu (CRUD-suz) |
| onestack generate page <Name> | Next.js səhifəsi (apps/web/app/-da) |
| onestack add db | Verilənlər bazasını yenidən konfiqurasiya edir |
| onestack deploy --target docker\|vercel\|railway\|vps | Bir komanda ilə deploy |
Resurs nümunəsi
Bir dəfə təyin et:
// apps/api/src/resources/product.resource.ts
import { defineResource, resources, z } from "@onestack/shared";
const Product = defineResource({
name: "Product",
fields: {
title: z.string().min(2),
price: z.coerce.number().nonnegative(),
image: z.string().optional(),
status: z.enum(["draft", "published"]).default("draft"),
},
permissions: { list: "public", create: "admin", update: "admin", delete: "admin" },
});
resources.register(Product);
export default Product;Pulsuz əldə et:
// apps/web/app/products/page.tsx (Server Component)
import { api } from "@/lib/api";
const { data } = await api.products.list({ query: { page: 1, perPage: 24 } });Admin paneli /products-da mükəmməl CRUD səhifəsini avtomatik mount edir — əlavə kod yox.
Verilənlər bazası — ORM yoxdur
OneStack native sürücülər və yüngül query helper istifadə edir. SQL sxemi Resource DSL-dən törədilir — schema.prisma və ya schema.ts saxlamaq lazım deyil.
pnpm --filter @onestack/db migrate # *.resource.ts-dən cədvəlləri yaradır
pnpm --filter @onestack/db seed # admin istifadəçi yaradırDəstəklənir: PostgreSQL, MySQL, SQLite.
Tələblər
- Node.js ≥ 20
- pnpm 9 (tövsiyə olunur), npm və ya yarn
Lisenziya
MIT
Türkçe
OneStack nedir?
OneStack, aşağıdakıları tek bir geliştirici deneyiminde birleştiren bir full-stack meta-framework'tür:
- Next.js 15 (App Router) — frontend ve admin paneli
- NestJS 10 — kaynakları otomatik keşfeden backend API
- Yerel veritabanı sürücüleri (
pg/mysql2/better-sqlite3) — ORM yok, şema dosyası yok - Zod — tek bir şema hem API'yi hem formları doğrular
- Otomatik CRUD admin — bir kez tanımla, her sayfa kendi kendine bağlanır
- JWT + RBAC kimlik doğrulama — giriş, kayıt, refresh, rol-guard'lar hazır
- Premium UI — Inter font, gradient marka paneli, cam efektli kartlar, akıcı animasyonlar
Hızlı başlangıç
# 1. Yeni proje oluştur
npx onestack-cli create my-app
# 2. Tüm uygulamaları başlat
cd my-app
pnpm dev
# 3. Aç
# web → http://localhost:3000
# api → http://localhost:4000/api
# admin → http://localhost:3001 ([email protected] / admin1234)Kaynak oluştur
onestack generate resource Product
# Otomatik oluşturur: NestJS controller + service, admin CRUD sayfası,
# tip-güvenli FE metodu `api.products.list()`, SQL migration, Zod doğrulayıcı.CLI komutları
| Komut | Amacı |
|---|---|
| onestack create <name> | Yeni monorepo iskeletini kurar |
| onestack generate resource <Name> | Yeni CRUD kaynağı (backend + admin + FE) |
| onestack generate module <Name> | Sade NestJS modülü, CRUD'suz |
| onestack generate page <Name> | Next.js sayfası (apps/web/app/ içinde) |
| onestack add db | Veritabanını yeniden yapılandırır |
| onestack deploy --target docker\|vercel\|railway\|vps | Tek komutla deploy |
Kaynak örneği
Bir kez tanımla:
// apps/api/src/resources/product.resource.ts
import { defineResource, resources, z } from "@onestack/shared";
const Product = defineResource({
name: "Product",
fields: {
title: z.string().min(2),
price: z.coerce.number().nonnegative(),
image: z.string().optional(),
status: z.enum(["draft", "published"]).default("draft"),
},
permissions: { list: "public", create: "admin", update: "admin", delete: "admin" },
});
resources.register(Product);
export default Product;Bedava elde et:
// apps/web/app/products/page.tsx (Server Component)
import { api } from "@/lib/api";
const { data } = await api.products.list({ query: { page: 1, perPage: 24 } });Admin paneli /products'ta cilalanmış bir CRUD sayfasını otomatik olarak mount eder — ekstra kod yok.
Veritabanı — ORM yok
OneStack yerel sürücüler ve ince bir sorgu yardımcısı kullanır. SQL şeması Resource DSL'den türetilir — schema.prisma veya schema.ts senkronize tutmaya gerek yok.
pnpm --filter @onestack/db migrate # *.resource.ts'den tabloları oluşturur
pnpm --filter @onestack/db seed # admin kullanıcı oluştururDesteklenen: PostgreSQL, MySQL, SQLite.
Gereksinimler
- Node.js ≥ 20
- pnpm 9 (önerilen), npm veya yarn
Lisans
MIT
Built with ❤️ for developers who ship fast.
