Node.js Backend Developer — Data Pipeline & REST API
Worldwide
We're building a standalone backend microservice that automates two weekly AI-generated research reports covering the global data centre market. The service persists all report data historically in SQLite and exposes everything via a clean REST API. This post covers the first two milestones — database, data loader, normalisation, and REST API. If M1 and M2 are delivered cleanly and on time, there is a confirmed M3–M5 engagement to follow covering automated generation, a PM review gate, platform publication, and a benchmarking layer. Full PRD and issue breakdown shared with shortlisted candidates. Milestone 1 — Database & historical data store Two report types: DC Hardware Weekly (~70 products) and Global DC Development Weekly (rolling top-100 project list). Both share the same SQLite database. Schema: report_runs, hardware_items, developments, sources, benchmarks, trend_metrics Historical backfill loaders from existing JSON archives POST /ingest endpoint — validates weekly JSON and writes to SQLite Every weekly snapshot preserved permanently and queryable across weeks Done when: Azraq can call POST /ingest and query rows across multiple weeks in SQLite. Milestone 2 — Normalisation & REST API The Global DC Development report contains free-text capacity and cost fields that need parsing into typed numeric columns. Parse capacity: "200 MW (Phase 1 of 1 GW)" to 200, "1.4 GW" to 1400 Parse cost: "SAR 1.88B ($501M)" to 501000000, "$1.2B" to 1200000000 Status enum mapping for both reports Automated 12-point quality gate post-ingest Full REST API with OpenAPI/Swagger spec Core endpoints: GET /hardware, GET /hardware/:vendor/:model/history, GET /hardware/delta GET /developments, GET /developments/:project_name/history, GET /developments/delta GET /reports, GET /reports/:id/quality, GET /sources, POST /ingest Done when: Swagger spec published and all endpoints return correctly typed, paginated data. What comes next — M3 overview for context If M1 and M2 are delivered well, M3 covers: -Scheduled node-cron job firing Monday morning, calling the Claude API to generate both reports automatically -Rolling-100 merge algorithm for Global DC Development — this is the technically hard piece. -Each week: new entries upsert on project_name, ranks reassign across 100 entries, near-duplicates over 80% name similarity flagged for PM review, projects that drop off stored with their final rank PM review gate: GET /diff, GET /preview, PATCH /approve, POST /publish POST /publish pushes the approved report to the platform API — nothing reaches the platform without PM approval M4 and M5 cover benchmarking, over-time trend analysis, and API sign-off. Stack Node.js, TypeScript, SQLite, Redis, AWS ECS You should apply if: You've shipped production Node.js TypeScript backend services You're comfortable designing SQLite schemas from scratch and writing efficient queries You can work from a written spec without hand-holding Available to start within 2 weeks We are NOT looking for: -Laravel or PHP developers — Node.js only -Full-stack developers who want to build UI — backend API only -Agencies — individual developer or small focused team only To apply (please read) 1.Share a similar Node.js backend project you've shipped 2.Your fixed-price quote for M1 and M2 3.How would you approach the rolling-100 merge algorithm described in M3? Specifically: rank reassignment across 100 entries, near-duplicate detection by project name, and tracking projects that drop off week over week. We're not asking you to build it now — we want to understand how you think about it.
- Less than 30 hrs/weekHourly
- 1-3 monthsDuration
- IntermediateExperience Level
$10.00
-
$20.00
Hourly- Remote Job
- Ongoing projectProject Type
Skills and Expertise
Activity on this job
- Proposals:20 to 50
- Last viewed by client:6 days ago
- Interviewing:5
- Invites sent:6
- Unanswered invites:1
About the client
- United Arab EmiratesDubai4:19 PM
- $1.8K total spent13 hires, 9 active
- 52 hours
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers 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