| Environment | Status |
|---|---|
| Build Staging iOS | |
| Build Staging Android | |
| Build Production (iOS and Android) |
To run the Lemonade Flutter app, you need to set up a .env configuration file containing the required variables. Follow the steps below:
- Create a
.envfile in the root directory of the project. - Ask team member about
.envconfig file
Follow Conventional Commit
- cd scripts
- Execute
./install_dev_env.sh - After this setup, everytime time you commit code, it's will automate trigger check your commit conventions
Recommend to use fvm Flutter version management and use Flutter version 3.16.9 and Dart 3.2.6
Prebuild
Generate generated file
./build_runner.sh
Generate i18n
./gen_i18n.sh
How to install & use
fvm install 3.24.1
fvm use 3.24.1
How to run Staging & Production
fvm flutter run --flavor staging --target lib/main_staging.dart
fvm flutter run --flavor production --target lib/main_production.dart
With the .env file configured and the app built and run via Flutter, you can now successfully use the Lemonade Flutter app.
The debug.keystore is a crucial file required for Android app development and debugging in Flutter projects. To ensure security, this file should not be publicly shared or included in version control.
If you need access to the debug.keystore for this project, please contact the engineering team responsible for project management. They will provide you with the necessary file for your development purposes.
After obtaining the debug.keystore, move the file to the `android/app`` folder of your Flutter project. This location is where the Android build process expects to find the debug.keystore for signing the app during development and debugging. Placing it there will enable a seamless build process for your Flutter project on Android.
Appcast, in this Flutter package, is used by the upgrader widgets to download app details from an appcast, based on the Sparkle framework by Andy Matuschak. You can read the Sparkle documentation here: https://sparkle-project.org/documentation/publishing/.
An appcast is an RSS feed with one channel that has a collection of items that each describe one app version. The appcast will describe each app version and will provide the latest app version to upgrader that indicates when an upgrade should be recommended.
- Staging : appcast_staging.xml
- Production : appcast.xml
Uncomment this one to force update app version
<!-- Force update version -->
<!-- <sparkle:tags> <sparkle:criticalUpdate /> </sparkle:tags> -->- In order to test payment with Stripe properly, you can use one of the demo card provided by Stripe. The card list can be found here
rm -rf ~/.gnupg/*.lock
rm -rf ~/.gnupg/public-keys.d/*.lock
Lemonade Social App is a comprehensive Flutter-based social networking platform that combines traditional social features with Web3 capabilities. Version 2.8.0 supports iOS, Android, and Web platforms, built using Clean Architecture patterns with BLoC state management.
- Posts & Newsfeed: Create and share text/media posts with community
- User Profiles: Complete profile management with photos, bio, social handles
- Social Connections: Follow/unfollow users, friend requests, blocking functionality
- Content Discovery: Discover trending posts, users, and content
- Event Creation: Support for virtual, offline, and hybrid events
- Event Ticketing: Integrated ticketing system with payment processing
- RSVP System: Event registration and attendance tracking
- POAP Integration: Turn event tickets into digital collectibles
- Event Discovery: Browse and discover local and virtual events
- Matrix-based Chat: Real-time messaging using Matrix protocol (deprecated)
- Rooms & Guilds: Create private/public chat rooms and communities (deprecated)
- Community Spaces: Organized spaces with membership management (deprecated)
- Direct Messaging: One-on-one private conversations (deprecated)
- Wallet Connectivity: Support for multiple crypto wallets via WalletConnect
- Lens Protocol: Integration with Lens social protocol
- Farcaster: Connect and interact with Farcaster network (deprecated)
- NFT Support: Display and manage NFT collections
- Token Gating: Access control based on token ownership
- Quest System: Complete tasks to earn rewards
- Token Rewards: Earn tokens for various activities
- Points Tracking: Comprehensive point system for user engagement
- Achievements: Badge system for user accomplishments
- AI Chat Assistant: Integrated AI for content creation and assistance
- Smart Content Creation: AI-powered post and event creation helpers
- Stripe Integration: Secure payment processing
- Crypto Payments: Support for cryptocurrency transactions
- Vault System: Secure wallet management (deprecated)
lemonade-flutter-refactor/
βββ android/ # Android platform configuration
βββ ios/ # iOS platform configuration
βββ web/ # Web platform assets
βββ windows/ # Windows platform support
βββ linux/ # Linux platform support
βββ macos/ # macOS platform support
βββ assets/ # Static assets (fonts, icons, images)
βββ lib/ # Main Flutter application code
βββ test/ # Unit and widget tests
βββ scripts/ # Build and deployment scripts
βββ docs/ # Documentation
βββ packages/ # Custom packages
app.dart- Main app widget with providers and routing setupmain_*.dart- Environment-specific entry points (development, staging, production)
Business logic and use cases organized by domain:
auth/- Authentication and user session managementevent/- Event creation, management, and discovery (39 subdirectories)chat/- Real-time messaging and communicationprofile/- User profile managementpayment/- Payment processing and transactionswallet/- Cryptocurrency wallet integrationlens/- Lens Protocol integrationfarcaster/- Farcaster network integrationnotification/- Push and in-app notificationsquest/- Gamification and reward systemspace/- Community space managementtoken/- Token and NFT handlingvault/- Secure storage managementnewsfeed/- Social feed functionalitypost/- Content creation and sharing
Business entities and repository interfaces:
- Defines core business entities for each domain
- Repository interfaces for data access
- Business rules and domain logic
Data access and external service integration:
- Repository implementations
- Data transfer objects (DTOs)
- External API clients
External service integrations:
- Firebase services
- Matrix chat service
- Wallet connectivity
- OAuth providers
- Lens and Farcaster APIs
UI components and utilities:
- Reusable widgets
- Page layouts
- Utility functions
backend/- Main backend API operationslens/- Lens Protocol GraphQL operationsfarcaster_airstack/- Farcaster data operationsai/- AI service operationscubejs/- Analytics operations
Multi-language support with domain-specific translations:
auth/,chat/,event/,profile/, etc.- JSON-based translation files
- Dynamic language switching
app_router.dart- Main routing configuration- Feature-specific route definitions
- Deep linking support
- Color schemes and palettes
- Typography definitions
- Dark/light theme support
- Dynamic theming
- Service registration and dependency management
- Modular architecture support
.env,.env.staging,.env.production- Environment variables- Multi-environment build support
- Feature flags and configuration
- Separation of Concerns: Clear boundaries between layers
- Dependency Inversion: Dependencies point inward toward business logic
- Testability: Each layer can be tested independently
- BLoC Pattern: Business Logic Components for state management
- Event-driven: Reactive programming with streams
- Global State: Authentication, connectivity, wallet state
UI β BLoC β Repository β Service β External APIs
- Freezed: Immutable data classes and unions
- JSON Serialization: Automatic JSON parsing
- GraphQL Code Generation: Type-safe API operations
- Build Runner: Automated code generation
- Development: Local development with debug features
- Staging: Testing environment with production-like setup
- Production: Live environment with optimizations
- CI/CD Pipeline: Automated building and testing
- Flavor-based Builds: Different configurations per environment
- Code Push: Over-the-air updates via Shorebird
- Flutter 3.24.1 with Dart 3.5.1
- Material Design with custom theming
- Auto Route for navigation
- Flutter BLoC for state management
- GraphQL for API communication
- Matrix Protocol for real-time chat
- Firebase for push notifications and analytics
- Stripe for payment processing
- WalletConnect for wallet integration
- Lens Protocol for decentralized social
- Farcaster for social networking
- Web3Dart for blockchain interactions
- Injectable/GetIt for dependency injection
- Freezed for immutable classes
- Sentry for crash reporting
- Flutter Gen for asset generation
- iOS: Native iOS app with platform-specific features
- Android: Native Android app with material design
- Flutter 3.24.1 (managed via FVM)
- Environment configuration files (.env)
- Platform-specific setup (Android Studio, Xcode)
# Code generation
./build_runner.sh
# Internationalization
./gen_i18n.sh
# Run specific environments
fvm flutter run --flavor staging --target lib/main_staging.dart
fvm flutter run --flavor production --target lib/main_production.dart- 39 Event-related modules - Comprehensive event management
- 17 Event ticketing modules - Advanced ticketing system
- 300+ SVG icons - Rich iconography
- Multi-language support - Global accessibility
- Real-time communication - Matrix-based messaging
- Web3 ready - Full cryptocurrency integration
This documentation provides a high-level overview of the Lemonade Social App architecture and functionality. For detailed implementation guidelines, refer to the individual module documentation and code comments.