Work/04

Janakulu

A buy, sell and local services app for Perdoor, my town near Udupi. In Kannada and English, made for cheap phones.

RoleProduct design, copy, build with AI, running it
Timeline2026, still going
PlatformWeb app, phone first
StackHTML, CSS, JS, Supabase, PHP, Razorpay
Liveperdoor.janakulu.com ↗
Janakulu home page on desktop: categories on the left, a green banner for local services and the latest posts Janakulu home page on a phone with the bottom tab bar
01

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.

Pain 01

Numbers are scattered

Autos, shops, the petrol pump and the clinic each have a number, but nobody has all of them.

Pain 02

Bus times are guesswork

Private buses run on a timetable that's only painted at the stand or remembered by regulars.

Pain 03

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.

02

Constraints

I'm a designer, not a developer, and this was a side project with no budget. That shaped every decision below.

One personNo developerShared PHP hostingCheap phones, slow dataKannada firstNo map boundary for PerdoorReal money (payments)
03

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.

Buy and sell

15 categories

Photos, price, area and an offer line. Posts stay up for 3 to 30 days.

Services

26 categories

Each one has a phone number, WhatsApp, timings, a map pin and a logo.

Bus stop

Next bus finder

Pick your stand and where you're going, see the next bus and the full timetable.

Auto stands

Find by stand

Autos and taxis are grouped by the stand they wait at, the way people already find them.

Sharing

WhatsApp previews

Every post gets its own link that shows its photo when shared in WhatsApp.

Money

Promotions and ads

Sellers can pay to put a post on top or run a banner. Payments go through Razorpay.

Language

ಕನ್ನಡ / English

One tap in the header switches every label, button and message.

Admin

Run it alone

Posts, reports, banners, categories, bus timetables and prices, all from one panel.

04

Key decisions

What I chose, why, and what it cost.

D1

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.

D2

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.

D3

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.

D4

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.

D5

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.

D6

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.

05

Screens

Phone first. The desktop layout came after, with the categories moved into a sidebar.

Phone: home with banner, category tabs and posts Phone: services grid with category tiles Phone: bus stop finder with the next bus
Desktop: services page with categories and listings
Services: 26 categories, each with sub-types like Petrol, Diesel or CNG
Desktop: bus timings page
Bus stop: pick a stand and a destination to see the next bus
06

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.

What I skipped
  • 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
What I had to redo
  • 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.

07

How AI fit in

Me

Decided

  • Features and what came first
  • Every screen, flow and word
  • Kannada wording
  • Prices, rules and limits
  • Testing on my own phone
Claude Code

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.

08

Where it is now

26Service categories
2Languages
AAWCAG 2.1 check passed
1Person built it

Next: get the first shops, autos and sellers listed, then add real usage numbers to this page.

Open Janakulu ↗