Forge is a CLI that scaffolds clean React starters you can edit immediately.
It uses shadcn for the scaffold, then applies Forge setup for app shell wiring, theme support, optional RTL routing, framework-appropriate i18n, sound hooks, fallback pages, metadata, code-quality tooling, and starter docs.
Website: use-forge.vercel.app
Warning
Do not use npm i create-use-forge to start a new app.
It only installs the package and does not run the initializer.
Use the Create an app commands below.
Use one of these commands to start a new project:
npm create use-forge@latest
pnpm create use-forge
bun create use-forge
yarn create use-forgeProject names must use lowercase letters, numbers, and single hyphens.
Valid examples:
my-app
forge-demo
app2Invalid examples:
MyApp
my_app
my--app
my app
conThe special name . is valid when you generate into the current empty folder.
Forge starters stay intentionally minimal.
Each generated app includes:
- a minimal starter page
- a theme switch
- a language switch only when RTL is enabled
next-intlfor Next.js RTL startersreact-i18nextfor Vite and TanStack Start RTL starters- framework-native error and not-found pages
- favicon and core metadata
- sound hooks for clicks and theme switching
- lint and format setup based on your chosen option
- a README that matches your package manager
Generated apps do not include Forge internal specs, skills, or planning docs.
Frameworks:
next(Next.js)vite(Vite)start(TanStack Start)
UI base:
base(Base UI)radix(Radix UI)
Direction:
--ltrfor English only--rtlfor English and Arabic with locale routes
I18n in RTL mode:
- Next.js uses
next-intl - Vite uses
react-i18next - TanStack Start uses
react-i18next
Package manager:
pnpmnpmyarnbun
Code quality:
biomeeslint-prettieroxlint-oxfmt
Current default preset:
next + base + ltr + pnpm + biomeAfter app creation, these are the commands most users need:
forge generatePreview plan only:
forge planGenerate from flags:
forge generate --name my-app --framework next --base base --ltr --package-manager pnpm --code-quality biomeGenerate in current empty folder:
forge generate --name .Generate a retained fixture in fixtures/:
forge generate --fixture --name next-base-ltr --framework next --base base --ltrIf you installed the package and want to run it manually, use one of these:
npx create-use-forge generate
npm exec create-use-forge -- generateIf forge is already available in your environment, this also works:
forge generateForge is release-ready locally for the current generator surface.
The npm package name is create-use-forge, and it exposes:
forgecreate-use-forge
The current package version is 0.1.4.
The marketing site is deployed from marketing-site/ on Vercel. The remaining public release steps are npm publish and registry verification.
This section is for contributors and release maintainers.
Forge is a single-package TypeScript CLI with three layers:
- Scaffold adapter
- Framework overlay
- Feature packs
In short, scaffold tools create the base app, overlays apply framework shell details, and feature packs add cross-cutting pieces like docs, sounds, metadata, dependency freshness, and code quality.
src/ CLI, generator, overlays, feature packs, verification
assets/branding/ Forge assets copied into generated apps
fixtures/ generated regression fixtures
marketing-site/ Next.js marketing site
spec/ project contracts and working memory
deprecated/ legacy code outside active surfaceInstall dependencies:
pnpm installRun CLI from source:
pnpm dev -- --help
pnpm dev -- plan
pnpm dev -- generate --dry-runBuild:
pnpm buildTypecheck:
pnpm typecheckTest:
pnpm testInspect package contents:
npm pack --dry-runLocal checks:
pnpm --dir marketing-site typecheck
pnpm --dir marketing-site lint
pnpm --dir marketing-site buildVercel settings:
Root Directory: marketing-site
Framework Preset: Next.js
Install Command: default
Build Command: default
Output Directory: defaultRelease checklist: spec/release-and-publishing.md
Before npm publish:
pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
npm pack --dry-runFor local tarball smoke tests, use npm exec --package <tarball> instead of npm create <tarball>.
MIT. See LICENSE.
