နားလည်ထားရမယ့် အချက်
ဒီကုန်သင်ရိုးရဲ့ အခန်းတိုင်းက မတူညီတဲ့ မေးခွန်းအမျိုးအစားတစ်ခုစီကို ဖြေဆိုပေးထားပါတယ်။ ဒီအခန်းတွေကို ပေါင်းစပ်ကြည့်ရင် သီးခြားစီ အလွတ်ကျက်ဖို့ ရည်ရွယ်ထားတာမဟုတ်ပါဘူး - တကယ့် ဆုံးဖြတ်ချက်တစ်ခု ပေါ်လာတိုင်း ကိုးကားနိုင်တဲ့ routing table တစ်ခုအဖြစ် အတူတကွ အလုပ်လုပ်ကြပါတယ်။
- Foundations & Framework Choice - ဘယ် development approach က ဒီ team နဲ့ app အတွက် ကိုက်ညီလဲ။
- Navigation & Device & Data - screen, permission, offline data တွေ ဘယ်လိုပေါင်းစပ်ထားလဲ။
- Auth & Notifications - user တွေ ဘယ်လို login ဝင်ပြီး၊ app ထွက်သွားပြီးနောက် ဘယ်လိုဆက်သွယ်ရလဲ။
- Build & Store & Production - build တစ်ခုက တကယ့် store ကို ဘေးကင်းစွာ ဘယ်လိုရောက်လာလဲ။
ဒီပိတ်သိမ်း lesson က စစ်ဆေးနေတဲ့ တကယ့် skill ကတော့ routing ပါ - အခြေအနေတစ်ခုရဲ့ အတိုချုပ်၊ ရှုပ်ထွေးတဲ့ ဖော်ပြချက်ကို ကြည့်ပြီး ဒီကုန်သင်ရိုးရဲ့ ဘယ်အပိုင်းက သက်ဆိုင်လဲဆိုတာ ခွဲခြားသိနိုင်ခြင်းပါ။ တကယ့် team မှာ ဘယ်သူမှ label တပ်ထားတဲ့ မေးခွန်းကို ပေးမှာမဟုတ်ပါဘူး - planning doc ထဲက paragraph တစ်ခု ရလာပြီး ဘယ် mental model က သက်ဆိုင်လဲဆိုတာ ရှာဖွေရတာက ပထမဆုံး အလုပ်ပါ။
ဒါကို ပိုတိကျအောင် ဒီ lesson က scenario သုံးခု ရောနှောထားတာနဲ့ အဆုံးသတ်ပါတယ်၊ ဒီကုန်သင်ရိုးမိတ်ဆက်ခဲ့တဲ့ term အားလုံးရဲ့ glossary အပြည့်အစုံနဲ့၊ ကုန်သင်ရိုးရဲ့ ထပ်ခါထပ်ခါ အကြံပြုချက်တွေကို တစ်နေရာတည်းမှာ စုစည်းထားတဲ့ Mobile App Decision Guide တစ်ခုပါ ပါဝင်ပါတယ်။
ဒီနှစ်ခုကို အနီးအနားမှာ ထားပါ
Glossary နဲ့ decision guide ကို နောက်ထပ် project အစစ်အတွက် ပြန်လာကြည့်ရမယ့် reference တွေအဖြစ် သဘောထားပါ၊ တစ်ကြိမ်တည်း ဖတ်ရမယ့်အရာမဟုတ်ပါဘူး။ တကယ့် ဆုံးဖြတ်ချက်တစ်ခု ပေါ်လာတဲ့အချိန်မှာ အသင့်ရှိနေတာက အဲဒါရဲ့ တန်ဖိုးပါ။
COURSE MAP: SCENARIO TO CHAPTER
-------------------------------
COURSE MAP: SCENARIO TO CHAPTER
--------------------------------
"What should we build with?"
-> Foundations & Framework Choice
"How do screens, permissions, and
offline data fit together?"
-> Navigation & Device & Data
"How do users sign in, and how do
we reach them after they leave?"
-> Auth & Notifications
"How do we ship a real release?"
-> Build & Store & Productionလက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
ဒီ lesson ရဲ့ exercise ထဲက scenario သုံးခုအတွက် routing က ဘယ်လိုအလုပ်လုပ်လဲဆိုတာ တစ်ခုချင်းစီ ကြည့်ကြပါစို့။
Development approach ရွေးချယ်ခြင်း
Foundations & Framework Choice ဆီကို ညွှန်ပြပါတယ် - native, cross-platform, hybrid, Expo-managed workflow တွေအကြောင်း lesson တွေက ဒီဆုံးဖြတ်ချက်အတွက် အတိအကျ လိုအပ်တာပါ၊ ပြီးတော့ approach တစ်ခုတည်းက team တိုင်းအတွက် အမြဲအကောင်းဆုံး မဟုတ်ဘူးဆိုတဲ့ အသိပေးချက်ပါ ပါဝင်ပါတယ်။
Login နှင့် Notification ဒီဇိုင်းထုတ်ခြင်း
Auth & Notifications ဆီကို ညွှန်ပြပါတယ် - access token နဲ့ refresh token ကို ဘယ်မှာသိမ်းမလဲ၊ OAuth mobile flow က ပုံမှန်အားဖြင့် ဘယ်လိုအလုပ်လုပ်လဲ၊ push နဲ့ local notification ကွာခြားချက်ကဘာလဲဆိုတာနဲ့ ဘာမှမပို့ခင် device token ကို register လုပ်ရမယ်ဆိုတာကို ဖုံးအုပ်ထားပါတယ်။
ပထမဆုံး Store Release ပြင်ဆင်ခြင်း
Build & Store & Production ဆီကို ညွှန်ပြပါတယ် - app signing, APK (သို့) AAB build လုပ်ခြင်း၊ Google Play နဲ့ App Store တင်သွင်းခြင်း၊ TestFlight, staged rollout, crash monitoring အားလုံး သက်ဆိုင်ပြီး release-readiness checklist ကနေ အားလုံးကို ချိတ်ဆက်ပေးပါတယ်။
Navigation & Device & Data ဒီတစ်ကြိမ်မှာ ပါမလာဘူးဆိုတာ သတိပြုပါ။ ဒါက ပုံမှန်ပါပဲ - scenario တိုင်းက အခန်းတိုင်းကို မထိတွေ့ပါဘူး၊ ဘယ်အခန်းတွေ မသက်ဆိုင်ဘူးဆိုတာ ခွဲခြားသိတာလည်း routing ကောင်းကောင်းလုပ်တဲ့ အစိတ်အပိုင်းတစ်ခုပါပဲ။
အတူတူ စမ်းရေးကြည့်မယ်
function routeScenarioToChapter(scenarioCategory) {
const routingTable = {
"choosing-approach": {
chapter: "Foundations & Framework Choice",
why: "Deciding between native, cross-platform, hybrid, or Expo depends on team skills and app needs."
},
"navigation-and-data": {
chapter: "Navigation & Device & Data",
why: "Covers stack navigation, deep links, device permissions, and offline data / conflict resolution."
},
"auth-and-notifications": {
chapter: "Auth & Notifications",
why: "Covers token storage, OAuth mobile flow, and push vs local notifications."
},
"store-release": {
chapter: "Build & Store & Production",
why: "Covers app signing, APK/AAB builds, store submission, staged rollouts, and crash monitoring."
}
};
return routingTable[scenarioCategory] || {
chapter: "not found",
why: "This scenario category doesn't match a chapter in this course."
};
}
const scenarios = [
"choosing-approach",
"auth-and-notifications",
"store-release",
"marketing-budget"
];
for (const scenario of scenarios) {
const result = routeScenarioToChapter(scenario);
console.log(scenario, "->", result.chapter + " (" + result.why + ")");
}routeScenarioToChapter ကို scenario category လေးခု (choosing-approach, auth-and-notifications, store-release, marketing-budget) နဲ့ run ရင် ပထမသုံးခုက routing table ထဲက ဆီလျော်တဲ့ chapter နဲ့ အကြောင်းရင်းကို ပြန်ပေးပါတယ် - choosing-approach -> Foundations & Framework Choice, auth-and-notifications -> Auth & Notifications, store-release -> Build & Store & Production။ လေးခုမြောက် marketing-budget ကတော့ table ထဲမှာ မပါလို့ default value chapter: "not found" ကို ပြန်ပေးပါတယ် - scenario အားလုံးက ဒီကုန်သင်ရိုးနဲ့ map ချနိုင်တာမဟုတ်ဘူးဆိုတာကို သတိပေးချက်ပါ။၅ မိနစ် စမ်းကြည့်
ဒီကုန်သင်ရိုး ပြီးတော့ပါပြီ၊ ဒီမှာ တကယ့် team တစ်ခုမှာ ကြုံနိုင်တဲ့ scenario သုံးခု ပါဝင်ပါတယ်။ တစ်ခုချင်းစီအတွက် ဒီကုန်သင်ရိုးရဲ့ ဘယ်အခန်း (ရနိုင်ရင် lesson (သို့) checklist အထိ) ကို ပြန်ကြည့်ရမလဲ အမည်ပေးပြီး၊ ဘာလို့လဲဆိုတာ အတိုချုပ် ရှင်းပြပါ။
၁။ App အသစ်တစ်ခု စတင်ဖို့ team အတွက် development approach ရွေးချယ်ဖို့ လိုအပ်နေတယ်။
၂။ App အသစ်တစ်ခုအတွက် login flow နဲ့ notification system ဒီဇိုင်းထုတ်နေတယ်။
၃။ App တစ်ခုကို ပထမဆုံး store တင်သွင်းဖို့ ပြင်ဆင်နေတယ်။
Practical အပိုင်းက routing အဖြေကို မကြည့်မီ တစ်ခုချင်းစီအတွက် အဖြေရေးပါ - အောက်က glossary နဲ့ decision guide ကိုလည်း မသေချာတဲ့ term (သို့) step အတွက် စစ်ဆေးကြည့်ပါ။
သတိလေးတစ်ချက်
Glossary ထဲက term အားလုံးကို အစဉ်လိုက် အလွတ်ကျက်ဖို့ ကြိုးစားခြင်း - အမှန်က term တစ်ခု ကြုံလာတဲ့အခါ ပြန်ကြည့်ရမယ့် lookup အဖြစ်ပဲ သုံးသင့်ပါတယ်။
Scenario တိုင်းက အခန်းအားလုံးကို လိုအပ်တယ်လို့ ယူဆခြင်း - လက်တွေ့မှာ scenario အများစုက တစ် (သို့) နှစ်ခုကိုသာ ထိတွေ့ပါတယ်၊ ကျန်တာတွေကို အတင်းထည့်ရင် တိကျမှုထက် ရှုပ်ထွေးမှုပဲ ရပါလိမ့်မယ်။
Apple App Store Review Guidelines — How Mobile Apps Work
Mobile App Glossary — အသုံးများသော ဝေါဟာရများ
| Term | အဓိပ္ပာယ် |
|---|---|
| Mobile App | ဖုန်း (သို့) tablet ပေါ်မှာ တိုက်ရိုက်အလုပ်လုပ်ဖို့ ဒီဇိုင်းထုတ်ထားတဲ့ software application တစ်ခု၊ web browser ထဲမှာ run တာနဲ့ မတူပါ။ |
| Mobile App Architecture | အက်ပ်တစ်ခုရဲ့ screen, data, networking, platform integration တွေ ဘယ်လို ပေါင်းစပ်ထားလဲဆိုတဲ့ ဖွဲ့စည်းပုံ အလုံးစုံ။ |
| Native App | Platform ရဲ့ ကိုယ်ပိုင် language နဲ့ tool (Swift/Kotlin လိုမျိုး) နဲ့ တည်ဆောက်ထားတဲ့ အက်ပ်၊ platform feature တွေကို တိုက်ရိုက် သုံးနိုင်ပါတယ်။ |
| Cross-Platform App | Codebase တစ်ခုတည်းနဲ့ တည်ဆောက်ပြီး Android နဲ့ iOS နှစ်ခုစလုံးမှာ run နိုင်တဲ့ အက်ပ်၊ share လုပ်ထားတဲ့ code အတွက် native-only access အချို့ကို လဲလှယ်ထားတယ်။ |
| Hybrid Approach | App store ကို ရောက်ဖို့ web content (HTML/CSS/JS) ကို native shell ပါးပါးတစ်ခုနဲ့ ထုပ်ထားတဲ့ mobile app ပုံစံ။ |
| Expo | React Native အပေါ်မှာ တည်ဆောက်ထားတဲ့ managed toolchain တစ်ခု၊ cross-platform app တွေကို build, test, ship လုပ်ရတာကို ရိုးရှင်းစေတယ်။ |
| Stack Navigation | Card အထပ်ထပ်ထဲက page လိုမျိုး screen တွေကို stack ပေါ်ကို push လုပ်ပြီး pop ချတဲ့ navigation pattern။ |
| Deep Link | App ကို home screen မှာသာမက သတ်မှတ်ထားတဲ့ screen တိုက်ရိုက်ဆီ ဖွင့်ပေးတဲ့ URL တစ်ခု။ |
| Secure Storage | Sensitive value တွေအတွက် ရည်ရွယ်ထားတဲ့ platform ကပေးထားတဲ့ storage (Keychain/Keystore လိုမျိုး)၊ OS ကနေ ကာကွယ်ပေးတယ်။ |
| Conflict Resolution | Offline မှာလည်း၊ server ပေါ်မှာလည်း ပြောင်းလဲသွားတဲ့ data ကို ပြန်ချိန်ညှိပေးဖို့ app က သုံးတဲ့ strategy။ |
| Access Token | User authenticate ဖြစ်ကြောင်း သက်သေပြဖို့ app က request တွေနဲ့အတူ ပို့တဲ့ သက်တမ်းတို credential တစ်ခု။ |
| Refresh Token | User ကို ပြန်လည် login မတောင်းဘဲ access token အသစ်ရဖို့ သုံးတဲ့ သက်တမ်းရှည် credential။ |
| OAuth Mobile Flow | App က user ရဲ့ password ကို တစ်ခါမှ မမြင်ဘဲ third party (Google လိုမျိုး) ကနေ sign in ခွင့်ပြုတဲ့ standard pattern။ |
| Push Notification | App ပိတ်ထားချိန်ကိုတောင် platform ရဲ့ notification service ကနေတဆင့် server ကနေ device ဆီ ပို့တဲ့ message။ |
| Local Notification | Server ဘယ်လိုမှ မပါဘဲ device ကိုယ်တိုင်ကနေ schedule လုပ်ပြီး trigger လုပ်တဲ့ notification။ |
| Device Token | Push notification ကို app install တစ်ခုဆီ ပစ်မှတ်ထားပို့ဖို့ platform ရဲ့ push service ကနေ ပေးထားတဲ့ ထူးခြားတဲ့ identifier။ |
| App Signing | Platform နဲ့ user တွေက app ကို ချောင်တာ မခံရဘူးဆိုတာ စစ်ဆေးနိုင်ဖို့ app build ကို cryptographically sign လုပ်ခြင်း။ |
| Signing Credential | App build ကို sign လုပ်ဖို့ သုံးတဲ့ key (သို့) certificate၊ private ထားရမယ်၊ release တိုင်းမှာ တသမတ်တည်း ဖြစ်ရမယ်။ |
| APK | Direct install နဲ့ sideloading အတွက် သုံးတဲ့ Android ရဲ့ installable app package format။ |
| AAB | Android App Bundle - Google Play ကနေ publish လုပ်ဖို့ တောင်းဆိုတဲ့ format၊ device တစ်ခုချင်းစီအတွက် optimized APK ထုတ်ဖို့ သုံးတယ်။ |
| Google Play | Android app တွေအတွက် Google ရဲ့ တရားဝင် app store နဲ့ distribution platform။ |
| App Store | iOS app တွေအတွက် Apple ရဲ့ တရားဝင် app store နဲ့ distribution platform။ |
| TestFlight | App Store release မတိုင်ခင် beta build တွေကို tester တွေဆီ ဖြန့်ဝေဖို့ Apple ရဲ့ တရားဝင် platform။ |
| Staged Rollout | Update တစ်ခုကို user ရာခိုင်နှုန်း နည်းနည်းလေးဆီ အရင်ဖြန့်ပြီး၊ ပြဿနာမပေါ်ရင် တဖြည်းဖြည်း တိုးချဲ့ဖြန့်ချိခြင်း။ |
| Feature Flag | App build အသစ် ထုတ်စရာမလိုဘဲ feature တစ်ခုကို remote ကနေ ဖွင့်/ပိတ် လုပ်ခွင့်ပေးတဲ့ toggle တစ်ခု။ |
| Force Update | လိုအပ်တဲ့ version အသစ်ကို install မလုပ်မချင်း user ကို app ဆက်သုံးခွင့် မပေးတဲ့ mechanism။ |
| Crash Monitoring | Release ပြီးနောက် တကယ့် user device တွေကနေ crash အသေးစိတ်ကို အလိုအလျောက် စုဆောင်းပြီး report လုပ်ပေးတဲ့ tool။ |
| Mobile Secret Management | App binary ထဲမှာ ဘယ် credential ကို ဘေးကင်းစွာ ထားနိုင်ပြီး ဘယ်ဟာကို server ပေါ်မှာသာ ထားရမလဲဆိုတာ ဆုံးဖြတ်တဲ့ practice။ |
| Never Trust the Client | App ထဲမှာသာ လုပ်ဆောင်တဲ့ စစ်ဆေးမှုတိုင်းကို ကျော်လွှားနိုင်တယ်ဆိုတဲ့ သဘောတရား၊ ဒါကြောင့် အရေးကြီးတာတိုင်းကို server က ပြန်စစ်ရမယ်။ |
Mobile App Decision Guide
| လိုအပ်ချက် | ရွေးချယ်သင့်သည် |
|---|---|
| Only targeting Android for now | Native Android ဖြစ်ဖြစ်၊ cross-platform framework ဖြစ်ဖြစ် ဒီနေရာမှာ ကောင်းစွာ အလုပ်ဖြစ်နိုင်ပါတယ် - ဆုံးဖြတ်ချက်က platform ကိုယ်တိုင်မဟုတ်ဘဲ team ရဲ့ skill နဲ့ native-only access ဘယ်လောက်လိုမလဲဆိုတာပေါ်မှာ များသောအားဖြင့် မူတည်ပါတယ်။ |
| Targeting Android and iOS with a small team | Team သေးငယ်တဲ့အခါ cross-platform framework တစ်ခုက native codebase နှစ်ခု သီးခြားစီ ထိန်းသိမ်းရတဲ့ ထပ်နေတဲ့ အလုပ်ကို များသောအားဖြင့် လျှော့ချပေးပါတယ်။ |
| Team is strong in React / TypeScript | Component model နဲ့ language က web React ကနေ ဆက်လက်အသုံးချနိုင်လို့ React Native (သို့) Expo ဟာ တည်ဆောက်ရလွယ်ဆုံး ခံစားရနိုင်ပါတယ်။ |
| Team wants simplified tooling and the fastest prototype | Native build tooling အများစုကို default အနေနဲ့ ကိုင်တွယ်ပေးနိုင်လို့ Expo-managed workflow ဟာ ဒီအခြေအနေမှာ ကိုက်ညီနိုင်ပါတယ်။ |
| App needs deep native or hardware integration | Platform-specific hardware နဲ့ API ကို အရိုးရှင်းဆုံး၊ တိုက်ရိုက်ဆုံး ချဉ်းကပ်ချင်ရင် native development ဟာ အသင့်တော်ဆုံး ဖြစ်နိုင်ပါတယ်။ |
| Designing login for a new app | Token ကို ဘယ်မှာသိမ်းမလဲ (plain local storage မဟုတ်ဘဲ secure storage) ကို အစောပိုင်းကတည်းက စီစဉ်ပါ၊ social sign-in လိုချင်ရင် OAuth mobile flow ကို စဉ်းစားပါ။ |
| Adding push notifications | ဘာမှမပို့ခင် device token ကို backend မှာ အရင်ဆုံး register လုပ်ပါ - registration မရှိသေးရင် ဘာပို့ပို့ ရောက်ရာမရှိပါဘူး။ |
| Preparing for Google Play | AAB ကို build လုပ်ပါ (plain APK မဟုတ်ဘဲ)၊ store listing ကို ပြည့်စုံအောင်ဖြည့်ပါ၊ full public release မလုပ်ခင် testing track တစ်ခု ရွေးပါ။ |
| Preparing for the App Store | အချိန်ကုန်လက်စွန်းမကျခင် properly signed build ကို ကြိုတင်ပြင်ဆင်ပါ၊ review တင်ခင် TestFlight နဲ့ beta testing လုပ်ပါ။ |
| Handling any API keys in the app | App binary ကို download လုပ်တဲ့ သူတိုင်း inspect လုပ်နိုင်တယ်လို့ယူဆပါ၊ privileged secret တွေကို app ထဲမထားဘဲ backend ပေါ်မှာသာ ထားပါ။ |
| Planning any release | Submit မလုပ်ခင် release-readiness checklist အပြည့်အစုံကို run ပါ၊ ပြီးမှမဟုတ်ဘဲ - ပြဿနာကို ကြိုတင်ဖမ်းမိတာက review (သို့) production မှာ ဖမ်းမိတာထက် ပိုသက်သာပါတယ်။ |