Introduction
Taman is an admin-app monorepo template plus a set of published npm packages. You generate a project with pnpm create taman my-app, then own every file in that tree. Only @vinicunca/* packages keep receiving updates via pnpm update.
It is for teams that want a Vue 3 SPA, a Cloudflare-ready API, contract-first RPC, auth with organizations, and Postgres — without starting from a blank repo.
What you get
Vue admin SPA
Nitro API on Workers
Standalone Nitro v3 beta built as cloudflare-module. Durable Object publisher, email queues, and a send_email binding.
Auth and orgs
better-auth 1.7 with the admin and organization/teams plugins, Google OAuth, and email verification.
Postgres + Drizzle
Postgres 18 via Docker Compose (host port 5437, database taman_db) and Drizzle ORM.
Stack
| Layer | Choice |
|---|---|
| Web | Vue 3.5 SPA, Vite 8, vue-router 5, Pinia 4 (persistedstate + secure-ls), vue-i18n 11, TanStack Vue Query + Vue Form, Zod 4, AG Grid |
| UI | pohon-ui, akar, UnoCSS with @vinicunca/unocss-preset |
| API | Nitro v3 beta, Cloudflare Workers (cloudflare-module) |
| RPC | Contract-first oRPC 1.15 |
| Auth | better-auth 1.7 (admin + organization/teams, Google OAuth, email verification) |
| Data | Postgres 18, drizzle-orm 0.45, drizzle-kit 0.31 |
| Maizzle templates, Cloudflare Email Routing or console in dev | |
| Tooling | nx, pnpm 12, vitest, Playwright, changesets, commitlint |
Layout of a generated project
apps/web(@<scope>/web) — Vue admin appapps/api(@<scope>/api) — Nitro APIpackages/shell/*— browser packages (access, app-ui, composables, designs, layouts, locales, stores, types, utils)packages/server/*—db-pgandemailspackages/shared/*—api-contract,rbac,constants- Published packages stay on npm:
@vinicunca/taman-core,@vinicunca/taman-ui,@vinicunca/request, plus@vinicunca/{vite-config,tsconfig,node-utils,commitlint-config}
The template repo also contains packages/{taman-core,taman-ui,request,create-taman} and internal/*. Those are removed from generated projects and installed from npm instead.
Published packages
Current versions on npm: 0.1.0 for the Taman packages (0.1.1 for @vinicunca/taman-ui) and 1.0.1 for the tooling packages.
| Package | Role |
|---|---|
create-taman | CLI that scaffolds the monorepo |
@vinicunca/taman-core | Utils, cache, preferences, typings, composables |
@vinicunca/taman-ui | Admin components, forms, dialogs, layout, menu, tabs |
@vinicunca/request | oRPC and REST clients with TanStack Query helpers |
@vinicunca/vite-config | Opinionated Vite config for the web app |
@vinicunca/tsconfig | Shared TypeScript configs |
@vinicunca/node-utils | Node helpers used by tooling |
@vinicunca/commitlint-config | Conventional commits + workspace scopes |
See Packages for API reference.
Who this is for
- You want a shadcn-style starter: generated code is yours to change.
- You are fine with no optional feature flags — the CLI always emits the same stack.
- You will add product features by copying the todo walkthrough (contract → schema → repo/service → RPC → page).
organizationClient. See Authentication.