---
title: "Introduction"
description: "Taman is a full-stack Vue admin template you own after generate — published @vinicunca packages keep receiving updates."
canonical_url: "https://vinicunca.dev/taman/getting-started"
---
# Introduction

> Taman is a full-stack Vue admin template you own after generate — published @vinicunca packages keep receiving updates.

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**

Vite 8, vue-router 5, Pinia 4, vue-i18n 11, TanStack Vue Query and Vue Form, Zod 4, AG Grid. UI is [Pohon](https://vinicunca.dev/pohon/getting-started) + [Akar](https://vinicunca.dev/akar/overview) + [UnoCSS](https://vinicunca.dev/unocss-preset/getting-started).

**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 |
| Email | 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 app
- `apps/api` (`@<scope>/api`) — Nitro API
- `packages/shell/*` — browser packages (access, app-ui, composables, designs, layouts, locales, stores, types, utils)
- `packages/server/*` — `db-pg` and `emails`
- `packages/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](https://vinicunca.dev/taman/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).

> [!NOTE]
> 
> The generated web app has a login page and the todo reference feature. There are **no** profile, onboarding, or organization-management views yet. The API already runs better-auth's organization plugin; the client does not install `organizationClient`. See [Authentication](https://vinicunca.dev/taman/guides/authentication-and-organizations).


## Sitemap

See the full [sitemap](https://vinicunca.dev/sitemap.md) for all pages.
