Tech Lead - Senior Full Stack NextJS / Supabase Developer

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

TYPE OF WORK

Any

SALARY

TBD

HOURS PER WEEK

25

DATE UPDATED

Jun 24, 2025

JOB OVERVIEW

We're seeking an experienced Tech Lead Senior Next.js Developer to join our small innovative team.

Note: Any direct communication outside of onlinejobs.ph 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 the quality, competence and ability of the candidate.

This role requires a strong background in front-end development with particular expertise in Next.js, back-end development and 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
- Lead technical decision-making for front-end architecture
- Collaborate with cross-functional teams to deliver exceptional user experiences
- Perform code reviews
- Stay current with emerging technologies and best practices

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
- Strong proficiency in JavaScript/TypeScript, React, Tailwind (Shadcn)
- Experience with state management solutions (Redux, Context API, etc.)
- 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

Preferred Qualifications
- Experience with server-side rendering and static site generation
- Knowledge of performance optimisation techniques
- Experience with CI/CD pipelines
- Open-source contributions or personal projects showcasing relevant skills

Benefits
- Competitive salary based on experience
- Remote-friendly work environment
- Flexible working hours
- Professional development opportunities

Work Schedule:
- 9am - 5pm manila time, working with a team based in Sydney, Australia.
- Hours per week - min. 25hrs
- The days in which you work as well as the $$ rate will be discussed in the interview process


Questions
1. Explain the difference between server-side rendering (SSR), static site generation (SSG), and client-side rendering in Nextjs. When would you choose one approach over the others for a specific feature or project?
2. A Next.js application you're working on has slow initial page load times. Outline your approach to diagnosing and resolving this issue, including specific tools and techniques you would use. Additionally, include the word "blueberry" somewhere in your response so we know you're a human applicant reading these instructions carefully.
3. How would you design and implement a user authentication system with role-based access control using Next.js and Supabase? Include information about data structure, API endpoints, and client-side implementation.
4. In your own words, describe a challenging technical problem you've faced in your career, how you approached solving it, and what specific technologies or methodologies you used.

In your application, include your answers to the above questions as well as a link to your Github (and a portfolio of your existing work). Applications without answers to the above questions will be ignored. Responses can be bullet points, your answers will be discussed in the interview process.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0282
Total Execution Time  0.0295
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,527,296 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Tech-Lead-Senior-Full-Stack-NextJS-Supabase-Developer-1360992
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0179 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0021   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1360992
 LIMIT 1 
0.0008   SELECT *
FROM `employers`
WHERE `employer_id` = 801264
 LIMIT 1 
0.0052   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1360992
AND `misc`.`idIS NULL 
0.0007   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 '1360992' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1360992 
0.0026   UPDATE employer_jobs SET hit_counts '***Apr-22-2025=129***Apr-23-2025=29***Apr-24-2025=15***Apr-25-2025=8***Apr-27-2025=2***Apr-28-2025=9***Apr-29-2025=6***Apr-30-2025=2***May-01-2025=7***May-02-2025=3***May-03-2025=1***May-04-2025=4***May-05-2025=7***May-06-2025=2***May-07-2025=7***May-08-2025=1***May-09-2025=91***May-10-2025=19***May-11-2025=6***May-12-2025=9***May-13-2025=4***May-14-2025=8***May-15-2025=5***May-16-2025=7***May-17-2025=2***May-18-2025=3***May-19-2025=7***May-20-2025=3***May-21-2025=95***May-22-2025=49***May-23-2025=26***May-24-2025=14***May-25-2025=18***May-26-2025=18***May-27-2025=6***May-28-2025=90***May-29-2025=32***May-30-2025=19***May-31-2025=12***Jun-01-2025=2***Jun-02-2025=11***Jun-03-2025=8***Jun-04-2025=17***Jun-05-2025=89***Jun-06-2025=8***Jun-07-2025=8***Jun-08-2025=4***Jun-09-2025=8***Jun-10-2025=9***Jun-11-2025=7***Jun-12-2025=32***Jun-13-2025=99***Jun-14-2025=13***Jun-15-2025=4***Jun-16-2025=20***Jun-17-2025=9***Jun-18-2025=6***Jun-19-2025=6***Jun-20-2025=7***Jun-21-2025=3***Jun-22-2025=7***Jun-23-2025=5***Jun-24-2025=108***Jun-25-2025=16***Jun-26-2025=14***Jun-27-2025=11***Jun-28-2025=1***Jun-29-2025=2***Jun-30-2025=11***Jul-01-2025=10***Jul-02-2025=12***Jul-03-2025=6***Jul-04-2025=10***Jul-05-2025=1***Jul-06-2025=1***Jul-07-2025=7***Jul-08-2025=6***Jul-09-2025=6***Jul-10-2025=6***Jul-11-2025=3***Jul-12-2025=3***Jul-13-2025=1***Jul-14-2025=2***Jul-15-2025=5***Jul-16-2025=1***Jul-17-2025=6***Jul-18-2025=7***Jul-20-2025=2***Jul-21-2025=4***Jul-22-2025=3***Jul-23-2025=5***Jul-24-2025=5***Jul-26-2025=1***Jul-27-2025=2***Jul-28-2025=4***Jul-29-2025=2***Jul-30-2025=6***Jul-31-2025=2***Aug-02-2025=1***Aug-03-2025=2***Aug-04-2025=3***Aug-05-2025=3***Aug-07-2025=2***Aug-08-2025=2***Aug-09-2025=1***Aug-11-2025=2***Aug-12-2025=1***Aug-13-2025=1***Aug-14-2025=4***Aug-15-2025=1***Aug-16-2025=2***Aug-17-2025=1***Aug-18-2025=2***Aug-19-2025=2***Aug-20-2025=6***Aug-22-2025=1***Aug-23-2025=1***Aug-24-2025=1***Aug-26-2025=4***Aug-28-2025=2***Aug-29-2025=1***Aug-30-2025=1***Aug-31-2025=2***Sep-01-2025=8***Sep-02-2025=2***Sep-03-2025=2***Sep-04-2025=2***Sep-05-2025=3***Sep-07-2025=1***Sep-09-2025=3***Sep-11-2025=2***Sep-13-2025=3***Sep-14-2025=7***Sep-16-2025=2***Sep-17-2025=4***Sep-18-2025=1***Sep-19-2025=2***Sep-20-2025=1***Sep-21-2025=4***Sep-22-2025=2***Sep-23-2025=3***Sep-26-2025=2***Sep-28-2025=4***Sep-29-2025=2***Sep-30-2025=3***Oct-01-2025=1***Oct-02-2025=3***Oct-03-2025=2***Oct-04-2025=2***Oct-05-2025=1***Oct-06-2025=3***Oct-08-2025=2***Oct-09-2025=1***Oct-10-2025=3***Oct-12-2025=3***Oct-13-2025=2***Oct-15-2025=1***Oct-16-2025=1***Oct-17-2025=1***Oct-18-2025=1***Oct-19-2025=2***Oct-20-2025=5***Oct-21-2025=3***Oct-23-2025=7***Oct-24-2025=2***Oct-25-2025=1***Oct-26-2025=1***Oct-27-2025=2***Oct-28-2025=6***Oct-30-2025=4***Oct-31-2025=1***Nov-01-2025=3***Nov-02-2025=1***Nov-03-2025=5***Nov-04-2025=1***Nov-06-2025=1***Nov-07-2025=1***Nov-08-2025=1***Nov-10-2025=8***Nov-11-2025=4***Nov-12-2025=4***Nov-13-2025=3***Nov-16-2025=1***Nov-17-2025=6***Nov-18-2025=1***Nov-19-2025=1***Nov-20-2025=1***Nov-21-2025=1***Nov-22-2025=2***Nov-23-2025=3***Nov-27-2025=1***Nov-29-2025=2***Nov-30-2025=1***Dec-02-2025=5***Dec-03-2025=1***Dec-04-2025=1***Dec-05-2025=2***Dec-06-2025=1***Dec-07-2025=1***Dec-08-2025=3***Dec-09-2025=1***Dec-10-2025=1***Dec-11-2025=2***Dec-12-2025=6***Dec-14-2025=4***Dec-15-2025=3***Dec-18-2025=4***Dec-20-2025=2***Dec-21-2025=1***Dec-22-2025=1***Dec-24-2025=2***Dec-27-2025=1***Dec-29-2025=2***Dec-30-2025=3***Dec-31-2025=3***Jan-01-2026=4***Jan-02-2026=1***Jan-03-2026=1***Jan-05-2026=3***Jan-08-2026=4***Jan-09-2026=1***Jan-19-2026=2***Jan-20-2026=1***Jan-22-2026=1***Jan-23-2026=24***Jan-24-2026=3***Jan-25-2026=1***Feb-01-2026=1***Feb-02-2026=1***Feb-04-2026=1***Feb-06-2026=3***Feb-07-2026=2***Feb-08-2026=1***Feb-09-2026=1***Feb-10-2026=1***Feb-12-2026=2***Feb-13-2026=1***Feb-14-2026=2***Feb-16-2026=4***Feb-19-2026=1***Feb-20-2026=1***Feb-24-2026=1***Feb-25-2026=2***Feb-28-2026=1***Mar-01-2026=2***Mar-04-2026=1***Mar-06-2026=1***Mar-08-2026=3***Mar-09-2026=2***Mar-10-2026=1***Mar-11-2026=1***Mar-12-2026=1***Mar-13-2026=1***Mar-17-2026=1***Mar-19-2026=3***Mar-20-2026=3***Mar-21-2026=1***Mar-23-2026=1***Mar-24-2026=3***Mar-26-2026=4***Mar-27-2026=4***Mar-30-2026=1***Mar-31-2026=81***Apr-01-2026=47***Apr-03-2026=3***Apr-06-2026=4***Apr-08-2026=3***Apr-10-2026=1***Apr-15-2026=1' WHERE job_id'1360992'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Apr-2025=200***May-2025=575***Jun-2025=545***Jul-2025=129***Aug-2025=49***Sep-2025=63***Oct-2025=61***Nov-2025=52***Dec-2025=50***Jan-2026=46***Feb-2026=26***Mar-2026=115***Apr-2026=59' WHERE job_id'1360992'  
0.0013   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1360992' 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` = 1360992 
0.0024   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)