π Tech Stack
- Frontend
- Backend
Frontend
- Flutter 3.22.0 and Dart 3.4.0 for mobile and web development.
ποΈ Architecture Overviewβ
| Component | Technology |
|---|---|
| Frontend Mobile & Web | π±π» Flutter |
π Detailed Stackβ
- Framework: Flutter 3.22.0
- Language: Dart 3.4.0
- Platforms: π± Mobile (iOS, Android & Web) and π» Desktop (Browser & PWA)
We are in the middle of a transition, the old code connects to the BackBone CMS API and the new code connects to our own API. Be sure to chnage any models you create or move from the old repo.
What we have now
Always update with possible, if a conflict arises it should be discussed with the team. Once an update is comple, the documentation should be updates as well.
- Flutter 3.22.0
- Dart 3.4.0
- Provider
- API to backend
See a list of all Dependencies
Transitionβ
We are currently in a transition phase, you are either creating new code or moving over widget by widget from the old code. Here are some things to keep in mide, things we do not want to repeat in the new codebase
- Caching: The old codebase has no caching at all, we want to fix that in the new codebase.
- Small Files: In the old code base files are very large, in the new code base, we should make widgets very small.
- Clean Structure: Keep the code, clean, simple and full of comments.
- Breakpoints: In the new codebase we want to remove any platform specific code and replace it with breakpoints unless we have a feature that should absolutely only work on a set platform (e.g. remote reciver for smart TVs or remote controls via smart watchs, etc.).
- Responsive: While the breakpoints determines the layout, we should make things further responsive within each breakpoint by reducing or increasing sizes such as font, image, etc.
Backend
- Laravel 10.23.1, PHP 8.2, MySQL 8.0.39, and Apache 2.4.52 for the backend.
ποΈ Architecture Overviewβ
| Component | Technology |
|---|---|
| Backend | π₯οΈ Dart |
| Database | ποΈ noSQL on Firestore |
| Server | GCP Cloud Run |
Backendβ
- Framework: Laravel 10.23.1
- Language: PHP 8.2
- Database: MySQL 8.0.39
- Web Server: Apache 2.4.52
π’ Infrastructure Architecture
- VPS Specs: 4 vCPU Cores, 6 GB RAM, 400 GB SSD.
- Ubuntu Linux 22.04.1 with Virtualmin as the control panel.
π§ Infrastructure Componentsβ
| Component | Details |
|---|---|
| Server | π₯οΈ VPS |
| Control Panel | ποΈ Virtualmin |
π¬ Detailed Infrastructureβ
Serverβ
- Type: π₯οΈ VPS
- 4 vCPU Cores
- 6 GB RAM
- 400 GB SSD
- Operating System: Ubuntu Linux 22.04.1
- Control Panel: Virtualmin
Goals
Getting to our aideal teach stack will be a five step process, starting with cost and performace improvments and ending with a state of the art infrastructure.
For frontend development we will utilize the Flutter framework, which uses the Dart programming language. We will utilize Provider for state management.
Google Cloud Platform will be used for the server Firebase has many tools that we can use to ensure that the data is safe and our team knows how to make it as safe as possible.
Everything
- Phase One
- Phase Two
- Phase Three
- Phase Four
- Phase Five
Goals for Phase Oneβ
-
Unify web and mobile views
-
Split out widgets into it's independant files
-
add more features
Transition Phase One
- Refactor
- Create many smaller widgets Phase Three | Step 2 Phase Four | Step 3
- Move as much as possible into a package
- Separate package development
- Separate into independent βmini appβ
- Connect with U Content API
k
k
k
Final result Panel/transition What we have now
- Single app
- The panel is hosted on VPS Specs: 4 vCPU Cores, 6 GB RAM, 400 GB SSD.
- Ubuntu Linux 22.04.1 with Virtualmin as the control panel.
- The panel shares a server with the database and control panel backend Step 1
- Separate javascript (maybe we skip)
- hosing to firebase Step 2
- make all admin feature avalible in the api
- Develop publisher Step 3 -Delete panel -Final result -We will be using Flutter for frontend development with Provider as the state management. Dart as the programming language,
Hostingβ
Our web version will be hosting on Firebase Hosting
Backendβ
Phase One | What we have nowβ
- To start we will utilize only APIs for all functionality along with node.js to pull its data into our own database and from there connect with our client app. Laravel 10.23.1, PHP 8.2, MySQL 8.0.39, and Apache 2.4.52 for the backend. At the moment the backend has direct access to the database, there is no api for data handling. The backend is hosted on VPS Specs: 4 vCPU Cores, 6 GB RAM, 400 GB SSD. The backend shares a server with the database and control panel Phase Two | Transition Step 1 Use new API,
Phase Three | Step 2β
Refactor (create smaller functions) make functions βmicro functionsβ, We will move any functionality we can into micro-functions and host them in firebase or google cloud. move to new server/cloud functions, integrate to API/new API
Step 3β
- Change functions from PHP to Node.JS
- Separate the content functions from the rest
- create a separate backend
- Build our own backend
- Remove as many third party dependencies and - switch to our own products such as U Commerce, etc.
Final resultβ
new