Built an App for My Own Flat. Then 68 People Started Using It
Real admin screenshots from two live sites: who uses them, when, and on which device. Plus the two paisa that quietly break most bill-splitting apps, how a whole month settles in just 5 payments, and a 75-lesson course you can unlock with one word.
Note: This is the first post in a series about the sites I actually run in production: Bachelor Point, Team Sober, Mila Mart and Love. No toy demos here. These are real users, real money, and real screenshots from the admin side.
Imagine six people live in one flat. One did the bazar four times. One paid the electricity bill. One ate twice as many meals as everyone else.
Now it's the 31st night. There's one notebook, full of crossed-out numbers.
Who owes whom, and how much?
Contents
- Links
- Why I built it
- The actual scenario
- Who actually uses it
- One formula, printed on the screen
- Paisa-exact splitting
- Shared bills vs assigned bills
- Settle the whole month in the fewest hand-overs
- A fair meal rate
- Payments are reversed, never deleted
- Month close
- Bazar, itemised with a conversation on every entry
- A dashboard that answers where do I stand
- Security that nobody notices
- Community: replacing a dozen to-let groups
- What's next: research-backed seat recommendation
- What I actually built
- The philosophy, short version
- Bonus: a look inside Team Sober
0. Links
| Item | Details |
|---|---|
| Live site | bachelor-point.team-sober.com |
| In-app guide | bachelor-point.team-sober.com/guide (public, no sign-in needed) |
| Research paper | Undergraduate thesis: criteria-based recommendation (Daffodil International University) |
| Series | Live sites, part 1 of 4: Bachelor Point → Team Sober → Mila Mart → Love |
1. Why I built it
Anyone who has lived in a bachelor mess in Dhaka knows the month never ends with a calculation. It ends with an argument.
The problem isn't that the maths is hard. It's that the maths is invisible. Nobody can see why their number is ৳4,330 and not ৳4,000, so every number feels like an accusation.
So the real engineering question was never "how do I add up the bazar?" It was:
"How do I build a system where every number can explain itself, so nobody has a reason to argue?"
That became Bachelor Point, and its tagline is the whole philosophy in one line:
Manage your mess without the arguments.
And no, I don't just maintain it. I live in a mess that runs on it. Six of us settle every single month through this app, so if there's a bug, it's a bug in my own rent. 😅
2. The actual scenario
Here's August 2026 in my own mess:
| What happened | Amount |
|---|---|
| Groceries (bazar) bought by 6 different people | ৳19,362.00 |
| Bills: rent, chef, electricity, gas, Wi-Fi, onboarding, old due | ৳20,470.00 |
| Meals eaten | 243 |
| Total the mess had to settle | ৳39,832.00 |
And the twist that makes this hard:
- Some bills are shared by everyone (chef, electricity, gas, Wi-Fi).
- Some bills belong to only one person (room rent, a one-time onboarding fee, a carried-over due).
- Some people paid vendors out of their own pocket, so the mess owes them.
- Some people bought groceries, which should count as money already paid.
Bought bazar ✅ Paid a bill ✅ Ate meals 🍛 Paid cash 💵
└──────────────────┬──────────────────┘
What is each person's ONE final number?
3. Who actually uses it
Before the solutions, let me show you the people. These screenshots come from the admin analytics page I built into the app, covering the last 30 days.

| Metric | Value | What it means |
|---|---|---|
| Visits | 883 | ~13 visits per person in a month. People come back to it again and again, not just at month end |
| People who visited | 68 | Far more than the 6 people in my own flat |
| Total time on site | 73h 35m | Over an hour per person per month |
| Average visit | 5 min | Enough to log a meal or check a balance, then leave |
| Never visited | 10 | Accounts that were created but never opened. That's my next onboarding problem |
3.1 What time people come
Mostly in the morning (26.3%), when they mark today's meal and log the morning bazar. But here's the surprise: night (22:00–05:00) at 18.6% beats the evening. People check their balance in bed. 😄
3.2 Which day
Wednesday (179 visits) wins. Mid-week is when the first bazar money runs out and everyone starts asking "who owes what?"
3.3 Which device
📱 Mobile: 614 · 💻 Desktop: 269. That's seven out of ten visits from a phone.
People log bazar standing in the market with a bag in one hand. So I made the app installable on the home screen, opening full-screen like a native app, with every form fillable with one thumb.
3.4 Day by day

See the first three days of the month: 19 → 37 → 43 visits. That's month close. Everyone checks their final settlement, pays up, and the new month opens. After that it settles to a steady 4–12 visits a day, and the dark bars (different people) stay almost flat. The same people come back every day. For a tool like this, that matters more than any traffic spike.
4. One formula, printed on the screen
No black box. The balances table literally shows the formula in its header:
Due = meal share + bills share − groceries they bought − cash they paid
A negative due means the mess owes you. That's it. Anyone can verify their own row with a calculator.

August closed with all 6 members at ৳0.00. Settled. Nobody argued. ✅
5. Paisa-exact splitting
This is the detail I'm proudest of. Here's a bug almost every splitting app has:
৳2,000 electricity ÷ 6 people = ৳333.3333…
Round each to ৳333.33 → 6 × 333.33 = ৳1,999.98
⚠️ ৳0.02 just vanished
Two paisa sounds like nothing. But do it on every bill, every month, and the ledger never balances. And a ledger that doesn't balance is exactly the thing that starts arguments.
So Bachelor Point hands out the leftover paisa deterministically:
4 members × ৳333.32 = ৳1,333.28
2 members × ৳333.36 = ৳ 666.72
─────────
৳2,000.00 ✅ exact
You can see it in the "Who is charged what" table, where electricity is ৳333.32 for some and ৳333.36 for others:

And the app makes the promise out loud under the table:
"Meal shares add up to the ৳19,362.00 spent on bazar, and bill shares to the ৳20,470.00 of bills — to the paisa, every month."
6. Shared bills vs assigned bills
Not every bill belongs to everyone. My room rent shouldn't be split with a flatmate who rents a different room.
| Type | Examples | Split between |
|---|---|---|
| Shared | Chef, Electricity, Gas, Wi-Fi | Every active member |
| Assigned | Rent, Mess Onboarding, Previous Month Due | Only the members it's billed to |

August: ৳20,470 in bills across 11 entries. Rent was the biggest at ৳10,000 (49%), then chef ৳3,900, electricity ৳2,000, gas ৳1,820, onboarding ৳1,500, Wi-Fi ৳1,050 and a ৳200 old due.
7. Settle the whole month in the fewest hand-overs
Six people paying each other back and forth could take up to 15 transfers. Nobody wants that.
Instead, the app works out each person's single net number and then finds the minimum set of payments that clears everything. For August:
Sharif Hossain Rabby ──৳811.65──┐
Mohsin ──৳508.36──┤
Mahbub ──৳401.65──┼──▶ Mr Shaqib (gets back ৳2,041.68)
Saidul Islam Rajib ──৳311.70──┤
Jakir Hossain ──৳ 8.32──┘
5 hand-overs. Done. Month cleared.

8. A fair meal rate
August's meal rate was ৳79.68 (৳19,362 ÷ 243 meals). But a flat average hides something: a big bazar on Monday feeds the mess until the next trip.
So each shopping trip is spread over the days it actually fed the mess. A quiet day with few eaters doesn't look "cheap", and the table shows each day's own price, just for transparency. Everyone still pays the same fair rate in the end.
9. Payments are reversed, never deleted
If someone records a wrong payment, the app doesn't delete it. It adds an opposite entry and keeps the original on record.
+ ৳483.92 Mr Shaqib (recorded by mistake)
− ৳483.92 Mr Shaqib (reversal)
───────────
৳0.00 and both lines stay in history
Only a supervisor can permanently delete an entry. That's what makes the history something people trust. Nobody can quietly edit their way out of a debt.

10. Month close
When a month is closed:
- Balances are frozen. No one can rewrite August in October.
- Anything still unpaid is carried into next month as "Previous Month Due".
- The bazar duty schedule locks.
11. Bazar, itemised with a conversation on every entry


| Month | Bazar total |
|---|---|
| August 2026 | ৳19,362.00 |
| September 2026 | ৳11,793.00 |
Every purchase lists its products (Salt ৳40, Potato ৳30…) and the total is added up for you. Every entry also has its own comment box. If someone questions a ৳1,005 entry, the conversation happens right next to it, not lost somewhere in a WhatsApp group.
12. A dashboard that answers where do I stand

One screen shows the last month's final settlement, where the money went (bazar 49%, rent 25%…), a colour-coded bazar duty calendar where you can hand your turn to someone else in one tap, and who still owes.
13. Security that nobody notices
Money is involved, so sign-in is guarded, and quietly.

Every failed attempt is logged with a reason:
| Code | What happened |
|---|---|
UNKNOWN_ACCOUNT |
Someone tried an email that has no account. Several came in bursts from one IP within minutes, using throwaway addresses. Classic probing 👀 |
INVALID_CREDENTIALS |
Right account, but a wrong password, invalid OTP, or expired link |
IP_LOCKED |
Too many failures, so the IP is locked out for a while. Brute force stops being worth it |
Real members never feel any of this. Password reset by OTP, lockouts and audit logs all happen in the background.
14. Community: replacing a dozen to-let groups
Finding a seat in Dhaka usually means joining 10+ to-let groups on Facebook and scrolling past hundreds of messy posts that say "inbox for details".

In Bachelor Point's Community page, every to-let post is structured:
Rent: ৳5,500/mo Location: Kuratoli Purbopara
Seat: 1 open Available: October
Who: Male only Rules: Flexible
Has: Wi-Fi, Gas, Attached balcony
You can search by location, title or rent. And supervisors can post announcements to everyone from the same page.
15. What's next: research-backed seat recommendation
Because every listing is structured, the next step is automatic matching. A seat seeker says what they care about (budget, distance to campus, rules, amenities) and Bachelor Point ranks the listings that fit them best.
This isn't a fresh idea for me. It comes straight from my undergraduate research.
In my thesis, I designed a system that recommends which phone a person should buy, based on the criteria that person says they care about. A student who wants battery life and a low price gets a completely different ranking from a photographer who wants the best camera at any price. The ranking follows your priorities, not a one-size-fits-all score.
Finding a room is the same problem with different features:
Phone: camera · battery · price · storage
↓ same idea, different features
Room: rent · distance · rules · amenities
📄 Read my research paper: Undergraduate thesis: criteria-based recommendation (Daffodil International University)
16. What I actually built
Not a list of tools. Here are the problems I solved:
| Problem | What I built |
|---|---|
| Month-end arguments over money | A ledger where every number shows its own formula |
| Rounding makes paisa disappear | Paisa-exact splitting that always reconciles to the total |
| 6 people paying each other back and forth | Minimum hand-over settlement: 5 transfers for a whole month |
| "Someone edited the record!" | Reversal instead of deletion, so history can't be quietly rewritten |
| Not every bill is everyone's | Shared vs assigned bills, per-member charges |
| People log bazar from the market | A phone-first, installable app built for one thumb |
| Brute-force and probing on sign-in | Reason-coded audit logs and IP lockout |
| Seat hunting across 10+ Facebook groups | A structured to-let community, with research-backed matching coming next |
| "Is anyone even using this?" | My own analytics: visits, time of day, weekday, device, retention |
17. The philosophy, short version
- If a number can start an argument, show its working.
- Build for the phone in the bazar, not the laptop on the desk.
- Never delete history. Reverse it.
- Use it yourself. The best QA team in the world is six flatmates who all want their money right.
18. Bonus: a look inside Team Sober
Before part 2, here's a quick look at the second live site in this series: team-sober.com, the blog you're reading right now. Bachelor Point is where my flatmates settle their money. Team Sober is where I write things down: posts, tutorials and full courses.
18.1 The admin dashboard
This is the first screen I see after signing in. One look tells me what's live, what's waiting, and what people are actually reading.

| Card | Value | What it means |
|---|---|---|
| Published | 27 | Posts live on the blog |
| Drafts | 1 | Still being written, not visible publicly |
| Scheduled | 2 | Already written, and they publish themselves on their date |
| Tags | 93 | Topics in use across all posts |
| Views | 3,657 | All-time reads |
| Words | 34,551 | About 188 minutes of reading |
Top posts by views shows what people actually come for:
| Post | Views |
|---|---|
| What are those things give me শান্তি? | 388 |
| Logging and Observability | 355 |
| Customize Your Git Bash Prompt to Show Only the Current Folder | 188 |
| Running a Node.js Application with Temporary Environment Variables in PowerShell | 143 |
| A step-by-step guide to the CI/CD journey | 142 |
The most-read post isn't a tutorial at all. It's the story of a green pipeline, an email that actually arrives, and six failures that taught me more than any tutorial. 😄
Below that are the other admin tools:
- Key highlights: every tag with a post count (
docker 8,jenkins 7,ci-cd 5,devops 4…), so I can see which topics I write about most and which ones I've barely covered. - All posts: a searchable table with each post's status (
DRAFT,SCHEDULED,PUBLISHED), tags, views and last update, with View, Edit and Delete on every row.
18.2 Comments and likes are switched off, for now
Every post has comments and likes built in, but I've deliberately hidden them on every post for now. The plan is to open them up later, so that public and registered readers can like a post and join the discussion under it.
18.3 Courses, not just posts
Some topics are too big for a single post, so Team Sober also has Tutorials: full courses split into chapters and lessons, and each course tracks your progress.
Here's the whole Tutorials page at a glance:

| Subjects | Lessons | Chapters | Level | Certified students | Certificates earned |
|---|---|---|---|---|---|
| 3 | 87 | 19 | Beginner–Advanced | 4 | 5 |
Finish a course and you get a certificate. Four students have already earned one, and five certificates have been issued so far.
| Course | Lessons | Reading time | Level |
|---|---|---|---|
| Mathematics | 9 | 26 min | Intermediate–Advanced |
| Computer Networking | 3 | 3 min | Beginner–Intermediate |
| Data Structure & Algorithm | 75 | 2 hr 36 min | Beginner–Advanced |
The first big one is Data Structure & Algorithm:

🔑 This course is locked behind an enrolment key. The key is
Rajib.Open the course page, enter
Rajibin the Enrolment key box and click Enrol. You only need to do it once, because the browser stays enrolled after that. Then explore everything.
No comments yet.
Sign in to leave a comment.