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 directory
cd ../../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