Académique Documents
Professionnel Documents
Culture Documents
Created By:
Umair Mirza | Product Strategist
E: umair@silicongraphics.ae
| C: 971 – 586 – 121494
W: silicongraphics.ae
App Architecture
API
The API will be integral to the remote storage of data across the app. As it may be common for
a user to use the app on multiple platforms, it will be important to have a persistent storage of
data for each user. Using the API will also help decouple our infrastructure and allow us to scale
when necessary.
The API being built will follow a REST pattern and will be authenticated through an Oauth2
system that will require a token passed through the header of each call. Ideally the API will act
as a way to store progress through the app and tie it to the user profile. The app itself will
contain the majority of the assets and architecture for maximum offline play while the API will
help point the user to their current progress in the app. This progress will include pieces such as:
Gamification Elements
Accomplishments
My recommendation for an initial API is the Django Rest Framework. This Python framework has all
the required pieces needed to build the API, including an Oauth2 authorization system,
generated API documentation, a robust permissions system, and the Django Admin Panel for
manual modification to data. This will then be deployed on a Managed Rackspace or Amazon
AWS Ubuntu server using Nginx, MariaDB or PostgreSQL, and uWSGI
APP
The app serves as the focal point of the ecosystem and serves to create the best user experience.
In comparison, a web app would not have the "native" feel that helps immerse the user and
creates the highest quality experience.
For the MVP we are building an Android and iOS native app that runs on both phones and
tablets. The app will contain the majority/all of the graphical assets, text, and audio to provide
the fastest and most streamlined experience. Due to game like nature of the app and the
interest in expanding the app to include full-fledged games and more complex exercises, we
would recommend using a 2D game engine to support the interaction and interface. There are
many options for 2D game engines but here are our recommendations with pros and cons:
3D and 2D game
framework for almost
all platforms
Supports compiling
to anything from
desktop to mobile
Optimized with Java
Considered one of
the top tier game
engines
Optimized with C#
With all of this in mind we would suggest Cocos2d-x for the best open source option
and Unity for the best proprietary solution.
Deployment
We will be using Apple's Test Flight for our apple devices and the Play Store beta
program for our Android devices. Both of these tools allow us to distribute the app
over the air to a select group of people.
Local Storage
Local Storage provides a layer in between our API and our App in storing and
queueing app progress. This allows for seamless progress whether the user is online or
offline and it ensures data is always correctly stored on the API layer. To avoid data
becoming stale between the remote database and the local store, data will be
stored and sent during certain "save" points throughout the app. If the app fails to
send the data, it will set an "unsaved" flag that will force a sync at the next save point.
We recommend using Core Data built into iOS and SQLlite on Android, which allows
us to build data models for our users that can be serialized and sent to the API.
1
Silicon
Graphics
Architecture Diagram
Amazon AWS
Ubuntu/Nginx
2
Silicon
Graphics
Our Client
3
Silicon
Graphics
Thank You
Umair Mirza
Product Strategist
P: 971-568121494
E: umair@silicongraphics.ae
W:silicongraphics.ae
4
Silicon
Graphics