Vaymo is a modern peer-to-peer rental marketplace platform built with React, TypeScript, and Supabase. The platform enables users to rent and lend equipment across various categories including skiing, photography, camping, construction, and more.
- Dual User Roles: Support for both equipment owners and renters with role-specific dashboards
- Equipment Management: List, browse, and manage rental equipment with detailed descriptions, photos, and availability calendars
- Smart Booking System: Request-based booking flow with availability checking and pricing calculations
- Secure Payments: Integrated payment processing with escrow system for secure transactions
- Real-time Messaging: Built-in messaging system for communication between renters and owners
- Reviews & Ratings: Comprehensive review system with star ratings and detailed feedback
- Location-based Search: Search and filter equipment by location, category, price, and availability
- Identity Verification: Multi-step verification process for user trust and safety
- Responsive Design: Mobile-first design with adaptive layouts for all screen sizes
- Frontend: React 18, TypeScript, Vite
- Styling: TailwindCSS, Shadcn UI Components
- Backend: Supabase (PostgreSQL, Auth, Storage, Realtime)
- Payment Processing: Stripe
- State Management: React Query, Context API
- Maps: Integration with mapping services for location display
- Testing: Vitest, React Testing Library
Before running this project, ensure you have the following installed:
- Node.js (v18 or higher)
- npm (v9 or higher)
- Supabase CLI (optional, for local development)
git clone <repository-url>
cd vaymonpm installCreate a .env file in the root directory with the following variables:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_keyIf you're setting up a new Supabase project:
# Navigate to supabase directory
cd supabase
# Run migrations in order
# 1. Run initial schema
# 2. Run RLS policies
# 3. Run seed dataYou can also use the Supabase Dashboard to run the migration files located in supabase/migrations/.
npm run devThe application will start on http://localhost:5173 (or another port if 5173 is in use).
Open your browser and navigate to:
http://localhost:5173
npm run testnpm run test:watchnpm run test:coverage- Sign up with email and password
- Log in with existing credentials
- Log out successfully
- Password reset flow
- View equipment listings on explore page
- Filter by category
- Filter by location
- Filter by price range
- View equipment details in dialog
- Select dates for rental
- View pricing calculations
- Submit booking request
- View booking status
- Cancel booking request
- Create new equipment listing
- Edit existing listings
- Manage availability calendar
- View booking requests
- Approve/decline booking requests
- Start conversation from equipment listing
- Send and receive messages
- View conversation history
- Process payment for approved booking
- View transaction history
- Track escrow status
- Submit review after rental completion
- View reviews on equipment listings
- Calculate average ratings
vaymo/
├── src/
│ ├── components/ # Reusable UI components
│ │ ├── booking/ # Booking-related components
│ │ ├── equipment/ # Equipment listing components
│ │ ├── explore/ # Search and filter components
│ │ ├── layout/ # Layout components (header, sidebar)
│ │ ├── messaging/ # Chat interface components
│ │ ├── payment/ # Payment and escrow components
│ │ ├── reviews/ # Review system components
│ │ └── ui/ # Shadcn UI primitives
│ ├── pages/ # Page-level components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions and API clients
│ ├── types/ # TypeScript type definitions
│ └── contexts/ # React context providers
├── supabase/
│ └── migrations/ # Database migration files
└── public/ # Static assets
| Command | Description |
|---|---|
npm run dev |
Start development server with hot reload |
npm run build |
Build production bundle |
npm run preview |
Preview production build locally |
npm run test |
Run unit tests |
npm run test:watch |
Run tests in watch mode |
npm run lint |
Run ESLint for code quality |
npm run type-check |
Run TypeScript type checking |
- Feature Development: Create feature branches from
main - Code Style: Follow the coding guidelines in the user rules (early returns, Tailwind for styling, descriptive naming)
- Testing: Write tests for new features and components
- Type Safety: Ensure all TypeScript types are properly defined
- Accessibility: Implement ARIA labels and keyboard navigation
- Responsive Design: Test on multiple screen sizes
Port Already in Use
# Kill the process using port 5173
lsof -ti:5173 | xargs kill -9Dependency Issues
# Clear node_modules and reinstall
rm -rf node_modules package-lock.json
npm installSupabase Connection Issues
- Verify your
.envfile has correct Supabase credentials - Check that your Supabase project is active
- Ensure RLS policies are properly configured
Build Errors
# Clear Vite cache
rm -rf node_modules/.vite
npm run dev- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is proprietary and confidential.
For issues and questions, please contact the development team or open an issue in the repository.