All projects

Freelance2026

Diaspor.org

A multi-tenant publishing platform: a branded news site for every diaspora organisation, and one national feed.

Role
Full-stack · freelance
Period
05 - 09/2026
Tenancy
Subdomain per organisation
Core
Spring Boot · Next.js

01Overview

Diaspor.org gives each diaspora organisation its own branded news site on a subdomain, while a main portal aggregates their approved news into a single national feed.

I designed and built the whole system end to end: API, admin panel, public sites, database and media storage.

02The problem

Many small organisations need a professional news site, but running a separate site for each is expensive and fragments their content. The platform has to give every organisation its own identity while sharing one codebase, one database and one editorial pipeline.

03Architecture

One Spring Boot API serves two frontends: a React admin panel where organisations manage content, and a server-rendered Next.js site that renders every organisation's subdomain and the national portal.

Audiences

Organisation sites

Branded subdomain per org

National portal

Aggregated feed

Editors & admins

Content management

Frontend

Next.js public site

SSR · SEO

React admin panel

TypeScript

API

Spring Boot REST API

Java

Role-based access

Per-role permissions

Approval

Gate into the national feed

Data & infra

PostgreSQL

Versioned migrations

AWS S3

Media storage

Docker

Containerised backend

04Components

Public site

Every organisation, one app

  • A single Next.js application renders each organisation's branded subdomain site.
  • Server-side rendering makes news pages fast and indexable by search engines.

Next.js · SSR

Admin panel

Where content is managed

  • A React + TypeScript panel for creating and managing news, with access controlled by role.

React · TypeScript

REST API

Single source of truth

  • Spring Boot API shared by both frontends.
  • Role-based access control and an approval step for publishing to the national feed.

Java · Spring Boot

Storage

Data and media

  • PostgreSQL schema evolves through versioned migrations.
  • Images and media are stored in S3, not in the database.

PostgreSQL · AWS S3

05How it works

  1. 1

    Write

    An organisation's editor creates a news post in the admin panel.

  2. 2

    Store

    The API saves the post in PostgreSQL and uploads media to S3.

  3. 3

    Publish

    The post appears on the organisation's own subdomain site.

  4. 4

    Approve

    Approved posts are aggregated into the national feed on the main portal.

06Design decisions

Multi-tenant, not multi-deploy

One codebase and one database serve every organisation - new organisations are data, not new deployments.

SSR for public pages

News is read by search engines and shared on social media, so pages are rendered on the server.

Versioned migrations

Every schema change is a reviewed, repeatable migration, so environments never drift apart.

Media outside the database

S3 keeps the database small and the backend containers stateless and easy to redeploy.

07Tech stack

Backend
JavaSpring BootREST
Frontend
Next.jsReactTypeScript
Data & infra
PostgreSQLAWS S3Docker

Next case study

EduVision

An adaptive intelligent tutoring system with a neuro-symbolic architecture.