Full-stack developer

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Gig

WAGE / SALARY

$7 to $15 an hour

HOURS PER WEEK

15

DATE UPDATED

May 14, 2026

JOB OVERVIEW

We are looking for a full-stack developer to build a web application from a completed technical specification. The architecture, database schema, security policies, and backend logic are fully documented. Your job is to implement, wire together, and deploy a production-ready MVP.
This is a fixed-scope project with clear deliverables. The ideal candidate is experienced with Supabase, React/TypeScript, and Stripe — and is comfortable working independently from a technical brief.

What Is Already Done
The following have been fully designed and are provided to you on day one:
• PostgreSQL schema (10 tables, indexes, triggers, enum types)
• Row Level Security (RLS) policies for every table
• Multi-level referral payout engine (SQL functions + views)
• Stripe webhook handler (TypeScript, ready to deploy as Supabase Edge Function)
• Interactive UI prototype (HTML/React mockup of all screens)
• Architecture diagram and implementation README

Deliverables
1. Backend Setup
• Deploy all SQL files to Supabase project in correct order
• Configure Supabase Auth (email/password + magic link)
• Set up Supabase Storage bucket for project file attachments
• Enable Realtime on messages, notifications, invites, and bids tables
• Deploy Stripe webhook as Supabase Edge Function
• Configure Stripe product ($10/month), Connect for payouts, and webhook events
• Set up Resend for transactional email (invite notifications, payment alerts)
• Enable pg_cron and schedule monthly payout batch job
2. Frontend (React + TypeScript + Vite)
• Onboarding flow: signup, role/specialty selection, referral code capture
• Professional card page: editable profile, share link, QR code, view analytics
• Project dashboard: post project, set visibility, upload attachments
• Invite system: invite by email ---------- real-time status tracking
• Bid management: submit bid, review bids, update bid status
• Discover page: searchable/filterable professional directory
• Messaging: real-time direct messages and project-threaded messages
• Earnings dashboard: referral tree, per-level earnings, payout history
• Billing page: Stripe Customer Portal embed for subscription management
• Notifications: in-app bell + unread count, mark-as-read
3. Public Pages (no auth required)
• Share card page: ---------- /card/ — public professional profile
• Referral landing: ---------- /join?ref= — captures referral before signup
• Marketing landing page (provided as HTML, convert to React)
4. Quality & Delivery
• Responsive design (desktop + tablet priority, mobile-friendly)
• Deployed to Vercel (frontend) and Supabase (backend)
• Environment variables documented
• Brief handover call / Loom walkthrough on delivery

Tech Stack
Layer Technology
Frontend React 18 + TypeScript + Vite
Styling Tailwind CSS
Backend / DB Supabase (PostgreSQL 15)
Auth Supabase Auth
File Storage Supabase Storage
Payments Stripe (Subscriptions + Connect)

Email
Resend
Deployment Vercel (frontend) + Supabase (backend)
State Management Zustand or React Query

Required Skills
• React + TypeScript: 3+ years, including hooks, context, and form handling
• Supabase: hands-on experience with RLS, Edge Functions, and Realtime
• Stripe: subscriptions, webhooks, and ideally Stripe Connect
• PostgreSQL: comfortable reading and debugging SQL functions and views
• REST/async patterns: fetch, error handling, loading states
• Deployment: Vercel and environment variable management
Nice to Have
• Experience building marketplace or SaaS applications
• Familiarity with pg_cron or similar job scheduling
• React Native experience (for future mobile phase)

How to Apply
Please send the following to [your email]:
• Links to 2–3 relevant projects (SaaS, marketplace, or subscription apps preferred)
• Brief description of your Supabase and Stripe experience
• Your fixed-price quote or hourly rate + estimated hours
• Your availability and earliest start date
Applicants who have read this brief carefully and reference our tech stack specifically will be prioritised. We are happy to share the full technical documentation (schema, RLS policies, webhook handler) with shortlisted candidates before you quote.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0730
Total Execution Time  0.0745
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,534,104 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-stack-developer-1646685
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0676 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1646685
 LIMIT 1 
0.0010   SELECT *
FROM `employers`
WHERE `employer_id` = 444968
 LIMIT 1 
0.0576   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1646685
AND `misc`.`idIS NULL 
0.0006   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-22',ej.date_added) duration_daysDATEDIFF('2026-06-22',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-22',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1646685' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1646685 
0.0015   UPDATE employer_jobs SET hit_counts '***May-14-2026=698***May-15-2026=172***May-16-2026=71***May-17-2026=41***May-18-2026=72***May-19-2026=20***May-20-2026=26***May-21-2026=31***May-22-2026=28***May-23-2026=18***May-24-2026=6***May-25-2026=25***May-26-2026=26***May-27-2026=9***May-28-2026=11***May-29-2026=1***May-30-2026=2***May-31-2026=3***Jun-01-2026=4***Jun-02-2026=9***Jun-03-2026=3***Jun-04-2026=3***Jun-05-2026=3***Jun-06-2026=3***Jun-07-2026=3***Jun-08-2026=1***Jun-09-2026=4***Jun-10-2026=3***Jun-11-2026=7***Jun-12-2026=2***Jun-14-2026=1***Jun-15-2026=2***Jun-16-2026=1***Jun-17-2026=2***Jun-18-2026=3***Jun-19-2026=4***Jun-22-2026=1' WHERE job_id'1646685'  
0.0006   UPDATE employer_jobs SET monthly_hits '***May-2026=1258***Jun-2026=59' WHERE job_id'1646685'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1646685' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1646685 
0.0037   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '444968'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)