OpenCM/
Wiki
Documentation

Every feature, documented

The complete reference for the OpenCM framework. From first install to production deployment — everything in one place.

Quick Start

4 steps

From zero to a fully running CM platform in under 10 minutes.

01

Prerequisites

Node.js ≥ 20, pnpm ≥ 10, Docker Desktop. Clone the repo and you're ready to go.

02

One-command install

Run pnpm local — starts Supabase, applies all migrations, and launches Next.js in a single step.

03

Access points

:3000/admin for the back-office · :3000/member for the client portal · :54323 for Supabase Studio.

04

First run: Setup Wizard

On the very first visit the Setup Wizard launches automatically. It creates your admin account and configures every aspect of the platform before anything else.

Tip

pnpm local is the only command you need. It orchestrates Supabase, migrations, and Next.js — all in one step.

Setup Wizard

5 steps

A locked, one-time guided flow that configures every aspect of the platform. Runs on first visit — permanently locks itself on completion.

01

Branding

Set your site name, tagline, logo URL, and brand colors (primary, secondary, accent). Changes are applied instantly across the entire platform.

02

Admin account creation

Create the first — and only — administrator account directly in the wizard. No default credentials exist. The email and password you set here become the sole access to the back-office.

03

Stripe keys

Paste your Stripe publishable and secret keys. They are encrypted and stored in the tenant_secrets table in the database. They never appear in env files or source code.

04

Feature flags

Choose which modules to activate for this deployment: portfolio showcase, tutorials library, broadcast messaging, and sector-specific landing pages.

05

Legal pages

Enter company name, registration number (SIRET), address, and contact email. These auto-populate all legal pages: privacy policy, CGU, mentions légales, and cookie policy.

Tip

The wizard locks permanently after completion. To change any setting later, go to Admin → Settings — every option remains editable there.

Client Management

4 topics

Your CM pipeline at a glance. Track every client from first contact to long-term partnership.

Client profiles

Full record per client: contact info, social handles, assigned plan, current status, and a complete notes log.

Status pipeline

Prospect → Onboarding → Active → Paused → Churned. One click updates the status instantly in the database.

Notes & history

Log every call, email, or action. Entries are timestamped and tracked by author.

Multi-account view

See every active client with their plan, last activity date, and next renewal at a glance.

Editorial Calendar

4 topics

Plan and visualise every publication across all client accounts in a single calendar view.

Monthly grid

Color-coded monthly calendar — each event shows the platform icon, client name, and scheduled time.

Quick add

Click any day to create an event. Assign client, platform, time, caption, and media in seconds.

Client visibility toggle

Choose per event whether the client can see it. Members only ever see their own scheduled content.

Reminders

Automatic in-app reminders delivered 24 h before each scheduled publication.

Social Accounts

4 topics

Centralise every client's social media presence — handles, credential hints, and performance data.

Account registry

Store usernames, profile URLs, and notes for every platform per client. No more spreadsheets.

Performance snapshots

Log follower counts and engagement rates over time to track and visualise growth.

Shareable link page

Each client gets a public /link/:slug page — a personalised Linktree-style profile page.

8 platforms supported

Instagram · TikTok · LinkedIn · Facebook · YouTube · Twitter/X · Pinterest · Snapchat.

Packages & Billing

4 topics

Create service packages, assign them to clients, and collect payments via Stripe — all in-app.

Service packages

Define packages with a name, description, price, and feature list. Create as many as you need.

Client assignment

Assign one or multiple packages to any client. Changes sync instantly to their portal.

Stripe Checkout

Members can purchase upgrades directly from their portal. One-time or recurring — your choice.

Billing portal

The Stripe Customer Portal is embedded so clients can manage invoices and payment methods themselves.

Broadcast

4 topics

Send announcements and updates to all — or a targeted segment of — your clients at once.

Mass messages

Write once, send to all active members. Rich text with full formatting support.

Targeted segments

Filter recipients by plan tier, status, or language. Only reach the people who need to know.

In-app notifications

Every broadcast creates an unread notification badge in each member's portal.

Message history

Full archive of every broadcast sent, with per-recipient read tracking.

Resources & Tutorials

4 topics

Build a branded knowledge library for your clients — PDFs, videos, guides, and more.

Upload anything

Add PDFs, YouTube embeds, Notion links, Loom videos, or any URL as a resource entry.

Categories & tags

Organise content by topic. Members filter by category to find exactly what they need.

Plan gating

Lock premium content behind higher-tier plans. Members see teasers for locked items.

Featured content

Pin resources to the top of the library — perfect for onboarding guides and key documents.

Member Dashboard

4 topics

The home screen your clients see — activity feed, key stats, and quick actions.

Activity feed

Recent calendar events, messages, and resource updates shown in chronological order.

Stats overview

Posts scheduled, engagement trend, and days until next renewal — at a glance.

Notifications

Unread messages, new broadcast badge, and upcoming publication reminders.

Quick actions

One-click access to send a message, view the calendar, or download the latest invoice.

Messages & Questions

4 topics

A direct, real-time communication channel between your CM team and each client.

Direct messaging

Real-time chat per client powered by Supabase Realtime. No polling — messages are instant.

Question threads

Clients post questions that stay open until answered. Nothing falls through the cracks.

File attachments

Attach images, PDFs, or links in any message. Files are stored securely in Supabase Storage.

Read receipts

Both sides see when messages have been read. Timestamps and status indicators throughout.

Quotes & Invoices

4 topics

Clients view and accept quotes online, and access all their invoices from one place.

Quote creation

Admin generates a quote from a template or from scratch and sends it to the member portal.

Online acceptance

Client clicks Accept — automatically triggers Stripe Checkout if a payment is configured.

Invoice downloads

All paid invoices are available as PDF directly from the member settings page.

Billing history

Full timeline of every quote, invoice, and payment — exportable as CSV.

Dynamic Branding

4 topics

Make the platform 100% yours — every tenant runs with its own visual identity.

Site name & URL

Your brand name appears in the browser tab, login page, transactional emails, and all legal docs.

Logo

Set a logo URL. It is rendered automatically in the navbar, setup wizard, and login screen.

Color system

Primary, secondary, and accent colors are injected as CSS custom properties at the root level.

Dark mode

Dark theme by default. Light mode is built-in. CSS variables ensure perfect contrast in both.

terminal
:root {
--color-primary: #f472b6; /* from tenant_config */
--color-secondary: #a78bfa;
--color-accent: #fb7185;
}

Stripe & Payments

4 topics

Full Stripe integration — checkout, subscriptions, billing portal, and real-time webhooks.

Secure key storage

Stripe keys entered in the wizard are encrypted in tenant_secrets — never in env files or git.

Checkout sessions

One-time and recurring payments via Stripe Checkout. Redirects back to the portal on success.

Webhook sync

Webhooks keep subscription status, plan assignments, and invoice records in sync in real-time.

Customer portal

Members can update cards, cancel subscriptions, or download invoices via the Stripe-hosted portal.

Auth & Security

4 topics

Enterprise-grade auth powered by Supabase with multi-level, database-enforced access control.

PKCE auth flow

Supabase Auth with PKCE. Secure email/password login. Magic links are optional.

Row Level Security

Every table has RLS policies. Users can only access their own rows — enforced at the database level.

Role system

Two roles: admin (full access) and member (portal only). Checked server-side on every page.

Session handling

HTTP-only secure cookies. Sessions expire on inactivity. CSRF protection is built-in.

Feature Flags & i18n

4 topics

Toggle platform modules live without a redeploy, and serve the UI in French or English.

Module toggles

Enable or disable: portfolio showcase, tutorials library, broadcast messaging, sector landing pages.

French & English

Full UI in FR and EN. Default language is set per tenant and stored per user preference.

Auto-legal pages

Privacy policy, CGU, mentions légales, cookies — auto-populated from your tenant config.

Live config

All flags live in the tenant_config table. Change any setting live — zero redeployment required.

Deployment

4 topics

One command to ship everything — Supabase, Next.js, and Nginx — on any VPS.

Docker Compose

docker compose up -d starts Supabase, applies all migrations, and launches Next.js in one command.

Nginx + TLS

Bundled Nginx config with automatic HTTPS via Let's Encrypt. Point your domain — you're done.

deploy.sh

One script: git pull, build, migrate, restart. Zero-downtime rolling deploy.

Environment

.env.local for local dev, Docker secrets for production. Zero committed credentials.

Tip

Minimum VPS: 2 vCPU / 4 GB RAM. Recommended: Hetzner CX21 (€4/mo) or DigitalOcean Basic Droplet.

Ready to build with OpenCM?

Every feature above is included in your license.

Get OpenCM →