A marketplace platform connecting individuals who need test-taking services with qualified test-takers, featuring secure cryptocurrency payments.
TutorLinkup.com enables users to:
- Post test-taking opportunities with cryptocurrency compensation
- Apply to complete tests and earn cryptocurrency
- Communicate securely between hirers and test-takers
- Process payments using multiple cryptocurrencies via CryptAPI.io
- View real-time exchange rates via Tatum.io
- Create and manage test listings
- Set prices in cryptocurrency (single price or range)
- View USD equivalent pricing
- Review and manage applicants
- Direct messaging with applicants
- Approve/reject applications
- Process cryptocurrency payments upon completion
- Browse available test opportunities
- Apply to tests with custom messages
- Track application status (pending, approved, rejected, hired)
- View tests in progress and completed
- Receive cryptocurrency payments
- Message with hirers
- Supabase authentication with email verification
- Avatar upload and profile management
- Real-time exchange rate display (crypto to USD/other fiats)
- Secure cryptocurrency payment processing
- Application and payment tracking
- Message history
- Framework: SvelteKit
- Styling: TailwindCSS
- Language: JavaScript (ESM, Node.js 20+)
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Storage: Supabase Storage (avatars)
- API Routes: SvelteKit endpoints
- Payment Processing: CryptAPI.io
- Exchange Rates: Tatum.io
- Package Manager: pnpm
- Testing: Mocha + Chai
- Linting: ESLint
- Formatting: Prettier
- Node.js 20 or newer
- pnpm (install via
npm install -g pnpm) - Docker and Docker Compose (for self-hosted Supabase)
- CryptAPI.io account
- Tatum.io API key
For detailed setup instructions, see SETUP.md
- Clone the repository:
git clone https://github.com/yourusername/tutorlinkup-web.git cd tutorlinkup-web- Install dependencies:
pnpm install- Set up self-hosted Supabase with Docker:
# Clone Supabase Docker repository git clone --depth 1 https://github.com/supabase/supabase cd supabase/docker # Copy the example environment file cp .env.example .env # Start Supabase services docker compose up -d # Return to project directorycd ../../tutorlinkup-web- Run the automated setup script:
pnpm run setupThis will:
- Copy
.env.exampleto.env - Prompt you for required environment variables
- Initialize Supabase CLI
- Run database migrations
- Set up the database schema
Alternatively, you can set up manually:
# Copy environment file cp .env.example .env # Edit .env with your credentials# Then initialize Supabase pnpx supabase init pnpx supabase db pushStart the development server:
pnpm run devThe application will be available at http://localhost:5173
Initial setup (automated):
pnpm run db:setupExport database (backup):
pnpm run db:exportImport database (restore):
pnpm run db:importView Supabase Studio (database UI):
# Supabase Studio is available at http://localhost:8000Run tests:
pnpm testRun tests in watch mode:
pnpm test:watchRun tests with coverage:
pnpm test:coverageBuild for production:
pnpm run buildPreview production build:
pnpm run previewtutorlinkup-web/ โโโ src/ โ โโโ lib/ โ โ โโโ components/ # Svelte components โ โ โโโ stores/ # Svelte stores โ โ โโโ utils/ # Utility functions โ โ โโโ services/ # API service modules โ โโโ routes/ # SvelteKit routes โ โ โโโ api/ # API endpoints โ โ โโโ auth/ # Authentication pages โ โ โโโ tests/ # Test listing pages โ โ โโโ applications/ # Application pages โ โ โโโ profile/ # User profile pages โ โโโ app.html # HTML template โโโ supabase/ โ โโโ migrations/ # Database migrations โโโ tests/ # Test files โโโ static/ # Static assets โโโ PRD.md # Product Requirements Document โโโ TODO.md # Development task list โโโ README.md # This file - users: User profiles and authentication
- tests: Test listings created by hirers
- applications: Test taker applications
- messages: Direct messaging between users
- payments: Cryptocurrency payment tracking
See PRD.md for detailed schema definitions.
- Email verification required for all accounts
- Row Level Security (RLS) enabled on all tables
- Secure file uploads with size and type validation
- Input validation and sanitization
- Webhook signature verification for payments
- No storage of private keys or sensitive payment data
- Ticker Create: Generate payment addresses
- Webhooks: Receive payment confirmations
- Supported Coins: BTC, ETH, USDT, and more
- Exchange Rates: Real-time crypto to fiat conversion
- Supported Pairs: BTC/USD, ETH/USD, USDT/USD, etc.
- 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
- Follow the KISS principle (Keep It Simple, Stupid)
- Write tests first (TDD approach)
- Use ESM modules exclusively
- Follow ESLint and Prettier configurations
- Create new Supabase migrations (never modify existing ones)
- Use
pnpx supabase migrations newfor new migrations
This project is licensed under the MIT License - see the LICENSE file for details.
- Supabase for backend infrastructure
- CryptAPI.io for payment processing
- Tatum.io for exchange rate data
- SvelteKit for the framework
For support, email [email protected] or open an issue in the repository.
See TODO.md for current development tasks and PRD.md for future enhancements.
Built with โค๏ธ using SvelteKit and Supabase