Our Complete Tech Stack is available here: https://stackshare.io/orbit-technology-as/orbit-technology
Architectural overview of the system, its parts and their interactions + why we chose this particular stack?
PHP Laravel backend running on AWS Lambda through Laravel Vapor with RDS database. Frontend is a React native build to cross platform. We went with the backend to speed up building during the early stage as it enabled us to go fast due to framework capabilities and our experience with it. React native is a natural choice to allow limited resources to deploy cross platform without independent team working in native.
Laravel was decided on as the team has long experience with this and it would be the most efficient framework to work with especially on the MVP phase of the project.
Frontend (apps) - React Native was an easy choice as we were (and still are) a small team and having a shared codebase between android and ios (With only minor tweaks to each platform) was necessary. Two of the team members already had experience with RN with one of them having work on RN for the past 3-4 years. The ones who did not already have experience with RN had experience with React so onboarding them to RN would not be too hard.
While we dont expect real scale challenges in the short term, we are set up for this through the way we use AWS Lamba. We are hosting images on AWS S3 as well. Other services we integrate to facilitate insight are Postmark, Bugsnag and Intercom. We also send notifications through Twilio and Pusher.
Development is managed through Clubhouse for ticketing, connected to a GitHub where we host our private repos. GitHub actions runs tests on PRs. While we manually trigger deployments at the moment, it is as simple as a single cli command. To trigger this as an automatic effect of a new tag etc is ofc trivial, but at the moment we like the control.
How are we approaching mobile development and publishing?
Typical workflow for a new mobile feature:
JSLint and prettier hooked up on pre-commit. There are also unit tests for some more important parts of the app, but currently no e2e tests yet. E2e with detox is on the roadmap and eventually all this will be put into a CI/CD pipe(AppCenter as we already use code push and have started setting up the CI/CD pipe but never got around to finishing it).