Senior Full-Stack Engineer — Multi-Tenant SaaS Platform

Posted 3 weeks ago

Worldwide

Summary

Job Description Overview We are building a production-grade, multi-tenant SaaS platform for a field operations company operating nationwide across multiple US time zones. The platform serves 14 distinct portals across web and mobile, connecting field workers, managers, clients, and residents in real time. Architecture is fully pre-decided and documented — you are building, not designing. This is a focused, well-scoped engagement with detailed technical specifications ready to hand over on day one. The right candidate will move fast, write clean TypeScript, and operate independently with minimal hand-holding. ________________________________________ Platform Scope 14 portals serving 7 distinct user roles, split across: • 3 mobile PWAs — offline-first, installable, bilingual (English + Spanish) • 11 web portals — 1440px desktop, data-dense, real-time dashboards Core technical requirements: • Multi-tenant middleware with subdomain-based tenant resolution and Redis caching • Real-time GPS tracking pipeline feeding a live operations dashboard • Geofence detection using PostGIS spatial queries (ST_Contains) on a PostgreSQL 15 database • Building-level collection tracking with Redis presence sets (SADD/SREM/SCARD pattern) • Offline-first service worker with IndexedDB queue and background sync • Role-based access control (7 roles, strict per-portal enforcement) • JWT + TOTP two-factor authentication (NextAuth v5) • Direct-to-S3 photo uploads via presigned PUT URLs (never through the server) • BullMQ job queue for multi-channel announcement fan-out (push + email + in-app) • Timezone-aware cron jobs (node-cron, per-community IANA timezone) • Stripe multi-tenant billing with immediate proration • WCAG 2.1 AA compliance throughout Infrastructure: • Vercel (Next.js) + two separate Railway services (Socket.io real-time server + cron server) • Upstash Redis, AWS S3, Twilio SMS, SendGrid email, Google Maps API ________________________________________ Tech Stack Layer Technology Framework Next.js 14 App Router, TypeScript strict mode Database PostgreSQL 15 + PostGIS, Prisma ORM Auth NextAuth.js v5 — JWT + TOTP 2FA Real-time Socket.io (Railway) Job queue BullMQ Cache Upstash Redis Storage AWS S3 (presigned URLs only) Payments Stripe Maps Google Maps API + Geometry library Styling Tailwind CSS + Shadcn/ui + Framer Motion State TanStack Query + React Server Components Tables TanStack Table Forms React Hook Form + Zod i18n next-intl Push web-push (VAPID) + Twilio fallback Hosting Vercel + Railway ________________________________________ What Is Provided You will receive on day one: • Complete Prisma schema (47 tables, fully designed) • CLAUDE.md master build rules file (works with Claude Code) • Comprehensive architecture decisions document covering every major technical choice • Portal-by-portal spec files for all 14 portals • Session-by-session build prompts if using Claude Code as your assistant • Answers to any clarifying questions within 24 hours You are not being asked to design or architect anything. You are being asked to execute a well-defined plan with expert precision. ________________________________________ Engagement Details • Type: Fixed-price milestones • Timeline: 18 working days target across 6 parallel build sessions • Communication: Async daily updates + two scheduled check-ins per week • Location: Remote, any timezone • Start: Immediate upon agreement ________________________________________ Demo Requirement — Required to Be Considered Before submitting a proposal, build and submit a small demo demonstrating the following in a single Next.js 14 App Router project: 1. Multi-tenant middleware — subdomain extracted from the request host, looked up in a mock Redis store, injected as a header, and returned 404 for unknown subdomains 2. PostGIS geofence check — a single API route that accepts [lat, lng] and returns whether the point is inside a hardcoded polygon using a raw ST_Contains query via Prisma $queryRaw 3. Real-time update — a Socket.io connection where clicking a button on one browser tab updates a counter on another tab in under 500ms The demo does not need to be polished. It needs to be correct. Include a README with setup instructions. A public GitHub repo is required — no zip files. This demo is the first filter. Proposals without a working demo link will not be reviewed. ________________________________________ Ideal Candidate You are the right fit if: • You have shipped at least one multi-tenant SaaS product in production • You have worked with PostGIS or another spatial database in a production environment • You have built offline-first PWAs with service workers and background sync • You are comfortable with Socket.io real-time architecture at scale • You think in TypeScript — strict mode, no any, Zod-validated boundaries • You have deployed to Vercel and Railway (or similar split-service architecture) • You can read a schema and spec file and build without being walked through every line • You are available for a 30-minute video call within 3 days of submitting your proposal You are not the right fit if: • You need UI/UX direction — design specs are provided • You have not worked with multi-tenant middleware before • You primarily work in React without Next.js App Router experience • Your PostGIS experience is limited to reading documentation ________________________________________ Your Proposal Should Include 1. Your bid — total fixed price or hourly rate with estimated total hours 2. Demo link — GitHub repo URL (required) 3. Relevant experience — brief description of the most similar project you have shipped, including tech stack and your specific role 4. One technical answer — explain in 3–5 sentences how you would handle the following: A GPS ping arrives from a mobile device every 10 seconds. You need to check whether the collector is inside any of 20 polygon geofences for their community, update a Redis presence set, and emit a WebSocket event — all within the same request cycle. What does your implementation look like and what are the failure modes?

  • Less than 30 hrs/week
    Hourly
  • 1-3 months
    Duration
  • Expert
    Experience Level
  • Remote Job
  • Ongoing project
    Project Type
Skills and Expertise
Mandatory skills
AI App Development
React
Activity on this job
  • Proposals:50+
  • Last viewed by client:3 weeks ago
  • Hires:
    1
  • Interviewing:
    2
  • Invites sent:
    0
  • Unanswered invites:
    0
About the client
Member since Sep 22, 2021
  • United States
    Pineville9:33 PM
  • $26K total spent
    17 hires, 3 active
  • 1,599 hours

Explore similar jobs on Upwork

Software DeveloperHourly‐ Posted 7 months ago
ASP.NET MVC
Django
Python
AngularJS
JavaScript
jQuery
WordPress
Google Chrome Extension
React
CRM Development
Microsoft Dynamics 365
Microsoft Dynamics CRM
Microsoft Dynamics Development
Microsoft PowerApps
Single Sign-On
Build Marketplace on TokopediaHourly‐ Posted 4 weeks ago
PHP
HTML5
JavaScript
Web Development

How it works

  • Post a job icon
    Create your free profile
    Highlight your skills and experience, show your portfolio, and set your ideal pay rate.
  • Talent comes to you icon
    Work the way you want
    Apply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
  • Payment simplified icon
    Get paid securely
    From contract to payment, we help you work safely and get paid securely.
Want to get started? Create a profile

About Upwork

  • Rating is 4.9 out of 5.
    4.9/5
    (Average rating of clients by professionals)
  • G2 2021
    #1 freelance platform
  • 49,000+
    Signed contract every week
  • $2.3B
    Freelancers earned on Upwork in 2020

Find the best freelance jobs

Growing your career is as easy as creating a free profile and finding work like this that fits your skills.

Trusted by

  • Microsoft Logo
  • Airbnb Logo
  • Bissell Logo
  • GoDaddy Logo