[09]entry 9 of 29
Aaspaas
this entry is written twice, in full
- 1.in brief
hyperlocal marketplace, sorted by distance
- 2.in general
Local talent and local opportunities, for the people already on your street.
- 3.in particular
A marketplace dressed as a wheat-pasted street poster wall: five screen-print inks, halftone dots, and Hindi set as large as the English.
- 1.in brief
a neighbourhood marketplace, sorted by who is nearest
- 2.in general
Local skills and local work, for the people already on your street.
- 3.in particular
A marketplace dressed as a wall of pasted-up street posters: five printing inks, visible printing dots, and Hindi set as large as the English.
context
Every locality is already full of people who can fix, teach, bake, shoot and play: electricians, maths tutors, home bakers, wedding photographers, DJs, mehendi artists, tailors, phone-repair folks. Aaspaas is a hyperlocal marketplace for finding them, and for being found by the neighbourhood that needs you.
the problem
Two problems, one product. The first is ranking: when the power dies at 9pm, distance beats every other signal, so results sort by proximity first because that is the one variable a customer cannot negotiate.
The second is that every services marketplace looks identical, quiet and blue and trustworthy in the same forgettable way. A hyperlocal Indian product had no business looking like a Silicon Valley dashboard.
what i built
- 1.
48 statically generated pages: 16 written pages, 8 category pages, and 24 provider profiles carrying services, rates, areas served and reviews
- 2.
Browse and filter by category, distance, rating, price and verified status; sort by nearest, highest rated, cheapest or most reviewed
- 3.
A four-step listing flow for providers, and profiles that show the rates the provider set rather than a platform markup
- 4.
Nine hand-built interactive pieces: a click starburst, a draggable pile of review cards, a springy distance slider, a field of map needles that turn to face the cursor, a rotating rubber stamp, counting numbers, rotating words, and a scroll-driven banner
- 5.
typedRoutes promotes a broken internal link from a runtime 404 to a build error, so a 48-page link graph cannot rot silently
the art direction
The site is dressed as a wheat-pasted street poster wall, the kind that carries film posters and municipal warnings on Indian city walls: five screen-print inks (haldi, sindoor, mehendi, gulal, neel) on cream paper, hard offset shadows instead of soft blur, halftone dots, hand-cut edges, and Hindi set at the same scale as the English instead of shrunk into a subtitle.
It is a constraint enforced in code, a small set of house classes sitting alongside Tailwind, so the look holds across all 48 pages rather than drifting one page at a time.
motion, and the option to refuse it
Every page is a React Server Component, so only the moving parts ship JavaScript at all. The three loudest of those, the starburst, the needles and the spinning stamp, switch off entirely under prefers-reduced-motion, and a global rule flattens every remaining CSS animation and transition on the page. Loud by default, never at the cost of someone who asked it to stop.
honest status
This is a complete front end on sample data. Every page, filter, sort and form works, but the 24 providers live in a single content file and the join, login and contact forms do not post anywhere yet.
The next step is Postgres with the PostGIS extension, so "within 3 km, nearest first" stays one fast query at 240,000 providers the way it is at 24. Every page already reads its data through a handful of functions in content.ts, so swapping the array for a database rewrites those functions and almost nothing else.
48 statically built pages where every filter, sort and form already works, waiting only on a database.
context
Every neighbourhood is already full of people who can fix, teach, bake, photograph and play: electricians, maths tutors, home bakers, wedding photographers, DJs, mehendi artists, tailors, phone-repair shops. Aaspaas is a place to find them, and a place to be found by the streets around you.
the problem
Two problems in one product. The first is the order of the results: when the power goes out at nine at night, how close somebody is beats every other consideration, so results are sorted by distance first, because distance is the one thing a customer cannot negotiate.
The second is that every services marketplace looks the same: quiet, blue, and trustworthy in the same forgettable way. A neighbourhood product for Indian streets had no business looking like a Silicon Valley dashboard.
what i built
- 1.
48 pages built ahead of time: 16 written pages, 8 category pages, and 24 profiles carrying what each person does, what they charge, the areas they cover and their reviews.
- 2.
Browse and narrow by category, distance, rating, price and whether they are verified; sort by nearest, best rated, cheapest or most reviewed.
- 3.
A four-step sign-up for someone offering a service, and profiles that show the price that person actually set rather than a marked-up one.
- 4.
Nine hand-built pieces of interaction: a burst on click, a draggable pile of review cards, a springy distance slider, a field of map pins that turn to face your cursor, a rotating rubber stamp, counting numbers, rotating words, and a banner driven by scrolling.
- 5.
A setting that turns a broken internal link from something a visitor discovers into something that stops the build, so a 48-page web of links cannot quietly rot.
the art direction
The site is dressed as a wall of pasted-up street posters, the kind carrying film advertisements and municipal notices on Indian city walls: five screen-printing inks on cream paper, hard offset shadows instead of soft blur, visible printing dots, hand-cut edges, and Hindi set at the same size as the English rather than shrunk into a subtitle beneath it.
That is a rule enforced in code, a small set of shared house styles sitting alongside the general ones, so the look holds across all 48 pages instead of drifting one page at a time.
motion, and the option to refuse it
Every page is assembled on the server, so only the parts that actually move send any code to the browser at all. The three loudest of those, the burst, the pins and the spinning stamp, switch off completely for anyone whose device asks for less movement, and a single rule flattens every remaining animation on the page. Loud by default, but never at the expense of somebody who asked it to stop.
honest status
This is a finished front end running on sample data. Every page, filter, sort and form works, but the 24 people listed live in one content file, and the join, sign-in and contact forms do not yet send anywhere.
The next step is a real database with geography built in, so "within three kilometres, nearest first" stays one quick question at 240,000 listings the way it is at 24. Every page already gets its data through a handful of functions in one file, so swapping the list for a database rewrites those functions and almost nothing else.
48 pages where every filter, every sort and every form already works, waiting only on a database behind them.