Senior Backend Engineer (Supabase / Postgres) — Remote

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

TYPE OF WORK

Full Time

SALARY

USD $2,000–$3,500 /month

HOURS PER WEEK

40

DATE UPDATED

Jul 17, 2026

JOB OVERVIEW

We're a growing consumer subscription business — not a tech company ourselves, we just rely heavily on a modern tech stack to run day-to-day operations. We're looking for a senior engineer to take ownership of our backend systems long-term.

We run three connected applications (a member-facing mobile app, an internal staff/operations platform, and an on-site operations tool), all built on a shared Supabase (Postgres) backend.

We need someone senior who can both write good code and think carefully about database security — not just "make it work."

What You'll Own


Database & backend: Postgres/Supabase schema, row-level security (RLS) policies, functions, triggers, and migrations across connected codebases
Security posture: auditing and closing access-control gaps, credential hygiene, keeping the system aligned with best practice as we grow
Three connected apps: a React Native/Expo mobile app, a React/Vite staff platform, and a React/Vite PWA used on-site — you don't need to be an expert in all three, but need to understand how they share the same backend
Automations & integrations: n8n workflows, third-party data ingestion (webhooks/APIs), payment/CRM integrations
Deployment & infrastructure: Vercel, Railway, GitHub Actions/CI
Documentation & process: making the system understandable and maintainable by more than one person, not reliant on one person's memory


Must-Have Experience


5+ years professional backend/full-stack development
Strong, hands-on Postgres experience — comfortable with functions, triggers, indexes, and query performance, not just basic queries
Direct experience with Supabase specifically, including row-level security (RLS) policy design — this is the single most important skill for this role
Solid React experience (React Native/Expo a plus, not required)
Comfortable working independently in a remote, async-first environment
Strong written English communication — you'll be documenting decisions for both technical and non-technical stakeholders


Strongly Preferred


Experience auditing or improving security on an existing system, not just building new features
Experience owning a system solo or as a lead, not just contributing to one
Familiarity with n8n or similar workflow automation tools
Experience with consumer subscription or membership-based platforms
Experience working directly with non-technical founders/stakeholders

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0012
Controller Execution Time ( Jobseekers / Job )  0.0114
Total Execution Time  0.0133
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,497,456 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Backend-Engineer-Supabase-Postgres-Remote-1691033
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0056 seconds)  (Hide)
0.0005   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1691033
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 956389
 LIMIT 1 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1691033
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-24',ej.date_added) duration_daysDATEDIFF('2026-07-24',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-07-24',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1691033' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1691033 
0.0011   UPDATE employer_jobs SET hit_counts '***Jul-17-2026=408***Jul-18-2026=95***Jul-19-2026=5***Jul-24-2026=1' WHERE job_id'1691033'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Jul-2026=509' WHERE job_id'1691033'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1691033' 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` = 1691033 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '956389'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)