Janakulu
A buy, sell and local services app for Perdoor, my town near Udupi. In Kannada and English, made for cheap phones.
The problem
In Perdoor, you find an auto driver's number, the next bus to Udupi or someone selling a used bike by asking around. The answer lives in someone's phone or a WhatsApp forward from last month.
The big listing apps are built for cities and mostly in English. I wanted one place, in the language people here read, that loads fast on a cheap Android phone.
Numbers are scattered
Autos, shops, the petrol pump and the clinic each have a number, but nobody has all of them.
Bus times are guesswork
Private buses run on a timetable that's only painted at the stand or remembered by regulars.
Selling means WhatsApp spam
A post in a group is buried in an hour. There's no search, no photos side by side and no prices.
Constraints
I'm a designer, not a developer, and this was a side project with no budget. That shaped every decision below.
What I built
Two halves that share one search bar: things people sell, and services people need. Plus an admin panel so I can run it alone.
15 categories
Photos, price, area and an offer line. Posts stay up for 3 to 30 days.
26 categories
Each one has a phone number, WhatsApp, timings, a map pin and a logo.
Next bus finder
Pick your stand and where you're going, see the next bus and the full timetable.
Find by stand
Autos and taxis are grouped by the stand they wait at, the way people already find them.
WhatsApp previews
Every post gets its own link that shows its photo when shared in WhatsApp.
Promotions and ads
Sellers can pay to put a post on top or run a banner. Payments go through Razorpay.
ಕನ್ನಡ / English
One tap in the header switches every label, button and message.
Run it alone
Posts, reports, banners, categories, bus timetables and prices, all from one panel.
Key decisions
What I chose, why, and what it cost.
Plain HTML and JavaScript, no framework
The first load has to work on 3G. No React and no build step means a small page, cheap hosting I already pay for, and nothing to upgrade every few months.
CostOne big app.js file (about 2,400 lines) that needs care when it changes.
Only the admin can edit bus timings
Everything else is open for anyone to post. Buses are different: one wrong time and someone misses the last bus home, and people stop trusting the app.
CostI enter and update every timetable myself.
Group autos by stand, not by name
Nobody here searches "auto driver Ramesh". They walk to Melpete stand or Kelapete stand. So the Auto category opens on stands first, then drivers.
CostAn extra field on every vehicle, and stands to manage in the admin.
Shrink photos on the phone before upload
Photos are resized and turned into WebP in the browser before they leave the phone. A camera photo of a few MB goes up as a 1000px image that's a small part of that size, which saves the seller's data and my storage.
CostMore code on the client, and a JPEG fallback for old phones.
A 5 km circle instead of a town border
OpenStreetMap has no boundary for Perdoor, so I drew a circle. Posts inside 5 km are free. Up to 20 km they cost ₹20 to publish, and beyond that they're refused. This keeps the feed local.
CostEvery post now needs a map pin, which adds one step to posting.
A separate Razorpay account
My ProFigma store already takes payments. I gave Janakulu its own account so a problem on one can never stop payments on the other.
CostA second KYC and two dashboards to watch.
Screens
Phone first. The desktop layout came after, with the categories moved into a sidebar.


What was messy
It didn't go in a straight line.
There was no research phase. I live here, so the first version came from what I see every day. Then I changed it as I watched people use it.
- No interviews or usability tests before launch
- No design file first: I designed in the browser, straight in code
- No analytics until a cookie notice was in place
- Moved from perdoor.profigma.com to its own domain, with redirects
- 42 database changes, each run by hand
- A security pass after launch: rate limits, upload rules, headers
- Removed the town picker once it was clear the app covers only one town
The honest part: the app is built, but it's still close to empty. Most categories have no listings yet and the buy and sell feed is waiting for its first real seller. Getting people to post is a different problem from building the app, and it's the one I'm working on now.
How AI fit in
Decided
- Features and what came first
- Every screen, flow and word
- Kannada wording
- Prices, rules and limits
- Testing on my own phone
Built
- The app and admin panel
- Database tables, rules and 42 changes
- The Razorpay payment function
- Security headers and checks
- Accessibility fixes (WCAG 2.1 AA)
My job was to know exactly what I wanted and say it clearly, then catch what was wrong. That's the same job as working with a developer, just faster.
Where it is now
Next: get the first shops, autos and sellers listed, then add real usage numbers to this page.