Mamun Labs Learn
esc
  • Try “map”, “flexbox” or “state”.
Log in

From zero to your own app on the Play Store.

Learn to read code, work with AI the right way, and ship real apps — one small step at a time.

10 phases69 topics9–12 monthsfree forever
Predict the outputtotal.js
1const prices = [120, 80, 45];
2const total = prices.reduce(
3 (sum, p) => sum + p, 0
4);
5console.log(total);
What does this print? Tap an answer.
The path

Ten phases. One direction.

Each phase builds on the last and ends with a project you can show someone.

  1. Phase 0Start hereGetting started1–2 wks · 6 topics
  2. Phase 1How the web works2–3 wks · 8 topics
  3. Phase 2JavaScript core4–6 wks · 12 topics
  4. Phase 3JavaScript for real apps3–4 wks · 7 topics
  5. Phase 4TypeScript2 wks · 5 topics
  6. Phase 5React5–6 wks · 9 topics
  7. Phase 6React Native with Expo6–8 wks · 10 topics
  8. Phase 7Games3–4 wks · 5 topics
  9. Phase 8Ship it to the Play Store2–3 wks · 4 topics
  10. Phase 9Capstone4+ wks · 3 topics
What you'll build

Real projects, from a web page to an app on Google Play.

rafi.github.io
RARafi AhmedCSE student · learning to build apps
GitHubProjectsContact
Phase 1Profile page

Your first page, live on the internet.

weather.app
DhakaSearch
Dhaka, Bangladesh
31°
Humid · feels like 36°
12:00
32°
15:00
33°
18:00
30°
21:00
28°
Phase 3Weather lookup

Fetch real data and show it on a page.

localhost:5173
Today2 / 4
Push code to GitHubRead about useStateLab report, due Thursday
Add a task
Phase 5To-do app

Your first React app with state.

Tuesday
Today3 / 5
Read 20 minDrink waterPractice drillsWalk 30 minSleep by 12
Phase 6Habit tracker

A real Android app that saves your habits.

SCORE 042
Tap to jump
Phase 7Tap-to-jump game

A one-touch game with a real game loop.

Play Console
Habit trackerv1.0.0
Internal testingStore listingReady for review
Send for review
Phase 8Play Console

Your habit tracker, ready for review on Google Play.

How it works

Every topic, four stages.

01Learn

Short, hand-picked videos and reads, with notes on exactly what to watch.

VideoRequired
Array methods, explained slowlyBN · 12 min · watch 2:10–9:40
ArticleOptional
How map builds a new arrayEN · 6 min read
02See it

Step through code one line at a time and watch the data change.

123
↓ n * 2
246
const nums = [1, 2, 3];
const doubled =
nums.map(n => n * 2);
// [2, 4, 6]
BackStep 3 / 6Next
03Practice

Small drills in a live editor: predict, find the bug, change it.

Find the bugDrill 2 / 3
const doubled = nums.map(n => {
n * 2;
});
Returns an arrayKeeps 3 itemsNot yet. Each item is undefined
2 of 3 checks passedHintCheck
04Prove it

Quick check, explain it back, and say how sure you feel.

Quick check · 2 / 4
What does [1, 2, 3].map(n => n * 2) return?
[2, 4, 6]6[1, 2, 3]
Correct. map returns a new array with each item doubled.
How confident are you with map?
LostShakyOkayConfidentCould teach it
You can now
Read any map call in React code.

Four stages, ten short steps, the same in every topic.

Built for the AI era

AI writes code. You need to understand it.

  1. 01Read code first. Trace, predict and explain before you write.
  2. 02Review what AI writes. Find the mistakes before they reach your app.
  3. 03Explain it in your own words. If you can say it, you understand it.
Review the AIWritten by AI · 5 lines
1async function showNames() {
2 const res = await fetch("/api/students");
3 const names = res.json();
4 render(names);
5}
Rafion line 3
Missing await here — names will be a Promise.
Correct. You found the bug.
A real mentor

Learning with a mentor

Mamun
Software engineer · mentor

“I read every project myself and reply with specific notes on your code.”

Students in a mentored group get line-by-line reviews. Everyone else gets the full path, drills and self-checks free.

Usually replies within 2 daysFeedback on every project
Habit trackerby Rafi · HabitList.tsx
Reviewed
17const [habits, setHabits] = useState([]);
18useEffect(() => {
19 saveHabits(habits);
20});
Mamunline 19 · 2 h ago

Good instinct to save on every change. Without a dependency array this runs after every render, not only when habits change. Add [habits] and test it again.

Rafi1 h ago

Fixed. It only saves when the list changes now.

FAQ

Questions

Is it really free?

Yes. Every topic, drill and self-check is free and public. Line-by-line project reviews are for students in a mentored group.

How do I get a mentor?

Mentored groups open a few times a year. Mentors invite students directly; ask Mamun if you want to join the next group.

Is it in Bangla?

Partly. The site is in English, and many videos and explanations come in Bangla. Each resource is tagged EN or BN.

Do I need a good laptop?

No. Any laptop that can run a browser and VS Code is enough. For the app phases you test on your own Android phone with Expo Go.

Can I learn on my phone?

You can watch, read and do the quick checks on your phone. For writing and running code you will want a laptop.

What if I get stuck?

Every drill has hints, and the solution unlocks after three tries. If you log in, you can submit your work and ask the mentor.

Do I need to log in?

No. Logging in only saves your progress, quiz scores and code, and lets you submit projects for review.

Start with one topic today. It takes 60 minutes.

Start with Phase 0 No account needed.