Inspiration
In Fergana, Uzbekistan, finding a trustworthy local service provider — a home cook, a tutor, a cleaner — is genuinely hard. Residents rely on scattered Telegram groups and word-of-mouth, with no ratings, no price transparency, and no accountability. We wanted to build something that felt like a real digital extension of the "mahalla" — the traditional Uzbek neighborhood community — but structured, trusted, and AI-assisted.
What it does
Mahalla is a hyperlocal marketplace where residents browse and post services by category, price, rating, and distance. Every listing goes through AI-powered moderation (Gemma 4 31B) that checks for safety and suggests fair, area-aware pricing. Orders move through a clear lifecycle — pending, confirmed, active, completed — and the whole interface is localized in English, Russian, and Uzbek.
Disclosure
The core platform — listings, orders, and AI moderation — was originally built during the H0 Hackathon. For Technoviz Summer of Code, we identified and fixed a critical limitation: every visitor previously shared a single hardcoded demo account. We rebuilt the identity layer so each visitor now gets their own persistent, cookie-based profile, orders, and provider status — turning a single-user demo into a genuinely multi-user platform.
How we built it
The app is built on Next.js 16 (App Router) with React 19 and Tailwind CSS v4, backed by a single-table AWS DynamoDB design. For the new identity layer, we added Next.js middleware that assigns an httpOnly cookie to every new visitor, generating a unique user record in DynamoDB on first visit. API routes and pages were updated to read this cookie instead of relying on a hardcoded constant, and we added a profile editing flow so visitors can set their name, phone, city, and provider status.
Challenges we ran into
Migrating away from a hardcoded user touched more of the codebase than expected — API routes, UI components, and translations all assumed a single fixed user. We also hit deployment friction after updating dependencies: a pnpm version mismatch between our local environment and Vercel's build system caused repeated lockfile errors, which we resolved by pinning the exact pnpm version via packageManager in package.json and corepack.
What we learned
Small architectural shortcuts (like a single hardcoded demo user) can quietly touch far more of an app than they first appear to. We also learned the importance of pinning tool versions (like pnpm) explicitly, rather than relying on defaults that can silently differ between local and CI/production environments.
What's next for Mahalla
Full OTP-based phone authentication, in-app messaging between neighbors, and expansion beyond Fergana to other regions of Uzbekistan.
Built With
- amazon-web-services
- base-ui
- cookies
- dynamodb
- gemma
- google-ai-studio
- javascript
- lucide-react
- middleware
- nextjs
- node.js
- nosql
- pnpm
- react
- rest-api
- sonner
- swr
- tailwindcss
- typescript
- vercel


Log in or sign up for Devpost to join the conversation.