A borrowing platform that helps people enjoy higher cost experiences without committing to long term purchases!
This project was built for SpurHacks 2025 for the Startup track.
The idea is pretty simple - why buy expensive stuff you'll only use once or twice? Our platform lets you borrow everything from power tools and cameras to gaming setups and party equipment from people in your community. It's like Airbnb but for literally anything you need!
We added some cool AI features that automatically generate listings when you upload photos and help you find exactly what you're looking for with smart search.
Kayne Lee - developer Chloe Houvardas - developer Simon Risk - developer Nicole Steiner - business strategist
- Browse Listings: Find cool stuff to borrow near you
- Smart Search: Just type what you need and our AI figures out what you're looking for
- Auto Listing Creation: Take a pic of your item and AI writes the whole listing for you (pretty neat!)
- Booking System: Reserve items for specific dates
- User Profiles: Keep track of your stuff and what you're borrowing
- Live Availability: See when items are free to borrow
- Clean UI: Looks good on mobile and desktop
We used some pretty cool tech for this project:
- React 18 with TypeScript - for building the UI
- Vite - super fast development server
- Tailwind CSS - makes styling way easier
- shadcn/ui - pre-built components that look amazing
- React Router - handles page navigation
- React Query - fetches data from our API
- React Hook Form - handles all the forms
- FastAPI (Python) - our main API server
- Supabase - handles our database and file storage
- OpenAI GPT-4 Vision - the AI that looks at photos and generates listings
- Pydantic - makes sure our data is formatted correctly
spurhacks/
├── src/ # Frontend React application
│ ├── components/ # React components
│ │ ├── ui/ # shadcn/ui components
│ │ ├── AddListingModal.tsx # Create new listings
│ │ ├── ListingCard.tsx # Display listing cards
│ │ ├── ListingPage.tsx # Individual listing details
│ │ └── ProfilePage.tsx # User profile management
│ ├── data/ # Mock data and types
│ ├── pages/ # Main app pages
│ └── lib/ # Utility functions
├── backend/ # Python FastAPI backend
│ ├── main.py # Main API endpoints
│ ├── schemas.py # Pydantic data models
│ ├── scripts/ # AI processing modules
│ │ ├── photo_tags.py # Image analysis with GPT-4V
│ │ ├── search_tags.py # Search classification
│ │ └── tag_verification.py # Tag validation
│ └── requirements.txt # Python dependencies
└── public/ # Static assets
- Node.js (v18 or newer)
- Python (v3.8 or newer)
- A Supabase account (it's free!)
- OpenAI API key (you might need to pay a bit for this)
- Install all the packages:
npm install- Start it up:
npm run devGo to http://localhost:5173 and you should see it working!
- Go to the backend folder:
cd backend- Make a virtual environment (trust me, you want this):
python -m venv venv
source venv/bin/activate # If you're on Windows: venv\Scripts\activate- Install Python packages:
pip install -r requirements.txt- Create a
.envfile in the backend folder with your API keys:
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_anon_key
OPENAI_API_KEY=your_openai_api_key- Start the server:
uvicorn main:app --reloadYour API should be running at http://localhost:8000
We're using Supabase for our database. Here's what we store:
- listings: All the item info (title, description, price, location, tags, photos)
- users: User profiles and login stuff
- requests: When people want to borrow things
- tags: Categories for items (like "tools", "electronics", etc.)
- Upload a photo of whatever you want to lend out
- Our AI (GPT-4 Vision) looks at the image
- It automatically writes:
- A 4-word title
- A nice description
- Relevant tags
Instead of having to use exact keywords, you can just type stuff like "I need something to cut wood" and it'll find chainsaws, saws, etc. The AI understands what you actually want.
- Hit "Add Listing" on the main page
- Take a photo of your item
- The AI writes everything for you (but you can edit it if you want)
- Set how much you want to charge per day
- Add your location and you're done!
- Search for what you need or just browse around
- Click on something that looks good
- Pick the dates you need it
- Send a request to the owner
- Wait for them to approve it
Check your profile to see:
- Stuff you're lending out
- Things you've requested to borrow
- What's coming up
- Your borrowing history