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
| Audience | Who | What they do |
|---|---|---|
| Client users | Marketing managers, project leads, developers, motion designers | Create and manage projects, upload templates, publish to distribution channels, generate landing pages |
| Percus internal | Account managers, platform admins | Manage 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
| Layer | Technology |
|---|---|
| Frontend | Next.js 15, React 19, TypeScript, Tailwind CSS |
| Authentication | NextAuth.js 5 — Google OAuth 2.0 and Microsoft Entra ID |
| Backend | .NET 10, C#, ASP.NET Core |
| Architecture | Clean Architecture, DDD, CQRS |
| Database | Aurora PostgreSQL 17 with Entity Framework Core; DynamoDB for render data |
| Infrastructure | AWS Lambda, Aurora Serverless v2, S3, CloudFront |
| CI/CD | GitHub Actions, AWS CDK |