Senior Full Stack NextJS / Supabase Developer

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

TYPE OF WORK

Any

SALARY

$15/hr - $30/hr

HOURS PER WEEK

35

DATE UPDATED

Dec 13, 2025

JOB OVERVIEW

We are seeking a Senior Full Stack Developer to join our lean and agile team to help expand and support our existing live B2B SaaS product.

Note: Any direct communication outside of Upwork will be ignored (including WhatsApp, LinkedIn, Direct Email, etc).

The initial contract will be a 3-month engagement with the option to renew/proceed for a longer-term contract depending on quality, competence, and ability. This will include a 2-3 week paid trial period.

About the Project:
This is a mature, production application with an established codebase featuring form builders, workflow automation, multi-tenant architecture, and integrations with third-party services. You'll be working alongside the founding team and contributing to both feature development and codebase improvements.

Role Requirements:
- A STRONG background in front-end development with particular expertise in the nuances of developing front-end optimised applications.
- A strong understanding of databases (especially Supabase).

The ideal candidate will lead technical initiatives, contribute to the architecture and mostly, develop scalable web applications.

Responsibilities:
- Design, develop, and maintain high-performance web applications using Next.js
- Implement and optimise database functionality using Supabase, including writing efficient PostgreSQL queries and managing RLS policies
- Build and extend complex, dynamic form systems with conditional logic
- Contribute to front-end architecture decisions, particularly around state management and data fetching patterns
- Perform code reviews and maintain code quality standards
- Debug and resolve production issues across the full stack

Requirements
- At least 5 years of front-end development experience
- At least 3 years of professional experience with Next.js
- Demonstrated experience with Supabase or similar backend-as-a-service platforms and Postgres
- Strong proficiency in JavaScript/TypeScript, React, Tailwind (Shadcn)
- Familiarity with Tanstack Query or similar data-fetching solutions
- Understanding of Row Level Security and RBAC database design patterns
- Knowledge of responsive design principles and cross-browser compatibility (Exposure to Expo is important)
- Excellent problem-solving skills and attention to detail
- Strong communication and collaboration abilities
- Fluent english speaker

If the above describes you...
Let's build something great together. We're offering more than a contract — it's a chance to join a tight-knit team, contribute to a product with real traction, and grow alongside it. No bureaucracy, no endless meetings, just meaningful work with people who care about getting it right.

Deliverables
Enhance existing product features
Collaborate with team on new functionalities
Ensure seamless integration with Supabase
Optimize performance and scalability
Provide technical support and guidance

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0125
Total Execution Time  0.0137
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,504,712 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-NextJS-Supabase-Developer-1533752
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0074 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1533752
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 801264
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1533752
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-15',ej.date_added) duration_daysDATEDIFF('2026-04-15',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-04-15',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1533752' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1533752 
0.0014   UPDATE employer_jobs SET hit_counts '***Dec-13-2025=162***Dec-14-2025=56***Dec-15-2025=70***Dec-16-2025=39***Dec-17-2025=26***Dec-18-2025=33***Dec-19-2025=25***Dec-20-2025=7***Dec-21-2025=14***Dec-22-2025=10***Dec-23-2025=15***Dec-24-2025=6***Dec-25-2025=4***Dec-26-2025=3***Dec-27-2025=8***Dec-28-2025=3***Dec-29-2025=8***Dec-30-2025=8***Dec-31-2025=2***Jan-01-2026=5***Jan-02-2026=10***Jan-03-2026=3***Jan-04-2026=2***Jan-05-2026=8***Jan-06-2026=8***Jan-07-2026=7***Jan-08-2026=3***Jan-09-2026=14***Jan-10-2026=4***Jan-11-2026=5***Jan-12-2026=3***Jan-13-2026=4***Jan-14-2026=1***Jan-15-2026=4***Jan-16-2026=12***Jan-17-2026=1***Jan-18-2026=3***Jan-19-2026=7***Jan-20-2026=3***Jan-21-2026=4***Jan-22-2026=8***Jan-23-2026=24***Jan-24-2026=3***Jan-25-2026=2***Jan-26-2026=3***Jan-27-2026=8***Jan-28-2026=8***Jan-29-2026=5***Jan-30-2026=5***Jan-31-2026=1***Feb-01-2026=3***Feb-02-2026=7***Feb-03-2026=7***Feb-04-2026=2***Feb-05-2026=3***Feb-06-2026=5***Feb-07-2026=5***Feb-08-2026=2***Feb-09-2026=5***Feb-10-2026=1***Feb-11-2026=3***Feb-12-2026=4***Feb-14-2026=3***Feb-15-2026=10***Feb-16-2026=10***Feb-17-2026=2***Feb-18-2026=4***Feb-19-2026=6***Feb-20-2026=9***Feb-21-2026=11***Feb-22-2026=7***Feb-23-2026=6***Feb-24-2026=7***Feb-25-2026=5***Feb-26-2026=5***Feb-27-2026=6***Feb-28-2026=6***Mar-01-2026=7***Mar-02-2026=5***Mar-03-2026=1***Mar-04-2026=7***Mar-05-2026=5***Mar-06-2026=5***Mar-07-2026=1***Mar-08-2026=2***Mar-09-2026=12***Mar-10-2026=8***Mar-11-2026=4***Mar-12-2026=6***Mar-14-2026=2***Mar-15-2026=7***Mar-16-2026=5***Mar-17-2026=5***Mar-19-2026=5***Mar-20-2026=1***Mar-21-2026=5***Mar-22-2026=2***Mar-23-2026=5***Mar-24-2026=4***Mar-25-2026=3***Mar-26-2026=2***Mar-27-2026=5***Mar-28-2026=2***Mar-30-2026=1***Mar-31-2026=83***Apr-01-2026=56***Apr-02-2026=4***Apr-03-2026=2***Apr-05-2026=2***Apr-06-2026=4***Apr-07-2026=2***Apr-08-2026=1***Apr-09-2026=2***Apr-10-2026=3***Apr-11-2026=1***Apr-15-2026=1' WHERE job_id'1533752'  
0.0008   UPDATE employer_jobs SET monthly_hits '***Dec-2025=499***Jan-2026=178***Feb-2026=144***Mar-2026=200***Apr-2026=78' WHERE job_id'1533752'  
0.0010   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1533752' 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` = 1533752 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '801264'
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)