Discover authentic Mumbai experiences and book with crypto
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)
- Node.js 20+ and npm
- Python 3.11+ (for backend)
- MetaMask or other Web3 wallet
- Supabase account
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 devFrontend will be available at: http://localhost:3000
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.pyBackend will be available at: http://localhost:8000
- User connects wallet β Frontend displays ConnectButton
- Request nonce β Backend generates unique nonce
- Sign message β User signs message with wallet
- Verify signature β Backend verifies signature
- Issue JWT β User receives access token
- Access protected routes β Token in Authorization header
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
- Framework: Next.js 15 (App Router)
- UI: React 19, Tailwind CSS 4
- Web3: Wagmi, Viem, RainbowKit
- State: React Query, Zustand
- Icons: Lucide React
- Framework: FastAPI
- Database: Supabase (PostgreSQL)
- Web3: eth-account, web3.py
- Auth: JWT tokens
- Deployment: Ready for Docker/Railway/Render
- π¦ 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
- π° Crypto payments for bookings
- ποΈ NFT experience tickets
- π On-chain rewards & reputation
- π Multi-wallet support
- π Host analytics dashboard
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_idSUPABASE_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:3000The 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()
);POST /auth/wallet/nonce- Request nonce for signingPOST /auth/wallet/verify- Verify signature & authenticate
GET /explore/- Browse experiencesGET /experiences/{id}- Experience details- More endpoints to be added...
- 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
# Frontend
cd frontend
npm run lint
# Backend
cd backend
pytest"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
This is a private project, but contributions are welcome!
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
Private and proprietary.
- Backend API: http://localhost:8000/docs
- Frontend: http://localhost:3000
- WalletConnect: https://cloud.walletconnect.com
Built with β€οΈ for the Ethereum community
Last Updated: October 2025