A monorepo containing the Firepit web and mobile applications. Built with modern tooling including Next.js, React Native/Expo, TypeScript, and Appwrite.
-
apps/web β Next.js web application
- Modern React 19 frontend with App Router
- Real-time features via Appwrite
- TailwindCSS styling
- Type-safe API integration
-
apps/mobile β React Native mobile app with Expo
- iOS, Android, and web support
- Shared Appwrite backend
- Native performance with React Native
- Package Manager: Bun (
^1.3.14) - Build System: Turbo for fast, incremental builds
- Language: TypeScript with strict type checking
- Node Version:
>=20.9.0
- Node.js 20.9.0+
- Bun 1.3.14 (install from bun.sh)
# Install dependencies for all workspaces
bun install# Start the web app dev server (port 3000)
bun run dev
# Or explicitly run web development
bun run web
# Start mobile development
bun run mobile
# Run mobile on specific platforms
bun run mobile:android
bun run mobile:ios
bun run mobile:web| Command | Description |
|---|---|
bun run dev |
Start web development server (shorthand for web) |
bun run web |
Start web dev server on port 3000 |
bun run build |
Build all apps (web, mobile) |
bun run test |
Run tests across all workspaces |
bun run lint |
Lint all workspaces |
bun run typecheck |
Type-check all workspaces |
All web scripts can be prefixed with web: to run from the root. Example: bun run web:dev, bun run web:test
| Command | Description |
|---|---|
bun run web:dev |
Start Next.js dev server |
bun run web:build |
Build for production (with SWC) |
bun run web:build:webpack |
Build using Webpack instead of SWC |
bun run web:build:analyze |
Build with bundle size analysis |
bun run web:start |
Start production server |
bun run web:test |
Run Vitest suite |
bun run web:test:coverage |
Run tests with coverage report |
bun run web:lint |
Run ESLint |
bun run web:lint:fix |
Run ESLint with auto-fix |
bun run web:typecheck |
Type-check without emitting |
bun run web:setup |
Interactive setup for Appwrite configuration |
bun run web:validate-env |
Validate environment variables |
bun run web:validate-env:ci |
Validate environment variables for CI |
bun run web:cleanup-orphan-memberships |
Database maintenance script |
bun run web:knip |
Check for dead code and unused dependencies |
bun run web:update:force |
Update Next.js, Appwrite to latest |
bun run web:update:pin |
Update and pin Next.js, Appwrite to exact versions |
bun run web:update:check |
Check for outdated packages |
All mobile scripts can be prefixed with mobile: to run from the root. Example: bun run mobile:start, bun run mobile:android
| Command | Description |
|---|---|
bun run mobile:start |
Start Expo dev server |
bun run mobile:android |
Run on Android device/emulator |
bun run mobile:ios |
Run on iOS device/simulator |
bun run mobile:web |
Run in web browser |
bun run mobile:lint |
Run ESLint |
firepit/
βββ apps/
β βββ web/ # Next.js web application
β β βββ src/
β β βββ public/
β β βββ scripts/
β β βββ docs/ # Web-specific documentation
β β βββ package.json
β β
β βββ mobile/ # React Native/Expo mobile app
β βββ src/
β βββ android/
β βββ assets/
β βββ docs/ # Mobile-specific documentation
β βββ package.json
β
βββ docs/ # Monorepo documentation
βββ package.json # Root workspace configuration
βββ turbo.json # Build pipeline configuration
βββ tsconfig.json # TypeScript root config
βββ bunfig.toml # Bun package manager config
# Build all apps
bun run build
# Build specific app
bun run web:build
bun run web:build:webpack # Alternative build with Webpack# Run all tests
bun run test
# Run with coverage
bun run web:test:coverage# Lint all workspaces
bun run lint
# Auto-fix linting issues
bun run web:lint:fix
# Type checking
bun run typecheck
# Dead code and unused dependency checking
bun run web:knip# Interactive setup for web app (Appwrite, etc.)
bun run web:setup
# Validate environment variables
bun run web:validate-env
# For CI environments
bun run web:validate-env:ci- Monorepo Architecture
- Web App: See apps/web/README.md and apps/web/docs/
- Mobile App: See apps/mobile/README.md and apps/mobile/docs/
The monorepo uses Turbo for optimized, incremental builds. Configured tasks:
buildβ Depends on dependency builds, caches outputlintβ Caches resultstestβ Depends onbuild, caches resultstypecheckβ Depends onbuild, caches results
Turbo automatically:
- Parallelizes independent tasks
- Caches build outputs
- Skips unchanged workspaces
- Manages task dependencies
bunx turbo cleanrm -rf node_modules
rm -rf apps/*/node_modules
bun installbun outdated
bun run web:update:checkIf SWC builds are having issues:
bun run web:dev:webpack
bun run web:build:webpackWhen adding new workspaces or scripts:
- Update
package.jsonworkspaces if needed - Document new scripts in this README
- Run
bun run lintandbun run typecheckto validate - Ensure Turbo can properly orchestrate new tasks
The license at LICENSE, applies to ALL projects under apps/. (The license covers all code in this repository).