Get started

How to Choose Templates

Decision tree for the 10 base templates. Pick the right one in 30 seconds.

6 min readUpdated 3 days agoEdit on GitHub

If you are adding a new project and do not know which base template to pick, this page gives you a decision tree and a comparison table.

If you would rather start from a complete workspace composition instead of choosing each one add template yourself, use Template Examples. That page has full starters for mobile, desktop, web, consumer, admin, and docs projects, each with a copyable one create --preset ... command.

For: people who ran one templates and saw too many IDs, tech leads evaluating stack choices, and anyone writing template-selection rules for agents.

You will learn: how to pick the right base template in 30 seconds, and when to skip the decision and use a complete example instead.

30-second Rule

Need a backend API -----------------------> nestjs-api / go-api
Need a browser-facing web project --------> nextjs-app / react-spa / astro-site
Need a reusable package ------------------> ts-library / go-lib
Need a documentation site ----------------> starlight-docs
Need a mobile app ------------------------> expo-mobile
Need a desktop app -----------------------> electron-app

If unsure, ask one question: how does the user consume this thing? Browser -> Web. Command-line / HTTP calls -> API. npm install / go get -> Library. .app / .dmg / .exe -> Desktop. App Store -> Mobile. Reading content -> Docs.

Full Comparison

IDCategoryKeywordsOne-line fitDetails
nestjs-apiAPITypeScript, NestJS, RESTDefault API template for TypeScript teamsMobile / marketing / admin examples
go-apiAPIGo, Gin, GORMHigh-throughput / low-memory / mixed-language teams-
nextjs-appWebNext.js, SSR, ReactDefault consumer web or full-stack appConsumer example
react-spaWebVite, React, SPAConsole / internal app / no SEOAdmin example
astro-siteWebAstro, static-firstMarketing or content siteMarketing example
starlight-docsDocsStarlight, AstroDocumentation site or knowledge baseDocs example
expo-mobileMobileExpo, React NativeCross-platform iOS + AndroidMobile example
electron-appDesktopElectron, React, ViteDesktop app for macOS / Windows / LinuxDesktop example
ts-libraryLibraryTS, strict semverReusable TypeScript package-
go-libLibraryGo, module, package layoutReusable Go module-

Add The Template You Chose

The ID column is the first argument after one add.

If you are still unsure, use the interactive flow:

one add

If you already picked a template:

one templates
one add nestjs-api --name api

nestjs-api comes from the template ID. api is the project name you choose.

Full-stack SaaS (default)

one create my-saas
cd my-saas
one add nestjs-api --name api
one add nextjs-app --name web
one add ts-library --name shared

Why: TypeScript across the stack lets shared be used by both API and web. Next.js can cover SEO and authenticated app surfaces.

High-performance Backend + Static Marketing

one add go-api --name api
one add astro-site --name marketing
one add react-spa --name console

Why: Go handles traffic; Astro keeps the public site fast and SEO-friendly; React SPA works for an authenticated console.

Mobile + API

one add nestjs-api --name api
one add expo-mobile --name app
one add ts-library --name shared

shared can hold DTOs and business types reused by React Native and the API.

Still Unsure?

Run one templates -o json for full template metadata, or run one add interactively. The picker includes category and one-line descriptions.

You can also pick one of the recommended combos above, get it running, and change course once you know more.