Skip to content

Developer Onboarding Checklist

Welcome to the Coaching App team! This checklist will guide you through setting up your development environment and making your first contribution.

βœ… Prerequisites Installation

Required Tools

  • Docker Desktop (v20.10+)
  • Download: https://www.docker.com/products/docker-desktop
  • Verify: docker --version and docker compose version

  • Node.js (v18 or v20 LTS)

  • Download: https://nodejs.org/
  • Verify: node --version
  • Should output: v18.x.x or v20.x.x

  • Yarn (v1.22+ or v4+)

  • Install: npm install -g yarn or corepack enable
  • Verify: yarn --version

  • Git (v2.30+)

  • Download: https://git-scm.com/downloads
  • Verify: git --version

Mobile Development (Optional - for mobile package work)

  • Expo CLI
  • Install: npm install -g expo-cli
  • Verify: expo --version

  • iOS Simulator (macOS only) or Android Studio (for Android emulator)

  • iOS: Install Xcode from App Store
  • Android: https://developer.android.com/studio
  • VS Code with extensions:
  • ESLint
  • Prettier
  • Docker
  • React Native Tools
  • Expo Tools
  • Jest Runner

  • Database Client (optional):

  • Postico (macOS)
  • pgAdmin
  • DBeaver

πŸ”‘ Access & Setup

  • Get repository access
  • Request access from team lead
  • Verify you can clone the repository

  • Clone the repository

git clone <repository-url>
cd coaching-app
  • Set up Git configuration
git config user.name "Your Name"
git config user.email "your.email@example.com"
  • Copy environment files
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env

πŸš€ First Run

  • Install dependencies
pnpm install
  • Start Docker services
docker compose -f docker-compose.yml -f docker-compose.dev.yml up
  • First run downloads images (5–10 minutes)
  • Watch for: PostgreSQL "ready to accept connections", Redis "Ready to accept connections", backend "listening on :3001"
  • Keep this terminal open

  • Run database migrations and seed

cd backend && pnpm db:migrate && pnpm db:seed
  • Verify services are running
  • Backend API: http://localhost:3001/api/auth/session (returns {"session":null})
  • Frontend Web: http://localhost:8081
  • MinIO Console: http://localhost:9001 (minioadmin / minioadmin)
  • Mailpit: http://localhost:8025
  • Drizzle Studio: http://localhost:4983

# Or: docker compose -f docker-compose.yml -f docker-compose.dev.yml up

- First run downloads images (5-10 minutes)
- Watch for these messages:
  - PostgreSQL: "database system is ready to accept connections"
  - Redis: "Ready to accept connections"
  - Backend: "Server is running on port 3001"
  - Frontend: "Waiting on http://localhost:3000"
- Keep this terminal open
  • Verify Docker services are running
  • Backend API: http://localhost:3001/api/health
    • Should return {"status":"ok"}
  • Frontend Web: http://localhost:3000
    • Should show "Hello from Web! 🌐"
    • Backend status should show "Hello from Backend!"
  • MinIO Console: http://localhost:9001 (login page)

  • Email: platformadmin@coaching.test

  • Password: admin123

  • Login to MinIO Console

  • URL: http://localhost:9001
  • Access Key: minioadmin
  • Secret Key: minioadmin
  • You should see the MinIO admin panel

  • Start mobile app (in new terminal)

yarn mobile
# Or: cd mobile && yarn start
  • Opens Expo Dev Tools in browser
  • Press i for iOS simulator, a for Android emulator, or w for web
  • Or scan QR code with Expo Go app on your phone

  • Verify mobile app is running

  • Should display: "Hello from Mobile! πŸ“±"
  • Platform info showing your OS (iOS/Android) and version
  • Backend status section should show: "Hello from Backend!"
  • If you see "Failed to connect to backend", ensure Docker services are running

πŸ§ͺ Verify Development Environment

  • Test the backend
curl http://localhost:3001/api/auth/session
# Should return: {"session":null}
  • Run tests
pnpm test
  • Run linters
pnpm lint
  • Check TypeScript
pnpm type-check

πŸ“š Learn the Codebase

tree -L 3 -I 'node_modules|dist|build|.expo'
  • Review backend source
  • backend/src/db/schema/ β€” Drizzle table definitions
  • backend/src/routes/ β€” Hono routers
  • backend/src/lib/auth.ts β€” Better-auth config
  • backend/src/middleware/ β€” Auth + role guards

  • Review shared types

  • shared/src/ β€” Types shared across frontend and backend

πŸ› οΈ Make Your First Contribution

  • Pick a good first issue
  • Look for issues tagged good-first-issue or documentation
  • Ask team lead for suggestions

  • Create a feature branch

git checkout -b feature/your-feature-name
  • Make your changes
  • Follow Code Quality guidelines
  • Write tests for new functionality
  • Update documentation if needed

  • Test your changes

pnpm test
pnpm lint
pnpm type-check
  • Commit with conventional format
git commit -m "feat: add your feature"
  • Push and create PR
git push origin feature/your-feature-name

πŸ“– Technology Documentation

πŸ†˜ Common Issues

Docker Issues

# Clean up and restart
docker compose down -v
docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build

pnpm Issues

pnpm store prune
rm -rf node_modules
pnpm install

✨ You're Ready!

Welcome aboard! πŸŽ‰