Senior Full-Stack Developer, Consumer Marketplace Build

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

TYPE OF WORK

Full Time

WAGE / SALARY

35k to 50k PHP

HOURS PER WEEK

40

DATE UPDATED

Jun 4, 2026

JOB OVERVIEW

Engagement: Contract / freelance, fixed-term
Duration: Approximately 4 to 5 months from kickoff to App Store launch
Location: Remote, Singapore time zone overlap preferred
Commitment: Full-time equivalent for the build window
About the project
We are building a new consumer mobile app and web platform in the kids' education and enrichment space in Singapore. Think subscription-based marketplace: parents on one side, activity providers on the other, payments and bookings flowing through the app.
The build covers a parent-facing mobile app (iOS and Android), a partner-facing web dashboard, and an internal admin panel, all sitting on a single backend. Full scope and product detail shared under NDA after a first conversation.
Who we are looking for
A senior full-stack developer who can own the build end-to-end. No agency layers, no rotating juniors. You write the code, you make the architectural calls, you ship.
You should be strong across:

React Native at production scale, including App Store and Play Store submissions you have personally handled
Node.js (Fastify) or Python (FastAPI) for the backend
PostgreSQL, including schema design for stateful systems like wallets, ledgers, or subscriptions
Stripe Subscriptions and Stripe Connect (marketplace payouts, commission splits)
React + TypeScript for web dashboards
AWS in production, or an equivalent Supabase + Vercel stack

Bonus if you bring:

Two-sided marketplace experience (matching, dynamic pricing, supply-side onboarding)
WhatsApp Business API or ---------- integration work
Singapore PDPA familiarity
Solid DevOps muscle (GitHub Actions CI/CD, Sentry or Datadog)

How we will work

Weekly 30-minute check-in with the product owner, plus async updates
Bi-weekly demos at the end of each sprint
Milestone-based payments tied to clear acceptance criteria
Clean handover at the end: code, documentation, and runbooks stay with us

Communication is direct. Push back on bad ideas. Bring proposals, not just questions. If something will take longer than estimated, flag it the day you know.
How to apply
Send a short note with:
- Links to two or three projects you have shipped that resemble this build. Marketplace, mobile and web combined, payments, or subscription work all count
- Your indicative timeline and weekly availability for a build of this shape
- Your rate/month
One question you would want answered before kicking off

Shortlisted candidates do a 45-minute technical conversation, then a paid short design exercise before final selection.

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.0177
Total Execution Time  0.0191
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,499,960 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Developer-Consumer-Marketplace-Build-1661678
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0119 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1661678
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 803434
 LIMIT 1 
0.0050   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` = 1661678
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-20',ej.date_added) duration_daysDATEDIFF('2026-06-20',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-20',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1661678' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1661678 
0.0006   UPDATE employer_jobs SET hit_counts '***Jun-04-2026=567***Jun-05-2026=77***Jun-06-2026=7***Jun-07-2026=13***Jun-08-2026=9***Jun-09-2026=7***Jun-10-2026=4***Jun-11-2026=4***Jun-12-2026=2***Jun-13-2026=1***Jun-20-2026=2' WHERE job_id'1661678'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jun-2026=692' WHERE job_id'1661678'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1661678' 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` = 1661678 
0.0023   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '803434'
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)