Skip to main content

Backoffice Overview

The Percus Backoffice is the central web platform through which clients manage their personalized video campaigns and through which the Percus internal team operates accounts. It is a multi-tenant Next.js 15 application backed by four independent .NET 10 microservices.

Two audiences​

AudienceWhoWhat they do
Client usersMarketing managers, project leads, developers, motion designersCreate and manage projects, upload templates, publish to distribution channels, generate landing pages
Percus internalAccount managers, platform adminsManage organizations, assign system roles, oversee all accounts

Architecture at a glance​

The platform is divided into four backend services, each owning its own data:

  • Identity Service — users, organizations, roles, invitations, authentication (PostgreSQL)
  • Campaign Service — projects, templates, distribution channels, landing pages, API credentials (PostgreSQL)
  • Render Data Service — per-viewer personalization data for the hosted model (DynamoDB, not PostgreSQL)
  • Analytics Service — playback and interaction event ingest, rollups and metrics

No service reads another service's database directly.

The frontend (Next.js 15, App Router) talks to both services and uses NextAuth.js for session management.

Core modules​

Projects​

The primary organizational unit. A project represents a personalized video campaign. Each project contains templates, distribution channels, and optionally public landing pages. See Projects.

Templates​

Video template bundles uploaded by motion designers. Supports two kinds: Lottie-based (JSON animation) and Raster (MP4 video + Lottie overlay). Templates are versioned and progress through a testing → production workflow. See Templates.

Distribution Channels​

Each project has three fixed channels: DEV, STAGING, and PROD. Publishing a template to a channel activates it for that environment. See Distribution Channels.

Public Video Shares​

Shareable landing pages that serve a personalized video for a given channel. Can be enabled, disabled, and their URLs rotated. See Public Video Shares.

API Credentials​

Per-project credentials (key + secret) used to authenticate programmatic access. See Public Video Shares.

Roles & Permissions​

Access is controlled by organization-scoped roles assigned per user. See Roles & Permissions.

Analytics​

A dashboard reporting playback, completion, CTA click-through and survey responses, scoped to the organization. Fed by the Analytics Service.

Integration​

Where per-viewer personalization data is uploaded for the Percus-hosted model, and where the embed snippet for a channel is obtained. See Data Handling for how that data is stored, and the Snippet reference for the snippet's attributes.

Subtitles and transcripts​

Templates can carry timed subtitle tracks per locale and a full-text transcript. Both are authored in the design plugin and travel in the manifest — see the Player manifest reference.

Technology stack​

LayerTechnology
FrontendNext.js 15, React 19, TypeScript, Tailwind CSS
AuthenticationNextAuth.js 5 — Google OAuth 2.0 and Microsoft Entra ID
Backend.NET 10, C#, ASP.NET Core
ArchitectureClean Architecture, DDD, CQRS
DatabaseAurora PostgreSQL 17 with Entity Framework Core; DynamoDB for render data
InfrastructureAWS Lambda, Aurora Serverless v2, S3, CloudFront
CI/CDGitHub Actions, AWS CDK