Main Ingredients for Starting a New Android Native Project (Checklist)
Tags: android, androiddev, malaysia, androidappdevelopm
Published: 2020-03-25 03:43:35

---
title: Main Ingredients for Starting a New Android Native Project (Checklist)
published: true
tags: android,androiddev,malaysia,android-app-developm
canonical_url: https://medium.com/@staceypyee/main-ingredients-for-starting-a-new-android-native-project-checklist-8f4f99335b31
---

[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

![](https://cdn-images-1.medium.com/max/1024/1*6GY_k3x00WokOiYPxUdyOA.jpeg)<figcaption>Nasi Lemak, famous all-time cuisine (breakfast, lunch or even dinner) for Malaysian</figcaption>

[**_Nasi lemak_** (literally means oily or fatty rice in Malay language)](https://en.wikipedia.org/wiki/Nasi_lemak)\*, a well-known all-time [Malaysian cuisine](https://en.wikipedia.org/wiki/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.

[Nasi lemak - Wikipedia](https://en.wikipedia.org/wiki/Nasi_lemak)

#### Basic Ingredients of Nasi Lemak

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
- Egg
- [Ikan bilis](https://en.wikipedia.org/wiki/Anchovies_as_food#Uses) (which means anchovies in Malay language)
- Fried peanut
- Sambal (Chili paste, normally with different recipes)

#### [Variation of Nasi Lemak](https://en.wikipedia.org/wiki/Nasi_lemak#Variations)

**_Nasi Lemak_** is mentioned as a traditional Malay dish. As a result of the historical [migrations](https://en.wikipedia.org/wiki/Demographics_of_Malaysia#Non-Bumiputras), [colonisations](https://en.wikipedia.org/wiki/Malaysia#History), [multiracial and multicultural](https://en.wikipedia.org/wiki/Demographics_of_Malaysia) environment of Malaysia, **_Nasi Lemak_** now comes in many [variations](https://en.wikipedia.org/wiki/Nasi_lemak#Variations).

![](https://cdn-images-1.medium.com/max/800/1*2rUpEaNGfbCWId_lKQjhfQ.jpeg)<figcaption>Photo source: <a href="http://amazingalorsetar.com/en/food/restaurant/nasi-lemak-ong-1">http://amazingalorsetar.com/en/food/restaurant/nasi-lemak-ong-1</a></figcaption>

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)

and EVEN…

**_LOBSTER!!_** _to their very basic_ **_Nasi Lemak._**

The price varies depending on customer’s selection.

![](https://cdn-images-1.medium.com/max/1024/1*GDg_Xrnb42FAKr68jcGl3g.jpeg)<figcaption>Nasi Lemak Lobster, photo from <a href="https://www.misstamchiak.com/lawa-bintang/">https://www.misstamchiak.com/lawa-bintang/</a></figcaption>

![](https://cdn-images-1.medium.com/max/1024/0*6mdi7UUAMamZWrdB.)<figcaption>Photo by <a href="https://unsplash.com/@benkolde?utm_source=medium&amp;utm_medium=referral">Ben Kolde</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption>

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**.

![](https://cdn-images-1.medium.com/max/1024/0*yVgLDZ1OkOnxjdqs.)<figcaption>Photo by <a href="https://unsplash.com/@firmbee?utm_source=medium&amp;utm_medium=referral">William Iven</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption>

### Fundamental / Basic of Android App

#### (A) App Settings

- **Programming language selection**  
[Kotlin](https://kotlinlang.org/)\* or Java?   
Personally, I would prefer to have **_Kotlin. Why? let’s see my post posted earlier_**

[The Road Not Taken? — Kotlin or Java](https://dev.to/staceypyee/the-road-not-taken--kotlin-or-java--38j8)

_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**
- **Permissions**
- **Backward compatibility (Android X)**

**(B) View / Design**

- Style
- Icons and Assets (Prototype), icons, font,   
color code: primary, accent…..
- Data binding
- Placeholder
- 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)**

**(F) Analytics**

- Crashlytics/ Fabric
- Google Analytics

(G) Third- party libraries

- Photo loading library

(H) Design Pattern and App Architecture

Life cycle (low memory etc)

Architecture/ Skeleton

MVC

Activity / Fragment

### Add - Ons

(1) **API**

- API call (Postman/ Paws)
- Mock data
- \* API written by third party/client — Are the values and return value legit

(2) Data Storage Option

- OrmLite
- greenDao
- LiveRoom etc

(3) Other features

- Authentication (Facebook etc)
- Push Notifications
- Location based feature

![](https://cdn-images-1.medium.com/max/1024/0*1yplJq_Im1gocsf8.)<figcaption>Photo by <a href="https://unsplash.com/@jonko?utm_source=medium&amp;utm_medium=referral">Jonathan Körner</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption>

> 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.

**_Happy exploring!_**