Local Development Setup
Get CheerKeeper running on your local machine for development.
Prerequisites
- Node.js 18+ (LTS recommended)
- npm or pnpm
- PostgreSQL (or use Neon for cloud database)
- Git
Repository Structure
cheerkeeper/
├── cheerkeeper-admin/ # Next.js web admin dashboard
├── cheerkeeper-app/ # Expo React Native mobile app
├── cheerkeeper-docs/ # This documentation site
└── packages/ # Shared packages
Admin Dashboard Setup
1. Clone the Repository
git clone https://github.com/cheerkeeper/cheerkeeper.git
cd cheerkeeper/cheerkeeper-admin
2. Install Dependencies
npm install
3. Environment Variables
Copy the example environment file:
cp .env.example .env
Required variables:
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/cheerkeeper"
# Auth
JWT_SECRET="your-jwt-secret-min-32-chars"
JWT_REFRESH_SECRET="your-refresh-secret-min-32-chars"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-nextauth-secret"
# Google OAuth (optional)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
# AI Features (optional)
ANTHROPIC_API_KEY="your-anthropic-api-key"
4. Database Setup
Initialize the database:
npx prisma db push
Optionally seed with sample data:
npx prisma db seed
5. Start Development Server
npm run dev
Mobile App Setup
1. Navigate to App Directory
cd cheerkeeper/cheerkeeper-app
2. Install Dependencies
npm install
3. Start Expo
npx expo start
4. Run on Device/Simulator
- Press
ifor iOS Simulator - Press
afor Android Emulator - Scan QR code with Expo Go app for physical device
Development Workflow
Running Both Admin and Mobile
Open two terminals:
Terminal 1 - Admin:
cd cheerkeeper-admin
npm run dev
Terminal 2 - Mobile:
cd cheerkeeper-app
npx expo start
Database GUI
View and edit data with Prisma Studio:
cd cheerkeeper-admin
npx prisma studio
Opens at http://localhost:5555
Code Formatting
npm run lint # Check for issues
npm run lint:fix # Auto-fix issues
npm run format # Format with Prettier
Type Checking
npm run typecheck
Tech Stack Reference
Admin Dashboard
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS + shadcn/ui
- Database: PostgreSQL + Prisma ORM
- Auth: JWT + NextAuth.js (Google OAuth)
- State: TanStack Query
Mobile App
- Framework: Expo SDK 54
- Language: TypeScript
- Navigation: Expo Router
- Storage: expo-sqlite + AsyncStorage
Common Issues
Database Connection Failed
- Verify PostgreSQL is running
- Check DATABASE_URL format
- Ensure database exists
Prisma Errors
# Reset Prisma client
npx prisma generate
# Reset database (⚠️ deletes data)
npx prisma db push --force-reset
Port Already in Use
# Find process using port 3000
lsof -i :3000
# Kill process
kill -9 <PID>
Expo Issues
# Clear cache
npx expo start --clear
# Reset dependencies
rm -rf node_modules && npm install
Next Steps
- Architecture - System design overview
- Database Schema - Data models
- Contribution Guide - How to contribute