Amazing Reddit clone - A network of communities where people can dive into their interests, hobbies and passions.
- A Social Network for Communities and Groups - Reddit is a network of communities based on people's interests. Find communities you're interested in, and become part of an online community!
It is the Software Course' project in Faculty of Engineering, Cairo University.
The project aims to design and implement a software product using state-of-the-art tools and technologies in the software industry.
pagination
Responsive
There is a service to mimic the back-end responses (with fake data) to work without the back-end whenever needed.
Alternating between the real and the mimic back-end is very smooth as we change one variable only.
Separation of responsibilities & Smooth Integration.
Using package managers.
Single Responsibility Principle [SRP]
Separation of Duties [SoD].
DRY Principle [Don’t Repeat Yourself]
Commenting.
Formatting and Linting.
Naming Convention.
Unit Testing.
Task Management.
Authentication & Authorization.
Divide system into multiple modules.
Flutter
dartdoc package in flutter
Documentation files are in doc folder
flutter_test Package for unit testing
test_cov_console Package for test coverage report
We did unit testing for Logic functions in the Controllers files
Testing codes are in test folder
Each controller's functions test is in a separate file in this folder
Resources explain using this packages in Unit testing:
Formatting Tool:
VsCode formatting tool
Linting:
Dart_Linting rules
flutter_code_style package
https://dart.dev/guides/language/effective-dart/style
https://dart.dev/tools/linter-rules
https://pub.dev/packages/dart_style
https://pub.dev/packages/flutter_code_style/score
sign up by Email
sign up by Gmail
sign up by Facebook
Forget password
Forget username
Fire bsed used in Google and Face Authentication to handle Token
Choose your interest, profile picture, gender, username when you first sign up in Reddit
Saving login Status in shared prefrence to be kept loged in
RESTful API that sends and receives data in JSON format.
Used Technologies in requests: HTTP & DIO
MVC+S architecture
M stands for models
V stands for views
C stands for controllers
S stands for services
Resources for MVC+S in flutter:
Models are data classes.
Each Functionality has a file for its model.
Each model file contains lists for mock data and lists for real data.
Views are all the Widgets and Pages within the Flutter Application.
It divides into two folders:
1-Screens:
This folder contains a folder for each functionality in the Reddit App.
The folder for each functionality contains the Screens of this functionality
2-Widgets:
This folder contains a folder for each functionality in the Reddit App.
The folder for each functionality contains the Widgets used in the screens of this functionality
The controller layer is high-level functions that perform a specific type of task.
State management logic goes in here.
We used Providers for state management
Contains Two types of controllers:
1-UI controllers that has the logic that deals with UI layer and update app state according to user interactions.
2-controllers thet typically fetch from services and inject them into models and that way they control and update app state.
Services fetch data from the outside world and return it to the app. Commands call on services and inject the results into the model. Services do not touch the model directly.
Whatever data that comes into our APP must have to be from here. It is connecting with REST API.
There is a file for each functionality service.
Team Leader:
Flutter Developers:
DevOps: