In this showcase we explain the major development steps in the creation process of a simple to use smartphone app.
This includes how to document requirements right, design and deploy a simple but scalable and secure cloud architecture and the importance of incrementally optimising user screens.
FINDING USER VALUE
A need for simply sharing a consultant's future on-site times with his multiple clients for meeting coordination and staff availability planning was discovered.
The solution should be a simple to use app. It was important to make the shared data flexibly available with no need for any software account and no email address for recipients. Furthermore, subscriptions to changes and new timings should be possible to reduce the number of people that needed to be informed.
Finally, the idea was challenged in different environments and use cases clarified. In the end, we had a clear vision of how users with different needs in very different environments could still be working in a standardised way in just one work flow.
The results of the requirements gathering work package were documented in Atlassian Jira for simple further processing. Products and apps built on top of the Jira platform help teams plan, assign, track, report and manage work. In short, Jira brings teams together for easy collaboration when developing software agilely or supporting customers.
Then the product owner filled the backlog with user stories and then supported the development team prioritising and grouping by feature. In the end, the self organised development team did a planning poker for estimates and split the backlog into multiple sprints allowing for a rough forecast.
DEFINING MVP RIGHT
A minimum viable product (MVP) is a concept from Lean that stresses the impact of learning in new product development. Eric Ries defined an MVP as that version of a new product which allows a team to collect the maximum amount of validated learning about customers with the least effort.
In the end it is a very reduced version of our findings still delivering the proposed value to a user. It can be extended to any further use case if required.
AND USER INTERFACE
The following pictures show steps from the first sketched idea through the design and usability improvements we made, before we actually implemented the first line of code.
Besides this, we think the default Apple date and time selector wheel is inefficient and not state of the art usability, especially in a calendar environment with many choices.
Thus, we started a project to optimise it and designed our own date and time picker. We think, we actually got a very good result and therefore made it available on GitHub for others to use in their development projects too.
DESIGNING WEB ARCHITECTURE
We decided for a micro service architecture in combination with industry approved libraries. This enables easy scaling of connection points depending on load changes. Furthermore, hosting the architecture on premise is equally possible as running it in a native cloud environment.
For security, the application architecture is designed to separate components from each other into different layers. We follow the SUN recommended 5-tier model because it is a good guideline.
MODERN TECHNOLOGY STACK
A reverse proxy / load balancer that's easy, dynamic, automatic, fast, full-featured, open source, production proven, provides metrics, and integrates with every major cluster technology.
Keycloak is an open source Identity and Access Management solution aimed at modern applications and services. It makes it easy to secure applications and services with little to no code. It includes single-sign-on and social login possibilities out of the box.
nginx [engine x] is the best-in-class web server solution (web and application server) used by many high-traffic websites. nginx runs on more than 400 million sites. It served or proxied about 25.42% of the busiest global sites in July 2019.
Consul provides a registry of all the running nodes and services, along with their current health status. This allows operators to understand the environment, and applications and automation tools to interact with dynamic infrastructure.
Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications. Spring provides production-ready features such as metrics, health checks and externalised configuration.
Angular is a modern, open source front end web application framework, one way to build applications and to reuse code and abilities to build apps for any deployment target. For web, mobile web, native mobile and native desktop.
Ionic Framework is an open source UI toolkit for building cross platform, performant, high-quality mobile and desktop apps using web technologies.
DEPLOYING INTO THE CLOUD
As we utilise native cloud for quite a while and prefer it over virtualised infrastructure or on-premise hosting, we decided to deploy this project into AWS. Automated continuous deployment is achieved by utilising GitLab CI pipelines.
HOW IT LOOKS
toldu offers secure, technology independent, access to shared calendar entries and calendar category subscriptions for everyone. So, the sharing of calendar entries with anyone having no email address or online account becomes simple.
We're interested in your feedback. Please feel free to download the app and review, it's free.