Scalable and secure systems

for mobile development

Prototype your 1b$ mobile app now!

Mobile Development

How do you define a great mobile application?

A great mobile application, is defined by the following:

Scalable

Available 24/7

Debuggable

Customizable

Testable

Understandable

Flexible

In order to reach all of the above, we needed to create a great process of development, and to use our bleeding edge technologies.

Organizational Process Management

Prephase

This phase is the start of the process. Meetings with the clients to understand the requirements, functionalities, and scope of the project is the first thing that happens. After that, the product owner starts drafting up the Software Requirements Specification (SRS) document accordingly where all the features and functionalities about the system are written. Parallel to the product owner working on the SRS, the graphic designers start working on the design screens according to the system planned by the product owner and the information provided by the client. Once the SRS is planned from a business perspective, UML diagrams explaining the flow of the whole application are done. Also, a document that contains all the fields in the application then is used to draw up ERD and EERD. All of the previously mentioned deliverables are of course subject to feedback and iteration.

Planning

The 2nd phase of the process is to do the software architecture which is the technical planning of the application. All the documents done in the pre-phase are used in this phase to guide the technical decisions and planning. After the software architecture is done, tasks, stories and epics are written in the form of technical cards and a timeline sprints document is drafted accordingly which shows the deliverables per sprint and the date range of each sprint down to the day.

Development

After planning all the sprints (epics, stories, and tasks) with the team leaders. The backend team begins by taking tasks from the sprint. While the frontend team and mobile teams begin by establishing a JSON server then take tasks. All the technologies have been mentioned in the Backend and Frontend sections.

CI/CD

It is an automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration and continuous delivery. When a developer tries to merge themselves with the main branch it has to go through Jenkins that runs multiple checks. At the WebOps we use checks like • RubyCritic: provide a quality report for the code cleanness • Rubocop: code style checker and reformatter based on the ruby style guide • Bullet: watches over queries while making sure that they are efficient • Active Records Doctor: helps to keep the database in a good shape and can index unindexed foreign keys • Cypress: javaScript end-to-end testing framework. It is an all-in-one solution that enables both writing and executing tests • Rspec: testing tool created for behavior-driven development

Review

This phase is only reached after the developer passes the CI/CD checks. Two developers review the code and write comments regarding the architecture/logic for improvements. Until the code has no further comments it keeps going back to the development phase.

Multiple Environments

We use multiple environments to ensure that our software is extensively tested before it is deployed and made available to users. It consists of three environments. First, the development environment, where developers deploy their code and review it. Second, the staging environment where Quality Assurance (QA) is conducted by internal testers. They run multiple test cases to detect any bugs and run performance tests. Finally, production environment where it is made available to end-users.

Internal Testing

Testing made by both the product owner and the testers. Where the product owner makes sure that the project is following the business requirements while testers do the manual testing to make sure that the technical requirements are met.

External Testing

Usually called User Acceptance Testing (UAT). Where the end-users test the software to make sure it can handle required tasks in real-world scenarios. In other words, it is the final point before deployment on the production server. Where the beta testers

Take the lead

Expand your Business