GetSpot streamlines the organization of local sports meetups, starting with badminton games. Organizers can create events, manage participants, and handle registrations, while providing a simple and clear experience for players.
- Group Management: Create and manage private groups for your sports activities
- Event Creation: Easily schedule events with capacity management and waitlists
- Virtual Wallet: Handle event fees and penalties with a virtual currency system
- Smart Waitlist: Automatic promotion when spots open up
- Push Notifications: Stay updated on events, cancellations, and registrations
- Real-time Updates: Live participant counts and status changes
- Cross-platform: Works on iOS, Android, and Web
- Frontend: Flutter (Mobile & Web)
- Backend: Firebase
- Authentication (Google, Apple Sign-In)
- Cloud Firestore (NoSQL database)
- Cloud Functions (Serverless backend)
- Cloud Messaging (Push notifications)
- Hosting (Web deployment)
- Analytics & Crashlytics
- Remote Config (Feature flags)
- Local Development Guide - Set up your development environment
- CLAUDE.md - Quick reference for AI-assisted development
- PRODUCT.md - Requirements, roadmap, and feature backlog
- USER_JOURNEYS.md - User flows and scenarios
- WIREFRAMES.md - UI mockups and design
- ARCHITECTURE.md - System architecture and design patterns
- DATA_MODEL.md - Firestore data structure
- FIREBASE_FEATURES.md - Firebase services used and recommended
- DEPLOYMENT.md - Deploy to Web, Android, and iOS
- IOS_RELEASE_QUICKSTART.md - Quick iOS release guide
- IOS_RELEASE_AUTOMATION.md - Detailed iOS automation
- DATA_RETENTION.md - Data lifecycle policies
- FEATURE_FLAGS.md - Remote Config setup
- FIREBASE_ANALYTICS.md - Analytics implementation
- FIREBASE_CRASHLYTICS.md - Crash reporting setup
- IN_APP_UPDATES.md - App update prompts
- CONTRIBUTING.md - Contribution guidelines
- ENVIRONMENTS.md - Dev/prod environment setup (planned)
- privacy.md - Privacy policy
- Flutter SDK (3.8.1+)
- Firebase CLI
- Node.js 22+ (for Cloud Functions)
# Clone the repository
git clone https://github.com/yourusername/getspot.git
cd getspot
# Install Flutter dependencies
flutter pub get
# Install Cloud Functions dependencies
cd functions
npm install
cd ..
# Run on connected device
flutter run
# Or run on Chrome
flutter run -d chromeSee LOCAL_DEVELOPMENT.md for detailed setup instructions.
- Group creation and management
- Event scheduling with capacity limits
- Event registration with waitlist support
- Virtual wallet system
- Push notifications
- Google & Apple authentication
- Firebase Analytics & Crashlytics
- Feature flags (Remote Config)
- Data lifecycle management
- Separate dev/prod environments
- Terms of Service and Privacy Policy
See PRODUCT.md for the complete roadmap.
Top Priorities:
- Performance optimization (pagination, caching)
- Error handling improvements
- Admin dashboard and analytics
- Enhanced search and filtering
- Social features (ratings, badges, leaderboards)
- Project ID:
getspot01 - Region: us-east4 (Northern Virginia)
- Firestore: Rules and indexes configured
- Functions: TypeScript with Node.js 22
- Hosting: www.getspot.org
1. Write-to-Trigger Pattern (Event Registration)
- Client writes "requested" status
- Cloud Function processes and updates status
- Real-time listener updates UI
2. Callable Function Pattern (Group Creation)
- Atomic operations with transactionality
- Returns result synchronously
- Server-side validation
3. Denormalized Data (User Memberships)
- Fast lookups without expensive collection group queries
/userGroupMemberships/{userId}/groups/{groupId}- Maintained by Cloud Functions
See ARCHITECTURE.md for details.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Development Principles:
- Prefer Cloud Function triggers for invariants
- Use batched writes/transactions for multi-document consistency
- Add composite indexes proactively
- Include rationale comments for maintainability
- Documentation: See
/docsfolder - Issues: GitHub Issues
- Website: www.getspot.org
This project is licensed under the terms specified in the LICENSE file.
Built with β€οΈ using Flutter and Firebase