The idea
A private, invite-only inventory of the things people on one street are willing to lend, with a borrow request flow and a due-date nudge. Someone posts a photo of their pressure washer, sets a "usually free at weekends" note, and neighbours can ask for it in two taps. The app's only real job is remembering who has what and when it was due back — the part a group chat is worst at.
Why build this
Tool libraries already exist informally. Almost every street has a WhatsApp or Signal group where someone asks "does anyone have a stud finder", gets three replies, borrows one, and nobody remembers whose it was six weeks later. The lending itself works fine; the bookkeeping is what fails, and the social cost of chasing a neighbour for a returned ladder is high enough that people stop lending.
The demand side is stronger than it used to be. A cordless drill is used for something like fifteen minutes a year. Repair cafés and library-of-things projects have normalised the model, but the municipal ones require a trip across town and opening hours. The gap is the hyper-local version: twenty households, no deposits, no staff, no payments — trust already exists because these people see each other.
Payments being out of scope is what makes this buildable by one person. No Stripe, no KYC, no dispute handling, no insurance product. It is an inventory and a reminder service.
Stack sketch
- SvelteKit on Node, server-rendered — the whole thing must work on a five-year-old Android phone over a bad connection.
- Postgres with Drizzle for schema and migrations. Three core tables:
households,items,loans. - Magic-link auth via Lucia plus Resend for delivery. No passwords. A group is joined through a signed invite link that an existing member shares, which is also the entire moderation model for v1.
- Photo upload straight to MinIO (or S3), resized server-side with sharp to a single 1200px WebP. Photos are most of the perceived quality here — a grainy shelfie of a hedge trimmer is more convincing than a typed description.
- Reminders via the Telegram Bot API or plain email, whichever the member picks at signup. A nightly cron scans for loans past their return date and sends one message to the borrower, then one to the lender three days later.
- Deploy as a single container behind Traefik. One instance can host many groups; a group is a row, not a deployment.
Scope for v1
In:
- Create a group, invite by link, list items with a photo and a short description.
- Request an item; the owner accepts or declines; accepting creates a loan with a return date.
- Mark returned. Overdue nudges on a nightly job.
- A single feed view showing what is available and what is currently out.
Out:
- Payments, deposits, and damage deposits.
- Ratings and reputation scores. Twenty neighbours do not need a five-star system, and adding one changes the social tone immediately.
- Public discovery or search across groups. Every group is closed by default.
- Native apps. Ship a PWA with an install prompt.
Where it could go
The obvious next layer is skills rather than objects: the same schema handles "I can help you hang a door" with a duration instead of a return date. That is a small change to the data model and a large change to what the app is for, so it is worth doing only after the object version proves people actually open it twice.
The second path is institutional. Repair cafés, allotment associations, scout groups, and makerspaces all keep shared equipment in a spreadsheet and lose it at the same rate. A hosted tier at a low monthly price, with an equipment-condition log and a check-out kiosk mode on a tablet by the door, is a plausible small B2B product sitting on the same codebase. The third, further out, is a physical one: a lockbox with a shared code rotated per loan, so handovers do not require both people to be home.
Watch out for
The failure mode is not technical, it is the empty room — a group with four items and no activity dies in a fortnight, so onboarding has to push the first member to add five things before inviting anyone. Also be careful with overdue reminders: message the borrower first and keep the wording neutral, because an app that makes neighbours feel policed will get abandoned faster than one that forgets a ladder.