Senior Full-Stack Developer (React/TypeScript/Supabase) - Long-Term Full-Time

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

TYPE OF WORK

Full Time

SALARY

750

HOURS PER WEEK

40

DATE UPDATED

Jul 19, 2026

JOB OVERVIEW

We are a SaaS company (influencer marketing platform, real paying customers) looking for ONE strong developer to become our long-term technical owner. This is a stable, full-time, direct position - not project-based.

IMPORTANT - READ BEFORE APPLYING: Our codebase was built fast using AI tools (Lovable) and has real technical debt: 266K lines of code, 274 backend edge functions with duplication, 554 database migrations, 4,300-line React components, no tests, TypeScript strict mode disabled. Your first months will be untangling and stabilizing this - not building shiny new features. If that excites you, keep reading. If you only enjoy greenfield projects, this is not for you.

YOUR RESPONSIBILITIES:
- Refactor large components into maintainable modules
- Consolidate duplicated Supabase edge functions
- Gradually enable TypeScript strict mode and fix what surfaces
- Add automated tests to critical flows (payments, contracts, WhatsApp webhooks)
- Fix recurring bugs at the root cause, not the symptom
- Use Claude Code / Codex daily to move fast - but with real engineering judgment behind it

REQUIREMENTS:
- Solid professional development experience with real production systems (not only AI-generated projects)
- Strong React + TypeScript, strong PostgreSQL
- Real experience inheriting and cleaning up messy production codebases
- Excellent written English, reliable internet, able to work independently
- Experience with Supabase (or Firebase + willingness to learn fast)
- 3-4 hours daily overlap with Israel time (GMT+3)

HOW TO APPLY - VIA WHATSAPP ONLY:
Click to message us on WhatsApp: ----------
1. Start your message with the word REFACTOR so we know you read this
2. Include a link to a project where you inherited messy code and improved it - tell us what you found and fixed
3. One paragraph: how would you safely break down a 4,300-line React component without freezing development?

Messages missing any of these three will not be answered. Our screening assistant will ask you a few technical questions first - answer them seriously, they d ---------- who gets an interview.

HIRING PROCESS: WhatsApp screening -> short interview -> paid test task (3-5 hours, we pay $50) -> full-time offer.

COMPENSATION: $750/month full-time. Long-term stable role with an owner who invests in you.

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.0143
Total Execution Time  0.0157
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,500,008 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Developer-ReactTypeScriptSupabase-Long-Term-Full-Time-1692053
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0089 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1692053
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 956978
 LIMIT 1 
0.0010   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1692053
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-09',ej.date_added) duration_daysDATEDIFF('2026-08-09',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-08-09',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1692053' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1692053 
0.0018   UPDATE employer_jobs SET hit_counts '***Jul-19-2026=758***Jul-20-2026=248***Jul-21-2026=119***Jul-22-2026=47***Jul-23-2026=16***Jul-24-2026=11***Jul-25-2026=14***Jul-26-2026=10***Jul-27-2026=14***Jul-28-2026=17***Jul-29-2026=3***Jul-30-2026=6***Jul-31-2026=7***Aug-01-2026=8***Aug-02-2026=2***Aug-03-2026=9***Aug-04-2026=6***Aug-05-2026=3***Aug-06-2026=1***Aug-07-2026=10***Aug-08-2026=2***Aug-09-2026=1' WHERE job_id'1692053'  
0.0014   UPDATE employer_jobs SET monthly_hits '***Jul-2026=1269***Aug-2026=42' WHERE job_id'1692053'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1692053' 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` = 1692053 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '956978'
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)