[Initial publish date: 20 Sept 2018]
P/S: This post has been delayed from time to time. It’s better to have an ugly baby at first, to be edited from time to time
You may jump to *Fundamental / Basic of Android App * straight
Nasi lemak (literally means oily or fatty rice in Malay language)*, a well-known all-time Malaysian cuisine with price ranged from RM2 (You probably can get it with a lower price at kampung, which means village in Malay language) to RM80 per serving , based on its ingredients, specialities and the location of selling it.
In order for a dish to be called as Nasi Lemak , it MUST consists of :
- Fragrance rice cooked with coconut milk and Pandan leaves
- Cucumber slices
- Ikan bilis (which means anchovies in Malay language)
- Fried peanut
- Sambal (Chili paste, normally with different recipes)
Nasi Lemak is mentioned as a traditional Malay dish. As a result of the historical migrations, colonisations, multiracial and multicultural environment of Malaysia, Nasi Lemak now comes in many variations.
Most of the Nasi Lemak stalls come with their very own Sambal recipes, specialities or additional dishes for the customer to add on.
Customer can always choose to add chicken, fish, beef, mutton, seafood, sotong (squid in Malay language)
LOBSTER!! to their very basic Nasi Lemak.
The price varies depending on customer’s selection.
Similarly, building an Android app from stretch is like cooking Nasi Lemak with the basic ingredients.
A developer can always customise and add features to the app to make it special and unique.
Let’s take a look on what we shall take into considerations while building an Andorid app from scratch.
- Programming language selection Kotlin* or Java? Personally, I would prefer to have Kotlin. Why? let’s see my post posted earlier
P/S: * Developer can make a decision based on project timeline, familiarity to the language, further technical supports from third party (eg: client SDK)
- Package name and app name
- Build target and backward compatibility
- Gradle (configuration and dependencies)
- Screen Orientation
- Backward compatibility (Android X)
(B) View / Design
- Icons and Assets (Prototype), icons, font, color code: primary, accent…..
- Data binding
- Keyboard interaction
- Input Validation
(C) App Flow / Navigation
How would these affects the code architecture
- Drawer Navigation
- Bottom Navigation
- Up Navigation
(D) Internet Connections
- Offline state — What to be displayed and how shall we handle
(E) Default Error Messages (Error and Exceptions)
- Crashlytics/ Fabric
- Google Analytics
(G) Third- party libraries
- Photo loading library
(H) Design Pattern and App Architecture
Life cycle (low memory etc)
Activity / Fragment
- API call (Postman/ Paws)
- Mock data
- * API written by third party/client — Are the values and return value legit
(2) Data Storage Option
- LiveRoom etc
(3) Other features
- Authentication (Facebook etc)
- Push Notifications
- Location based feature
Rome was not built in a day
It is always okay to have an ugly baby at first, and we build, improve, beautify on top of that.