Inspiration
People commonly buy things that they use once and then it collects dust. To save on waste of time and money, having a convenient community renting option can be the ideal way use one time items.
What it does
Lets owners list items (optionally with an AI draft from a photo), and lets borrowers browse nearby listings, request a date range, and complete the flow through acceptance, return, and reviews. It also tracks loan issues like extension requests, late returns, or damage reports right on the loan.
How we built it
We built Lendly with Next.js App Router + server actions for writes, Supabase for auth/database/storage, and a mobile-first component system (Tailwind + shadcn-style UI + Base UI primitives). For discovery, we compute distance between two coordinates and filter by category/radius. Gemini is used in two places: drafting listing details from a photo and ranking search matches.
Challenges we ran into
- Getting Supabase RLS and server/client boundaries right with SSR.
- Handling “real world” messiness: late returns, extensions, and damage reports without turning it into a giant support system.
- Handling Gemini API rate limiting.
Accomplishments that we're proud of
- Solid end-to-end flow: listing -> request -> loan -> return -> review.
- Overlap protection backed by DB constraints/RPC,
- Useful non-gimmicky AI features.
What we learned
Database constraints and RLS policies are worth the effort to get right early. We also learned that AI is most useful when it’s boxed into schemas and treated like a helper,
What's next for Lendly
- In-app messaging + notifications for requests/returns
- Trust features (verification polish, moderation/disputes)
Built With
- claude
- gemini
- next.js
- postgresql
- react
- stripe
- supabase
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.