Production-ready social network for dog owners to discover compatible playmates, coordinate meetups, and track activities together.
Status: β Production Ready | Target: San Francisco Beta Launch
Woof brings dog owners together through IRL meetups backed by smart compatibility matching and activity tracking.
- π Pet Profiles - Detailed profiles with temperament, energy level, play style
- π€ Compatibility Matching - ML-powered recommendations based on pet personalities
- π Event Coordination - Create and join dog meetups at local parks
- π Activity Tracking - Log walks, runs, playtime with photos and metrics
- π¬ Real-time Chat - Coordinate meetups with instant messaging
- π Gamification - Points, badges, and leaderboards for engagement
- πͺ Service Discovery - Find trainers, groomers, vets, and daycares
- β Verification - Trust badges for verified profiles and businesses
Unlike Rover (services) or BarkHappy (basic social), Woof focuses on:
- IRL Meetup Outcomes - Track if dogs actually got along
- Quality Metrics - "Great match!", "Needs slow intro" labels
- Activity Data - Co-activity patterns and repeat meetup rates
- Service Conversions - Meetups β trainer bookings pipeline
- ML-Ready Architecture - Systematic data collection for better matching
- Node.js 20+
- pnpm 8+
- Docker (for local PostgreSQL)
# 1. Install dependencies
pnpm install
# 2. Start PostgreSQL
docker compose up -d
# 3. Set up database
cp apps/api/.env.example apps/api/.env
pnpm --filter @woof/api prisma generate
pnpm --filter @woof/api prisma migrate dev
pnpm --filter @woof/api db:seed
# 4. Start development servers
cp apps/web/.env.local.example apps/web/.env.local
# Terminal 1: API
pnpm --filter @woof/api dev
# Terminal 2: Web
pnpm --filter @woof/web dev
# Terminal 3: Mobile (optional)
pnpm --filter @woof/mobile startEndpoints:
- Frontend: http://localhost:3000
- API: http://localhost:4000
- API Docs: http://localhost:4000/docs
- Mobile: Expo DevTools at http://localhost:8081
All seed users have password: password123
Example logins:
sarah@example.com- Software engineer with Golden Retrievermike@example.com- Finance professional with Rescue Mixjen@example.com- Graphic designer with Corgi
woof/
βββ apps/
β βββ api/ # NestJS backend (18 modules)
β βββ web/ # Next.js 15 frontend (158+ components)
β βββ mobile/ # React Native mobile app (iOS & Android)
βββ packages/
β βββ database/ # Prisma schema (PostgreSQL + pgvector)
β βββ ui/ # Shared UI components
β βββ config/ # TypeScript/ESLint configs
βββ .github/workflows/ # CI/CD (test, build, deploy)
Backend:
- NestJS 10 with TypeScript
- PostgreSQL with Prisma ORM
- pgvector for ML embeddings
- Socket.io for real-time chat
- AWS S3/Cloudflare R2 for file storage
- JWT authentication with refresh tokens
Web Frontend:
- Next.js 15 with App Router
- React 19 with TypeScript
- Tailwind CSS v4
- Zustand for state management
- React Query for server state
- PWA with offline support
Mobile App:
- React Native with Expo SDK 54
- React Navigation 7
- TypeScript 5.9
- Axios with JWT auto-refresh
- Native features: Camera, Maps, Location, Notifications
Infrastructure:
- GitHub Actions CI/CD
- Sentry error tracking
- Vercel deployment (web)
- Fly.io deployment (API)
- EAS Build (mobile)
- Neon/Supabase (PostgreSQL)
- Auth - JWT with refresh tokens
- Users - Profile management
- Pets - Pet profiles with ML embeddings
- Activities - Walk/run/play tracking
- Social - Posts, likes, comments
- Meetups - Event coordination
- Compatibility - ML-powered matching
- Events - Community events with check-ins
- Gamification - Points, badges, leaderboards
- Services - Business directory
- Verification - Profile verification
- Analytics - North star metrics
- Co-Activity - Shared activity tracking
- Meetup Proposals - Direct meetup invites
- Storage - S3/R2 file uploads
- Chat - Real-time messaging
- Manual Activities - Activity logging with photos
- ... and more
- Auth: Login, register, onboarding wizard
- Activity: Manual logging, activity feed
- Discover: Match discovery, compatibility cards
- Events: Event creation, check-ins, attendance
- Feed: Social posts, likes, comments
- Gamification: Badges, leaderboards, achievements
- Inbox: Real-time messaging
- Profile: User/pet profiles, edit forms
- Services: Service discovery, filters, bookings
- UI Library: 50+ Radix UI components with custom styling
- Backend: 80%+ target (Jest + Supertest)
- Frontend: 70%+ target (Vitest + Playwright)
- E2E: Critical user flows (auth, events, messaging)
# Backend tests
pnpm --filter @woof/api test
pnpm --filter @woof/api test:e2e
# Frontend tests
pnpm --filter @woof/web test
pnpm --filter @woof/web test:e2e
pnpm --filter @woof/web test:e2e:ui
# All tests
pnpm testThree automated workflows:
- CI: Lint β Test β Build (on every push)
- Deploy Staging: Auto-deploy to staging (on develop branch)
- Deploy Production: Deploy to production (on main branch)
The seed script generates realistic SF-focused test data:
- 20 Users across 18 SF neighborhoods
- 20 Pets with popular SF breeds (Goldens, Frenchies, Corgis, Aussies)
- 12 Dog Parks with GPS coordinates (Fort Funston, Crissy Field, Dolores, etc.)
- 5 Upcoming Events at iconic SF locations
- 5 Pet Services (training, grooming, daycare)
- 50 Activity Logs from past 30 days
- 30 Social Posts tagged at real parks
pnpm --filter @woof/api db:seedSee apps/api/prisma/SEED_DATA_README.md for details.
Production-grade security measures:
- Rate Limiting: 3 tiers (3/sec, 20/10s, 100/min)
- Helmet: CSP, XSS, clickjacking protection
- CORS: Strict origin validation
- JWT: Secure authentication with refresh tokens
- File Upload: Size limits, type validation
- Content Security Policy: Nonce-based scripts
- HTTPS: Forced redirect in production
- Error Tracking: Sentry with session replay
- Sentry: Backend + frontend integration
- Session Replay: Debug user issues
- Performance Monitoring: Track API response times
- Error Boundaries: User-friendly fallbacks
- Vercel Analytics: Web vitals
- Custom Events: North star metrics
- Successful IRL meetups
- Repeat meetup rate
- Service conversions
- Event attendance
- Co-activity frequency
See DEPLOYMENT_GUIDE.md for complete instructions.
# 1. Set environment variables
# See .env.example files
# 2. Deploy API
fly deploy
# 3. Deploy Web
vercel deploy --prod
# 4. Run migrations
pnpm --filter @woof/api prisma migrate deploy
# 5. Seed data
pnpm --filter @woof/api db:seedBackend (apps/api/.env):
DATABASE_URL- PostgreSQL connection stringJWT_SECRET- JWT signing keySENTRY_DSN- Error trackingS3_*- File storage credentialsCORS_ORIGIN- Allowed origins
Frontend (apps/web/.env.local):
NEXT_PUBLIC_API_URL- API endpointNEXT_PUBLIC_SENTRY_DSN- Error trackingSENTRY_AUTH_TOKEN- Source map upload
- DEPLOYMENT_GUIDE.md - Production deployment
- ML_SYSTEM_README.md - ML compatibility system
- apps/api/prisma/SEED_DATA_README.md - Seed data guide
- /docs - API Swagger documentation (when running)
# Development
pnpm dev # Start all apps
pnpm --filter @woof/api dev # Start API only
pnpm --filter @woof/web dev # Start web only
# Database
pnpm db:migrate # Run migrations
pnpm db:seed # Seed data
pnpm db:studio # Open Prisma Studio
# Testing
pnpm test # Run all tests
pnpm test:coverage # Test with coverage
pnpm test:e2e # E2E tests
# Building
pnpm build # Build all packages
pnpm lint # Lint all code
pnpm type-check # TypeScript checks- Core authentication & authorization
- Pet profiles with compatibility matching
- Event creation & management
- Real-time messaging
- Activity tracking with photos
- File upload system
- Service discovery
- Gamification system
- Comprehensive testing
- CI/CD automation
- Security hardening
- Error tracking
- San Francisco seed data
- Push notifications
- n8n automation workflows
- Advanced communities/groups
- Calendar integration
- Enhanced ML algorithm
- Referral system
- Premium features
- Mobile apps (React Native)
- Video calls
- Stories/highlights
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'feat: add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
Standards:
- TypeScript strict mode
- ESLint with 0 errors
- Prettier formatting
- Conventional commits
- 70%+ test coverage
MIT Β© Sidharth Hulyalkar
Built with:
- Next.js - React framework
- NestJS - Node.js framework
- Prisma - Database ORM
- Tailwind CSS - Styling
- Radix UI - Accessible components
- Sentry - Error tracking
- And many more amazing open source projects
Woof - Bringing dog owners together, one park at a time πΎπ