App Store
iOS
Android

Senders

FlutterBLoCNestJSMongoDBSocket.ioAWS S3Cloudflare ImagesFirebaseGoogle MapsRevenueCatDockerAWS ECS
Senders

Senders is a sports platform built for the MTB and action sports community — two products in one: Academy for structured video-based training, and Community for the social side of the sport.

Both variants share a single Flutter codebase, differentiated through 8 build flavors (production, staging, dev, and mock for each product). This means feature development happens once and ships to both Academy and Community simultaneously, while keeping their app identities, branding, and backend endpoints fully separate.

The gamification layer drives engagement: riders earn points for completing lessons, logging sessions, and participating in challenges. Streaks, levels, and a leaderboard create competitive motivation without requiring a separate game design framework.

The geolocated Spots module maps MTB trails and trick spots with Google Maps — users can discover riding locations, view community posts from a specific spot, and log their own sessions there.

Real-time chat runs on Socket.io with both 1:1 and group conversation support. The Trickbook/Missions flow adds a coaching evaluation loop where athletes submit trick attempts and coaches review and grade them.

Highlights

  • Two app variants from one codebase: Senders Academy (courses) and Senders Community (social)
  • Real-time chat — 1:1 and group conversations via Socket.io
  • Gamification system: points, levels, streaks, challenges, and leaderboard
  • Video course player with per-user progress tracking
  • Interactive geolocated MTB spots and trails with Google Maps
  • 8 app flavors (prod/staging/dev/mock × Academy/Community) with full CI/CD
Technical details

Architecture

Flutter frontend (feature-based Clean Architecture) + NestJS 11 backend on AWS ECS. Two product variants (Academy, Community) share the same Flutter codebase via 8 build flavors. Real-time via Socket.io. Media stored on AWS S3 + Cloudflare Images/Stream. Deployed via Docker + GitHub Actions.

**Backend (senders-backend):** NestJS 11 / TypeScript / Node.js 24. MongoDB + Mongoose. Socket.io for real-time. AWS S3 + Cloudflare Images/Stream for media. SendGrid + Handlebars for transactional email. FCM for push notifications. JWT auth with 4 secret rotation slots for different auth flows. Linear API integration for in-app bug reporting. Jest + mongodb-memory-server for tests. Swagger at `/docs`. Deployed on AWS ECS via GitHub Actions.

**Mobile (senders-frontend):** Flutter 3.27 / Dart 3.6. BLoC/Cubit (Hydrated for persistence). Dio for HTTP. `socket_io_client` for WebSockets. GetIt for DI. Firebase: Auth, FCM, Crashlytics, Analytics, AppCheck, Performance. Google Maps Flutter. Branch SDK for deep linking. `audio_waveforms`, `pro_image_editor`, `video_player` for media. ShakeBugs for in-app bug reporting. i18n in English and German (ARB files).

**8 Flavors:** `production`, `dev`, `staging`, `mock` → Senders Academy. `community_production`, `community_dev`, `community_staging`, `community_mock` → Senders Community.

**Modules:** Auth, Chat, Gamification, Academy (courses + lessons), Blog/Community, Spots (geolocated), Missions/Trickbook, Discover, Notifications, SOTM (Send of the Month).