Skip to content

SCollinA/expo-fullstack-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Expo Fullstack Template

A sanitized Expo + React Native + TypeScript fullstack monorepo template. It is designed for quickly starting a distributable mobile app while demonstrating a production-style architecture: Expo client, Express API, shared packages, PostgreSQL migrations, Redis-backed worker queues, import jobs, CI, release automation, and static marketing/legal pages.

Stack

  • pnpm workspaces with TurboRepo
  • Node.js 20.19.4 and pnpm 10.28.1
  • Expo Router, React Native, TypeScript
  • Express API with typed request/response contracts
  • PostgreSQL migration package and Redis queue/cache package
  • Worker project for background imports and queue-based jobs
  • GitHub Actions, EAS build placeholders, and Cloudflare Pages static site

Layout

  • projects/client: Expo app with catalog, account, settings, auth placeholder, billing placeholder, and API client.
  • projects/api: Express API with versioned health, app config, catalog, account, and subscription webhook routes.
  • projects/worker: background worker that can run an inline sample job locally or attach to Redis queues.
  • projects/scripts: repository utility command placeholders for checks and generation.
  • packages/types: shared enums, route builders, environment schemas, and wrapped validation schemas.
  • packages/components: React Native component wrappers used by the client.
  • packages/database: database connection helper, migrations, and seeds.
  • packages/cache: Redis and queue helpers.
  • packages/jobs: reusable import job logic.
  • cloudflare-pages/client: static marketing, legal, and login redirect pages.

Setup

pnpm install
cp projects/api/.env.example projects/api/.env
cp projects/client/.env.example projects/client/.env
cp projects/worker/.env.example projects/worker/.env

Local development defaults do not require real auth, subscription, Redis, or database credentials. Add provider values only when you are ready to wire those services.

Commands

pnpm dev:client
pnpm dev:api
pnpm dev:worker
pnpm migrate:dev
pnpm build
pnpm lint
pnpm test
pnpm format

Optional Services

  • Auth: provide EXPO_PUBLIC_AUTH_* and API AUTH_* values to replace placeholder login behavior.
  • Subscriptions: provide public subscription SDK keys in the client and webhook secrets in the API, then replace the placeholder billing context with provider calls.
  • EAS: replace the zero UUID in projects/client/app.base.tsx, configure EXPO_TOKEN, and set EAS_PROJECT_CONFIGURED=true in repository variables.
  • Cloudflare Pages: set project/account secrets, set CLOUDFLARE_PROJECT_CONFIGURED=true, and deploy cloudflare-pages/client.
  • PostgreSQL/Redis: set DATABASE_URL and REDIS_URL for migrations, API persistence, and queue workers.

What This Template Does Not Include

  • Real auth, subscription, observability, app-store, or static-hosting provider accounts.
  • Production-grade catalog persistence; the API uses in-memory demo data until you connect database queries.
  • A real external import provider; the worker demonstrates the queue/import shape with sample data.
  • Fully automated releases; the release workflow is intentionally a placeholder you can wire to your preferred versioning and changelog process.

Template Customization

Rename @acme/*, update app identifiers, replace the catalog example with your domain, and add real provider credentials in your private deployment environment. Keep .env.example files safe and placeholder-only.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors