Skip to content

Repository files navigation

Mobile App Template

A GitHub template for kicking off new mobile projects fast. Monorepo layout, pre-wired Expo starter app, Claude Code skills already vendored, and the tooling Matt uses on every project.

What's in here

.
├── apps/
│   └── mobile/        # Expo starter (rename per project)
├── packages/          # Shared packages (UI kits, libs, configs) go here
├── .claude/skills/    # Skills exposed to Claude Code (symlinked from .agents/)
├── .agents/skills/    # Vendored skill source (shared with other agents)
├── skills-lock.json   # Pinned skill versions
├── pnpm-workspace.yaml
├── turbo.json
└── CLAUDE.md          # Project rules for Claude Code

Use this as a GitHub template

  1. Push this repo to GitHub.
  2. In Settings → General, tick Template repository.
  3. Click Use this template to spawn a new project.

After cloning a new project from the template

# 1. Rename the starter app
mv apps/mobile apps/<your-app>

# 2. Update apps/<your-app>/package.json -> "name"
# 3. Update apps/<your-app>/app.json -> name, slug, bundleIdentifier, package, scheme
# 4. Install deps
pnpm install

# 5. Boot the app
cd apps/<your-app>
pnpm dev

Monorepo commands (run from repo root)

pnpm dev           # Turbo dev across all apps
pnpm build         # Turbo build
pnpm lint          # oxlint across all apps
pnpm check-types   # Type-check everything
pnpm format        # oxfmt write
pnpm format:check  # oxfmt --check (CI gate)

Adding apps and packages

  • New mobile app: apps/<name> — copy apps/mobile as a starting point, then update package.json name and app.json identifiers.
  • Backend / server: apps/<name>-server — any node/bun/edge runtime works; just add to pnpm-workspace.yaml (covered by apps/*).
  • Shared package: packages/<name> — typed shared UI, hooks, utils, or config.

Skills

Skills live in .agents/skills/ (the source of truth, shared across agents) and are symlinked into .claude/skills/ so Claude Code picks them up. Two skills are Claude-only and live directly under .claude/skills/:

  • git-commit-push
  • implement-plan

Pinned versions live in skills-lock.json. Update with your usual skill-install tooling when bumping versions.

Conventions

  • Node: 24+ (see .nvmrc)
  • Package manager: pnpm 11+ (packageManager field is enforced)
  • Isolated node_modules (.npmrc sets node-linker=isolated) — required for React Native apps with different SDK versions side-by-side.
  • Toolchain is all oxc: oxlint for lint, oxfmt for format. No Prettier, no ESLint. (oxfmt is pre-1.0; expect formatting changes between bumps.)
  • Don't run servers locally unless asked — Matt runs them.
  • Don't commit on main unless asked. On branches/worktrees, commit freely.

License

MIT — free to use, modify, and redistribute. Attribution required: keep the copyright notice in LICENSE intact in copies or substantial portions. Ships as part of tinyorbit.ai.

About

Monorepo template for mobile apps: Expo + React Native starter, vendored Claude Code skills, oxc toolchain (oxlint + oxfmt), pnpm workspaces, turbo.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages