Loading

LinkOrbits – Affiliate Marketing & Program Aggregation Platform

Overview

LinkOrbits is an affiliate marketing platform that centralizes and aggregates affiliate programs from multiple networks such as Awin, Tradedoubler, and Impact. Publishers can browse available programs, request access, and manage their affiliate relationships through a single dashboard. The system includes an ETL (Extract, Transform, Load) service that syncs program data from partner APIs, an Express-based backend for auth and program management, and a modern React frontend built with Vite and Tailwind CSS for a fast, responsive experience.

Challenge & Solution

Problem

Affiliates and publishers often work with multiple affiliate networks, each with its own API, dashboard, and data format. Manually checking programs, comparing offers, and tracking requests across Awin, Tradedoubler, and Impact was time-consuming and fragmented. There was no unified place to browse, filter, and request programs. Program data had to be fetched and kept in sync manually, leading to stale or inconsistent information and limited scalability.

Solution

I built LinkOrbits as a full-stack SaaS platform with a decoupled ETL service that extracts, normalizes, and loads affiliate program data from multiple sources into a single PostgreSQL database. The backend provides JWT authentication, program browsing, and a program-request workflow for publishers, while admins can manage publishers and approve requests. The frontend delivers a clean, fast UI for exploring programs and tracking requests. Scheduled ETL runs keep data fresh, and the architecture supports adding new affiliate networks with minimal changes.

AspectImplementation
FrontendReact 19 + Vite + TypeScript + Tailwind CSS 4
BackendExpress + TypeScript + Prisma + PostgreSQL
ETL ServiceNode.js – syncs Awin, Tradedoubler, Impact APIs
AuthJWT + bcrypt
Data SyncIncremental upserts, soft deletes, scheduled cron jobs
AdminPublisher management, program request approval
Multi-Source
3+ Networks

Awin, Tradedoubler, and Impact integrated and normalized in one place.

Automated Sync
Scheduled ETL

Daily and hourly syncs keep program data up to date automatically.

Request Flow
End-to-end

Publishers request programs; admins approve and manage access.

Scalable
Extensible

Easy to add new affiliate networks with minimal schema changes.

System Architecture
LinkOrbits system architecture

My Role

  • Architected and built the full-stack platform (frontend, backend, ETL).
  • Developed the React frontend with Vite, Tailwind CSS, and React Router.
  • Built the Express backend API with Prisma, JWT auth, and admin endpoints.
  • Designed and implemented the ETL service for Awin, Tradedoubler, and Impact integration.
  • Implemented incremental sync, soft deletes, and scheduled cron jobs for data freshness.
  • Set up publisher registration, program browsing, and program-request workflow.
  • Configured email notifications with Nodemailer for admin and user alerts.
Tech Stack
React Vite TypeScript Tailwind CSS Express Prisma PostgreSQL JWT Node-cron Winston

Technical Implementation

Frontend: React 19, Vite 7, TypeScript, Tailwind CSS 4, React Router, Axios | Backend: Express, Prisma, PostgreSQL, JWT, bcrypt, Zod, Helmet, Nodemailer | ETL: Node.js, Prisma, node-cron, stream-json, Winston | Auth: JWT with refresh flow | Sync: HTTP API extraction, incremental upserts, soft deletes, scheduled runs (daily, 6h, 8h)

ETL Service Features
  • Multi-source: Awin, Tradedoubler, Impact APIs with automatic pagination
  • Incremental sync: Upsert pattern, soft deletes for removed programs
  • Scheduling: node-cron – full sync daily, per-source sync every 6–8 hours
  • Streaming: stream-json for large payloads to avoid memory issues
  • Logging: Winston with daily log files and error logs
API Endpoints
AreaEndpoints
AuthRegister, Login (JWT)
UserProfile get/update
ProgramsList, details, request, list requests
AdminPublishers list/status/site-id, program requests list/approve

Architecture Highlights

  • 01 - Decoupled ETL service – runs independently with scheduled cron
  • 02 - Normalized program model – source, externalId, status, URLs, sectors, regions
  • 03 - Idempotent ETL – safe to re-run, handles duplicates with upserts
  • 04 - Publisher program-request workflow with admin approval
  • 05 - Prisma for type-safe DB access and migrations
  • 06 - Helmet and rate limiting for API security

Deliverables

  • React frontend (Vite, Tailwind, program browse and request UI)
  • Express backend API (auth, programs, admin)
  • ETL service for Awin, Tradedoubler, Impact
  • PostgreSQL schema with Prisma
  • JWT authentication and role-based access
  • Scheduled data sync with node-cron
  • Admin dashboard for publisher and request management

Project Name: LinkOrbits | Industry: Affiliate Marketing / SaaS | Duration: Completed

Tags :
Aebad ul Quadir

Full Stack Web & App Developer. Built LinkOrbits from the ground up, including the ETL service, backend API, and React frontend for affiliate program aggregation.