App templates
Deku ships a local starter catalog in the repository under templates/.
These starters are local source directories shaped for Deku’s own deploy model:
- They use Deku-supported
dockerfileorrailpackbuilders - They expect Deku-managed services instead of bundled sidecars
- They stay small enough to inspect, copy, and modify directly
- They use Bun where it fits naturally without making the deploy path harder to reason about
If you already cloned the repository, copy the directory you want from templates/<name>. If you are browsing the public docs, use the GitHub links below.
Quick Picks
Section titled “Quick Picks”- Use
templates/node-expresswhen you want the smallest API starter. - Use
templates/honowhen you want the smallest Bun-native API starter. - Use
templates/nextjsortemplates/nuxtwhen you want an SSR-capable JavaScript app. - Use
templates/astrowhen you want a static site served from a container. - Use
templates/vite-reactwhen you want a Bun-built frontend SPA. - Use
templates/django,templates/laravel, ortemplates/fastapiwhen you want a framework starter that can grow into a database-backed app.
Dockerfile Starters
Section titled “Dockerfile Starters”Next.js
Section titled “Next.js”Plain App Router starter with standalone output.
- Repo directory: templates/nextjs
- Builder:
dockerfile - Package manager:
npm - Best for: Full-stack React apps and SSR routes
- Health check:
/health - Pair with: Managed services through framework-standard env vars
deku deploy run nextjs-demo --path /absolute/path/to/repo/templates/nextjsLaravel
Section titled “Laravel”Laravel starter with a lightweight local overlay and a Docker build that creates a fresh framework skeleton.
- Repo directory: templates/laravel
- Builder:
dockerfile - Package manager:
composerat build time - Best for: PHP web apps and dashboard-style applications
- Health check:
/health - Pair with:
deku postgres,deku mysql, ordeku redis
deku deploy run laravel-demo --path /absolute/path/to/repo/templates/laravelStatic Astro site served from a production container.
- Repo directory: templates/astro
- Builder:
dockerfile - Package manager:
bun - Best for: Docs, marketing sites, and content-heavy frontends
- Health check:
/health/ - Pair with: No backing service by default
deku deploy run astro-demo --path /absolute/path/to/repo/templates/astroNode Express
Section titled “Node Express”Minimal JSON API starter with a small production image and /health route.
- Repo directory: templates/node-express
- Builder:
dockerfile - Package manager:
npm - Best for: APIs, webhooks, and service backends
- Health check:
/health - Pair with:
deku postgresordeku redis
deku deploy run express-demo --path /absolute/path/to/repo/templates/node-expressFastAPI
Section titled “FastAPI”Minimal FastAPI app with environment-driven configuration and a production container.
- Repo directory: templates/fastapi
- Builder:
dockerfile - Package manager:
pip - Best for: Python APIs and service backends
- Health check:
/health - Pair with:
deku postgres
deku deploy run fastapi-demo --path /absolute/path/to/repo/templates/fastapiSmall Bun-native API starter with a minimal Hono server and health route.
- Repo directory: templates/hono
- Builder:
dockerfile - Package manager:
bun - Best for: Lightweight APIs and webhook services
- Health check:
/health - Pair with:
deku postgresordeku redis
deku deploy run hono-demo --path /absolute/path/to/repo/templates/honoVite React
Section titled “Vite React”React single-page app built with Vite and Bun, then served from Nginx.
- Repo directory: templates/vite-react
- Builder:
dockerfile - Package manager:
bun - Best for: Frontend-only apps and dashboards backed by another API
- Health check:
/health - Pair with: Another Deku app or external API
deku deploy run vite-demo --path /absolute/path/to/repo/templates/vite-reactRailpack Starters
Section titled “Railpack Starters”Django
Section titled “Django”Django starter that defaults to SQLite for the first deploy and can switch to a managed database later.
- Repo directory: templates/django
- Builder:
railpack - Package manager:
pip - Best for: Traditional server-rendered apps and admin-heavy backends
- Health check:
/health - Pair with:
deku postgreswhen you outgrow SQLite
deku deploy run django-demo --path /absolute/path/to/repo/templates/djangoClean SSR-capable Nuxt starter with an explicit production start command.
- Repo directory: templates/nuxt
- Builder:
railpack - Package manager:
bun - Best for: Vue SSR apps and content-rich product applications
- Health check:
/api/health - Pair with: Managed services through runtime config and env vars
deku deploy run nuxt-demo --path /absolute/path/to/repo/templates/nuxtManaged Service Pairings
Section titled “Managed Service Pairings”- Django: Default SQLite; pair with
deku postgreswhen you want a managed relational database - Laravel: Pair with
deku postgres,deku mysql, ordeku redisas the app grows - FastAPI: Pair with
deku postgreswhen you need persistent data - Hono: Pair with
deku postgresordeku rediswhen you need persistence - Node Express: Pair with
deku postgresordeku redisfor stateful workloads - Next.js and Nuxt: Add Deku-managed services through framework-standard environment variables as needed
- Vite React: Static by default; pair it with another Deku app when you need an API
- Astro: Static by default; no backing service required
Selection Notes
Section titled “Selection Notes”- The Laravel starter intentionally keeps a lightweight local overlay and bootstraps the official Laravel skeleton during the Docker build.
- These templates do not bundle sidecars. Use Deku-managed services instead.
- Bun is enabled in the templates where it improves install and build speed without adding runtime ambiguity:
astro,nuxt,hono, andvite-react.
Typical Flow
Section titled “Typical Flow”deku apps create my-appdeku deploy run my-app --path /absolute/path/to/repo/templates/node-expressdeku deploy list my-appdeku logs my-app -n 100