Full Stack Developer — MVP Build for Multi-School Operations & Compliance Platform

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

TYPE OF WORK

Gig

WAGE / SALARY

$500

HOURS PER WEEK

40

DATE UPDATED

Apr 24, 2026

JOB OVERVIEW

===>Goal
Build a functional MVP web app to manage multi-school operations, compliance checklists, and performance scoring.

===>Core Requirements
Responsive web platform (desktop + mobile)
User authentication (JWT/OAuth2) with role-based access
Single user can manage multiple schools
CRUD for schools, classrooms, staff, activities, hours of operation
Configurable checklists (compliance, opening, closing, kitchen, playground, etc.)
Each checklist:
Assigned to target role (teacher, director, etc.)
Frequency (hourly ? yearly)
Weighted scoring logic
Dashboard & Reports: color-coded scores, historical trends, export to CSV
Secure API-driven architecture for scalability

===>Tech Expectations
Frontend: React / Next.js (Tailwind or Bootstrap)
Backend: Node.js (Express) ---------- Core REST API
Database: PostgreSQL / MySQL (multi-tenant schema)
Auth: JWT or OAuth2
Charts: Chart.js / Recharts / D3.js
Deployment: AWS / Azure / Render
Version Control: GitHub (daily commits + documentation)

===>Deliverables (4-Week MVP)
Week 1: Auth system, roles, base schema
Week 2: School CRUD + checklist builder
Week 3: Checklist execution + weighted scoring
Week 4: Dashboard, analytics, exports, polish

===>Success Criteria
Fully functional MVP deployed on test server
3+ checklists usable end-to-end
Admin + Staff roles active
Scoring dashboard with trends
Clean GitHub repo + Postman docs

===>Requirements
3–5+ years full-stack experience
Strong React + Node.js ( ---------- Core)
Proven experience with multi-user SaaS systems
Clean code, communication, and deadlines

===>Engagement
Duration: 4 weeks MVP (extendable for full product build)
Weekly demos + daily GitHub commits
Payment tied to milestone delivery

===>Apply
Send: Resume or LinkedIn
GitHub/portfolio links
Short proposal outlining your stack preference & timeline
----------
===>Chantilly, VA (EST Collaboration Preferred)

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0246
Total Execution Time  0.0259
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,501,824 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-Developer-MVP-Build-for-Multi-School-Operations-Compliance-Platform-1497419
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0191 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1497419
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 673528
 LIMIT 1 
0.0098   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` = 1497419
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-23',ej.date_added) duration_daysDATEDIFF('2026-06-23',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-23',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1497419' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1497419 
0.0015   UPDATE employer_jobs SET hit_counts '***Oct-23-2025=114***Oct-24-2025=24***Oct-25-2025=15***Oct-26-2025=7***Oct-27-2025=17***Oct-28-2025=8***Oct-29-2025=5***Oct-30-2025=9***Oct-31-2025=6***Nov-01-2025=6***Nov-02-2025=8***Nov-03-2025=7***Nov-04-2025=6***Nov-05-2025=10***Nov-06-2025=3***Nov-07-2025=1***Nov-08-2025=3***Nov-09-2025=1***Nov-10-2025=3***Nov-11-2025=2***Nov-12-2025=1***Nov-14-2025=1***Nov-15-2025=1***Nov-16-2025=1***Nov-17-2025=3***Nov-20-2025=3***Nov-23-2025=1***Nov-26-2025=1***Nov-29-2025=1***Dec-02-2025=2***Dec-04-2025=2***Dec-05-2025=1***Dec-06-2025=1***Dec-08-2025=2***Dec-09-2025=1***Dec-10-2025=3***Dec-11-2025=5***Dec-14-2025=1***Dec-15-2025=3***Dec-17-2025=2***Dec-19-2025=1***Dec-20-2025=1***Dec-23-2025=1***Dec-27-2025=1***Dec-29-2025=1***Dec-30-2025=1***Jan-06-2026=1***Jan-07-2026=1***Jan-10-2026=1***Jan-11-2026=2***Jan-12-2026=1***Jan-15-2026=2***Jan-16-2026=2***Jan-28-2026=1***Jan-31-2026=2***Feb-01-2026=2***Feb-07-2026=1***Feb-08-2026=4***Feb-11-2026=1***Feb-16-2026=1***Feb-17-2026=1***Mar-01-2026=1***Mar-07-2026=1***Mar-08-2026=1***Mar-30-2026=1***Apr-21-2026=1***Apr-22-2026=1***Apr-24-2026=5***Apr-25-2026=1***Apr-26-2026=1***Apr-27-2026=1***May-02-2026=3***May-03-2026=10***May-04-2026=7***May-05-2026=7***May-06-2026=7***May-07-2026=12***May-08-2026=7***May-09-2026=4***May-10-2026=1***May-11-2026=4***May-12-2026=4***May-13-2026=5***May-14-2026=1***May-15-2026=2***May-16-2026=4***May-17-2026=2***May-18-2026=3***May-19-2026=1***May-20-2026=28***May-21-2026=12***May-24-2026=1***May-25-2026=1***May-26-2026=1***May-27-2026=1***May-28-2026=1***May-29-2026=1***May-30-2026=1***Jun-01-2026=5***Jun-02-2026=2***Jun-05-2026=4***Jun-07-2026=2***Jun-09-2026=1***Jun-12-2026=1***Jun-17-2026=1***Jun-19-2026=2***Jun-20-2026=2***Jun-22-2026=1***Jun-23-2026=1' WHERE job_id'1497419'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Oct-2025=205***Nov-2025=63***Dec-2025=29***Jan-2026=13***Feb-2026=10***Mar-2026=4***Apr-2026=10***May-2026=131***Jun-2026=22' WHERE job_id'1497419'  
0.0017   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1497419' 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` = 1497419 
0.0017   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '673528'
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)