Skip to content

Mayhouse is a app to find local travel options for people travelling for Crypto and Web3 events. This helps to minimise currency exchanges and scams and explore every city that you travel to, with an on chain verified local user!

Notifications You must be signed in to change notification settings

tanishkhot/mayhouse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏠 Mayhouse ETH - Web3 Enabled Experience Platform

Discover authentic Mumbai experiences and book with crypto

🌟 What's New

Mayhouse ETH is the Web3-enabled version of Mayhouse, allowing users to:

  • Connect with Ethereum wallets (MetaMask, WalletConnect, etc.)
  • Authenticate without passwords using wallet signatures
  • Book experiences with crypto (coming soon)
  • NFT tickets for experiences (coming soon)

πŸš€ Quick Start

Prerequisites

  • Node.js 20+ and npm
  • Python 3.11+ (for backend)
  • MetaMask or other Web3 wallet
  • Supabase account

Frontend Setup

cd frontend

# Install dependencies
npm install

# Copy environment file
cp .env.example .env.local

# Get your WalletConnect Project ID from https://cloud.walletconnect.com
# Add it to .env.local

# Run development server
npm run dev

Frontend will be available at: http://localhost:3000

Backend Setup

cd backend

# Install dependencies
pip install -r requirements.txt

# Copy environment file
cp .env.example .env

# Configure your Supabase credentials in .env

# Run database migration
psql <your_database_url> -f database/migrations/001_add_wallet_address.sql

# Run development server
python main.py

Backend will be available at: http://localhost:8000

πŸ” Wallet Authentication Flow

  1. User connects wallet β†’ Frontend displays ConnectButton
  2. Request nonce β†’ Backend generates unique nonce
  3. Sign message β†’ User signs message with wallet
  4. Verify signature β†’ Backend verifies signature
  5. Issue JWT β†’ User receives access token
  6. Access protected routes β†’ Token in Authorization header

πŸ“ Project Structure

mayhouse-eth/
β”œβ”€β”€ frontend/              # Next.js 15 + React 19
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/          # App router pages
β”‚   β”‚   β”œβ”€β”€ components/   # React components
β”‚   β”‚   └── lib/          # API clients & utilities
β”‚   └── package.json
β”‚
└── backend/              # FastAPI + Supabase
    β”œβ”€β”€ app/
    β”‚   β”œβ”€β”€ api/          # API endpoints
    β”‚   β”œβ”€β”€ core/         # Config & utilities
    β”‚   β”œβ”€β”€ schemas/      # Pydantic models
    β”‚   └── services/     # Business logic
    β”œβ”€β”€ database/         # Migrations
    └── requirements.txt

πŸ› οΈ Tech Stack

Frontend

  • Framework: Next.js 15 (App Router)
  • UI: React 19, Tailwind CSS 4
  • Web3: Wagmi, Viem, RainbowKit
  • State: React Query, Zustand
  • Icons: Lucide React

Backend

  • Framework: FastAPI
  • Database: Supabase (PostgreSQL)
  • Web3: eth-account, web3.py
  • Auth: JWT tokens
  • Deployment: Ready for Docker/Railway/Render

πŸ”§ Key Features

βœ… Implemented

  • 🦊 Wallet Connection with RainbowKit
  • πŸ” Web3 Authentication via signature verification
  • πŸ‘€ Auto User Creation for new wallets
  • 🎫 JWT Token System for session management
  • 🌐 Multi-Chain Support (Mainnet, Polygon, Optimism, Arbitrum, Base)
  • πŸ“± Responsive UI with modern design

🚧 Coming Soon

  • πŸ’° Crypto payments for bookings
  • 🎟️ NFT experience tickets
  • πŸ† On-chain rewards & reputation
  • πŸ”„ Multi-wallet support
  • πŸ“Š Host analytics dashboard

🌍 Environment Variables

Frontend (.env.local)

NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id

Backend (.env)

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your_anon_key
SUPABASE_SERVICE_KEY=your_service_key
JWT_SECRET_KEY=your_secret_key
CORS_ORIGINS=http://localhost:3000

πŸ“Š Database Schema

The users table now includes:

CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
  wallet_address TEXT UNIQUE,  -- NEW: Ethereum address
  email TEXT,                   -- Optional for wallet users
  full_name TEXT,
  role TEXT DEFAULT 'user',
  created_at TIMESTAMP DEFAULT NOW()
);

πŸ”— API Endpoints

Wallet Authentication

  • POST /auth/wallet/nonce - Request nonce for signing
  • POST /auth/wallet/verify - Verify signature & authenticate

Experiences (Coming from original Mayhouse)

  • GET /explore/ - Browse experiences
  • GET /experiences/{id} - Experience details
  • More endpoints to be added...

🎨 Design Philosophy

  • Wallet-First: Seamless Web3 UX
  • No Passwords: Wallet is your identity
  • Progressive Web3: Start simple, add crypto features gradually
  • Mobile-Friendly: Works on mobile wallets

πŸ› Development Tips

Running Tests

# Frontend
cd frontend
npm run lint

# Backend
cd backend
pytest

Common Issues

"Please configure SUPABASE_URL" β†’ Copy .env.example to .env and add your credentials

"Wrong network" in wallet β†’ Switch to a supported network in MetaMask

"Invalid signature" β†’ Clear nonce cache and try signing again

πŸ“š Documentation

🀝 Contributing

This is a private project, but contributions are welcome!

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

πŸ“„ License

Private and proprietary.

πŸ”— Links


Built with ❀️ for the Ethereum community

Last Updated: October 2025

About

Mayhouse is a app to find local travel options for people travelling for Crypto and Web3 events. This helps to minimise currency exchanges and scams and explore every city that you travel to, with an on chain verified local user!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •