Aduxt

A CLI scaffolding tool for creating fullstack monorepos with AdonisJS and Nuxt, featuring type-safe API communication via Tuyau and Bun as package manager.
AdonisJSNuxtBunTuyauOpen Source

One Command

npm create aduxt@latest

That's it. You get a production-ready monorepo with AdonisJS 6 (backend), Nuxt 4 (frontend), Tuyau (type-safe API calls), PostgreSQL, Docker, and auth — all wired up and ready to bun run dev.

Why I Built This

I kept setting up the same stack: AdonisJS + Nuxt + Tuyau + Docker. Every time, it was an hour of boilerplate before writing a single line of business logic. Create Aduxt is that hour, packaged into a scaffold.

What You Get

aduxt/
├── api/                  # AdonisJS 6
│   ├── app/auth/         # Auth module (ready to go)
│   ├── database/         # Migrations
│   └── start/routes.ts   # Routes → Tuyau types
│
├── web/                  # Nuxt 4
│   ├── app/pages/        # File-based routing
│   ├── app/plugins/      # Tuyau plugin
│   └── app/composables/  # Vue composables
│
├── Dockerfile            # Multi-stage build
├── compose.yml           # Dev database
└── package.json          # Bun workspaces

The Type-Safety Chain

This is the core selling point. Change a route in AdonisJS → run node ace tuyau:generate → the Nuxt frontend instantly knows about it. Full autocompletion, compile-time errors if you call a route that doesn't exist or pass the wrong types.

// In Nuxt — fully typed, autocompleted
const tuyau = useTuyau()
const { data } = await tuyau.users.$get()

Works With Everything

bunx create-aduxt@latest    # Bun
pnpm create aduxt@latest     # pnpm
yarn create aduxt            # Yarn
npm create aduxt@latest      # npm

I use this for most of my new projects now. Gitify, for example, was bootstrapped entirely with Create Aduxt.