A university-exclusive peer-to-peer handwriting service marketplace connecting students who need handwritten academic work with skilled freelance writers.
PeerHire is a React-based web application built for AAUB (Aviation and Aerospace University Bangladesh) students. It enables:
- Hirers: Students who need handwritten assignments, lab reports, or other academic materials
- Freelancers: Students with good handwriting skills who can complete these tasks for payment
- Frontend: React 18 + TypeScript + Vite
- Styling: Tailwind CSS with custom dark theme
- Backend: Lovable Cloud (Supabase)
- Database: PostgreSQL with Row Level Security (RLS)
- Authentication: Supabase Auth (Email/Password + Google OAuth)
- Real-time: Supabase Realtime for messaging
- Storage: Supabase Storage for file uploads
- State Management: TanStack Query + React Context
- Email/password signup with @aaub.edu.bd domain restriction
- Google OAuth integration
- Auto-confirm email signups enabled
- Dual-role system (all users get both hirer and freelancer roles)
- Dashboard with job statistics
- Multi-step job posting with dynamic pricing
- View and manage applications/offers
- Direct messaging with freelancers
- Payment tracking
- Task completion with freelancer ratings
- Browse and apply to open jobs
- Save jobs for later
- Job details with AI assistant support
- Handwriting samples showcase
- Earnings tracking
- Portfolio/completed jobs display
- WhatsApp-style real-time messaging
- Typing indicators
- File attachments (images, PDFs)
- Conversation history
- Real-time notifications
- Role switching between hirer/freelancer
- Profile management with avatar upload
- Mobile-responsive design
- Dark theme UI with purple accents
src/
├── components/ # Reusable UI components
│ ├── ui/ # shadcn/ui components
│ └── ... # Feature components
├── hooks/ # Custom React hooks
├── integrations/ # Supabase client & types
├── lib/ # Utility functions
├── pages/ # Route components
│ ├── Auth.tsx # Authentication page
│ ├── Landing.tsx # Public landing page
│ ├── HirerDashboard.tsx
│ ├── FreelancerDashboard.tsx
│ └── ...
└── assets/ # Static assets
supabase/
├── functions/ # Edge functions
│ ├── delete-account/
│ ├── job-helper/
│ └── recommend-jobs/
├── migrations/ # Database migrations
└── config.toml # Supabase configuration
docs/ # Project documentation
- Row Level Security (RLS) on all tables
- Owner-based storage bucket policies
- JWT verification on edge functions
- Rate limiting on sensitive endpoints
- Input validation with database constraints
- Authentication required for data access
This project is built and deployed through Lovable.
- Clone the repository
- Install dependencies:
npm install - Set up environment variables (see
.env.example) - Run development server:
npm run dev
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_anon_key
VITE_SUPABASE_PROJECT_ID=your_project_id
See the docs folder for detailed documentation:
Simply open Lovable and click on Share → Publish.
To connect a domain, navigate to Project > Settings > Domains and click Connect Domain.
Private - AAUB Students Only