Ripple is a modern Flutter social application built with a strong focus on clean architecture, scalability, and production-ready patterns. The project is designed to reflect real-world application structure rather than a tutorial-style implementation, making it suitable for long-term growth and maintenance.
Ripple demonstrates how to build a social platform using Flutter, Firebase, and OneSignal while keeping the codebase modular, readable, and easy to evolve.
- 🧠 Clean & Scalable Architecture inspired by Clean Architecture principles
- 🔄 Predictable state management using BLoC
- 🔔 Real-time push notifications using OneSignal
- 🌍 Multi-language support (Arabic & English)
- 🧩 Modular feature-based structure
- 🚀 Built as a real product, not a demo
-
Onboarding Smooth introduction experience for first-time users.
-
User Authentication Secure login and registration using Firebase Authentication.
-
Profile Management View and edit user profiles, including profile and cover images.
-
Home Feed A dynamic feed displaying user-generated posts.
-
Posts Interaction Like and comment on posts in real time.
-
Follow System Follow and unfollow users with instant updates.
-
Settings Manage application preferences such as language and theme.
-
Push Notifications Real-time notifications for:
- Likes ❤️
- Comments 💬
- Follows 👤 Powered by OneSignal.
Ripple follows Clean Architecture concepts to enforce separation of concerns and improve maintainability.
-
Location:
lib/features/*/presentation/ -
Responsibility:
- UI screens and widgets
- User interaction handling
- State management
-
State Management:
- Uses BLoC (flutter_bloc) for predictable and testable state handling
-
Location:
lib/core/ -
Contains:
di→ Dependency Injection using get_ittheme→ Colors, typography, and UI stylesutils→ Helpers, constants, extensionsmodels→ Shared data modelsnetwork→ Repositories & services (Firebase, OneSignal)
Note: The domain and data responsibilities are logically separated and implemented within the core and feature layers to keep the project pragmatic and flexible.
Ripple uses OneSignal for push notifications.
- ❤️ Like notifications
- 💬 Comment notifications
- 👤 Follow notifications
- Triggered from client-side events
- Linked using
external_user_id - Payload-based navigation handling
- Language-aware notifications (Arabic / English)
- Supports Arabic and English
- Language preference is stored per user
- Notifications respect the selected app language
- Flutter
- Dart
- bloc
- flutter_bloc
- firebase_core
- firebase_auth
- cloud_firestore
- onesignal_flutter
- http
- image_picker
- cached_network_image
- shared_preferences
- intl
- get_it
- flutter_launcher_icons
- flutter_native_splash
| Home Feed | Profile | Comments |
|---|---|---|
![]() |
![]() |
![]() |
- Flutter SDK
- Android Studio or VS Code
- Firebase project configured
- OneSignal account
-
Clone the repository
git clone https://github.com/OmarShawkey13/ripple.git
-
Navigate to the project directory
cd ripple -
Install dependencies
flutter pub get
-
Configure Firebase
- Add
google-services.jsonfor Android
- Add
-
Configure OneSignal
- Add your OneSignal App ID
- Set up notification icons
-
Run the app
flutter run
- This project is actively evolving
- Architecture decisions favor scalability over simplicity
- Designed to be easily extended with backend services or cloud functions
Omar Shawkey Flutter Developer
If you like this project, consider giving it a ⭐ on GitHub — it helps a lot!


