.github
└─ workflows
└─ CI with pnpm cache setup
.vscode
└─ Recommended extensions and settings for VSCode users
apps
├─ mobile
| ├─ Expo SDK 49
| ├─ React Native using React 18
| ├─ Navigation using Expo Router
| ├─ Tailwind using Nativewind
| └─ Typesafe API calls using tRPC
└─ web
├─ Next.js 13
├─ React 18
├─ Tailwind CSS
└─ shadcn UI
tooling
├─ eslint
| └─ Eslint config for monorepo packages
├─ prettier
| └─ Prettier config for monorepo packages
├─ tailwind
| └─ Tailwind configuration shared in WEB and mobile
└─ tsconfig
└─ TypeScript config for monorepo packages
packages
├─ api
| └─ tRPC v10 router definition
├─ core
| └─ Shared business logic
├─ env
| └─ Shared Tailwind & Eslint configs
├─ scripts
| └─ Scripts to interact with DB like seed etc
└─ db
└─ Typesafe db calls using Drizzle
Make sure that you have installed and configured:
- Node.js: I recommend using NVM (Node Version Manager). Installation Guide
- pnpm: Installation Guide
- Docker: Installation Guide
- iOS Simulator: Installation Guide
- Android Studio Emulator: Installation Guide
To get it running, follow the steps below:
-
Install dependencies
pnpm i
-
Copy example .env files
cp .env.example .env # Expo needs a different .env file cp apps/mobile/.env.example .env
-
Database setup
docker run --name the-bank-mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mysql
You can also get one from https://planetscale.com/
-
Database synchronization (optional)
pnpm db:push
We need to run mobile and web in parallel
-
Web:
pnpm web
-
iOS simulator:
pnpm mobile
If you need to reinstall all packages run:
# Clear all deps and cache
pnpm clean:workspaces
# Install all dependencies
pnpm i