|

Openfront Social

Self-hosted personal publishing with creator-owned sites, collections, versioned items, publication snapshots, destination consent, and privacy review.

Openfront Social is a self-hosted personal publishing application. A creator signs in to a studio, sets up one personal site, organizes work into collections, drafts items, and publishes versions to a public site at /<handle>. Visitors read published profiles, collections, items, and an RSS feed. People managers add creators and review privacy requests.

External destinations (X, Instagram, Threads) are consent records only. The current source has no dispatcher and no provider credentials, so nothing is ever sent to a social network. A recorded external publication is a local intent, not a delivered post.

Who it is for

  • Creators who want a site they control for notes, writing, runs, projects, albums, films, books, links, or custom work.
  • Operators (people managers) who host the application for one or more creators, add creator accounts when public sign-up is closed, and decide privacy requests.
  • Developers who want a small, owner-scoped Keystone and Next.js publishing codebase to extend.

What the codebase contains

AreaLocationPurpose
Schema and workflowsfeatures/keystone/models, features/keystone/mutationsTen Keystone lists and the GraphQL commands, public reads, and privacy queue
Operator and creator dashboardfeatures/platform, app/dashboard/(admin)/platform/**Items, collections, site, publications, destinations, activity, your data, creators, privacy requests
Admin shellfeatures/dashboardAuthentication, first-user init, generic list and item screens
Public sitefeatures/personal-site, app/[handle]/**, app/feeds/[handle]Profile, collection, and item pages, RSS, sitemap, themes, and logos
Landing and accountfeatures/storefront, app/page.tsx, app/account/**Product landing page, creator sign-in, and sign-up when it is open
Onboardingfeatures/platform/onboardingTheme choice and a fictional demo site from seed.json, or a blank site

The schema map in the source repository (docs/schema-map.md) lists every list, field, and workflow; Architecture and workflows summarizes it.

Ownership and tenancy

There is no organization or tenant model. The ownership boundary is the creator: each User owns at most one PersonalSite, and every collection, item, publication, publish job, connected account, and media asset is scoped through that site to its owner. Access rules in features/keystone/access.ts filter all of these lists to the signed-in owner, generic create, update, and delete are closed, and every write goes through the studioCommand mutation. Public pages use separate sudo queries that return only published, exposable content.

On this page