Cato TV is your one-stop destination for short-form videos that focus on education. We re-designed your existing social media feeds with the best 0.1% of the knowledge from the best teachers and leaders that has 90% of the value on the internet.
Cato TV is a flagship product from catoverse.
This project leverages Flutter framework to build natively compiled applications for android and iOS.
- Clone this repo to your local machine
git clone https://github.com/catoverse/flutter_cato_feed.git
- Drag this folder into your Visual Studio code editor to open a workspace
- Get required pub packages
flutter packages get
- Add
.env
with the following fieldsNO_KEY=nothing GRAPHQL_API_URL=https://api.cato.tv/graphql
- Start developing
The current architecture is based on MVVM pattern. This architecture consists of only three parts
- Views — UI on top closest to the user
- ViewModels — acts as interface between Views and Services
- Services are
- actual functionality required for business logic
- wrappers around external functionality such as Database, Filestorage, Network
Here's why we chose MVVM over other alternatives
- Business logic separation from UI even at complex scenarios
- Automatic code generation with
stacked_generator
- 100% Test coverage
I've been playing around with folder structure and the below is what I ended up with.
app
— It is where we register dependencies and routes- Routes are registered with
auto_route
- Dependencies are injected with
get_it
- Routes are registered with
ui
— contains all the routes that your app navigates toview
— UI code with group of widgetsviewmodel
— contains the business logic needed.
core
— this folder contains all of our app's main piecesservices
— services required for your usermodels
— data models that our app uses- misc
constants
exceptions
— custom exceptions for error handlingenums
— custom datatypesmixins
— repeated logic can be wrapped insidemixins
and can be re-used
remote
— contains all the network related functionalityfirebase
— services related to Firebase
Contributions are very welcome! See our CONTRIBUTING.md for more information.
Cato TV is an open source project and we value and welcome new contributors and members of the community. Here are ways to get in touch with the community:
- Slack
- Github Issue Tracker