tryghost/ghost
Independent technology for modern publishing, memberships, subscriptions and newsletters.
How ghost is put together
TryGhost/Ghost is a pnpm + Nx monorepo for the Ghost professional publishing platform. The core backend (ghost/core, not shown in detail here) is a Node.js server, while the repository also hosts multiple frontend applications under apps/ — including a React-based admin (apps/admin with an Ember bridge to a legacy Ember admin in apps/ember-admin), ActivityPub UI, admin toolbar, portal, comments UI, signup form, announcement bar, and the shared 'shade' design-system app. Frontend apps are built with Vite and tested with Vitest and Playwright; local development runs through Docker Compose (compose.dev.yaml plus optional overlays for sqlite, mailgun, analytics, storage). A dedicated CI tool at .github/scripts/i18n-review posts non-blocking AI-generated reviews on translation PRs using Claude and the GitHub Reviews API.
Languages
Frameworks
Datastores
Infrastructure
Major components
apps/admin
The new React-based Ghost Admin client, built with Vite, integrating Koenig editor, shade design system, and bridging to the legacy Ember admin via an ember-bridge layer.
apps/ember-admin
The legacy Ember CLI-based admin application still present alongside the React admin.
apps/admin-x-framework
Shared TypeScript framework library providing API layers, hooks, helpers, routing wrappers, and test utilities consumed by admin-family apps.
apps/shade
The shared design system / component library (Tailwind + tokens) used across admin-family frontends.
apps/activitypub
React frontend for ActivityPub features, built as both ESM and UMD bundles with Vite.
apps/admin-toolbar
A lightweight Preact staff toolbar shipped as a UMD bundle via CDN.
apps/portal, apps/comments-ui, apps/signup-form, apps/announcement-bar
Public-facing embeddable frontend surfaces (membership portal, comments, signup forms, announcement bar), each built with Vite.
.github/scripts/i18n-review
Standalone CI advisory bot that reviews i18n translation PRs using Claude (@anthropic-ai/sdk) and posts GitHub COMMENT-event reviews via @octokit/rest.
Gift memberships took center stage with scheduled delivery and Portal integration, alongside continued TypeScript cleanups and performance work on site startup.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
Gift memberships took center stage with scheduled delivery and Portal integration, alongside continued TypeScript cleanups and performance work on site startup.
Week of 2026-08-17
The team reformatted the entire repository with a new code formatter and pushed forward dozens of TypeScript conversions plus Stripe testing infrastructure.
Week of 2026-08-10
Custom field filtering arrived for the members list, email analytics got more reliable, and documentation plus dependency updates filled out the week.
Week of 2026-08-03
Version 6.57.0 shipped with the new React member details screen replacing the old legacy one, plus groundwork for custom field improvements.
Week of 2026-07-27
A quiet week focused on setting up automated code review rules for type safety.
Over the past month the Ghost team shipped a major gift-membership feature (scheduled delivery, Portal entry points, cleanup jobs) while steadily modernizing the codebase through TypeScript conversions and a big reformat with a new formatter. They also released version 6.57.0 with a fully React-based member details screen, added custom-field filtering to the members list, and invested heavily in documentation and developer tooling.
Week by week
2026-08-24Gift memberships took center stage with scheduled delivery and Portal integration, alongside continued TypeScript cleanups and performance work on site startup.latest6 changes
Feature
Scheduled gift delivery
Gift subscriptions can now be set up to be delivered automatically at a chosen future date.
Feature
Portal gift membership entry points
Visitors can now start or manage gifted memberships directly from the Portal signup interface.
Refactor
Faster site startup
Two heavy components (the archiver and x402 adapter) were moved off the boot path so sites start more quickly.
Fix
Fixed dropped newsletter recipients
A bug that silently lost newsletter recipients when batch creation was interrupted was corrected.
Feature
One-click data export requests
A new endpoint lets users request an async export of their data without waiting for it to finish.
Docs
New architecture and feature flag guides
Internal documentation was expanded to explain how the app is structured at runtime and how to use feature flags.
2026-08-17The team reformatted the entire repository with a new code formatter and pushed forward dozens of TypeScript conversions plus Stripe testing infrastructure.6 changes
Chore
Repository-wide reformat with oxfmt
The whole codebase was reformatted using the oxfmt tool, with git configured so history blame stays readable.
Chore
Fake Stripe server hardening
The test double for Stripe now validates request shapes against schemas and rejects invalid requests just like the real service.
Refactor
Framework adoption in the admin UI
Theme editing, sign-out, unsaved-changes warnings, and navigation were all migrated to shared framework utilities.
Fix
Fixed Safari automation row links
Links on automation rows that were broken in the Safari browser now work correctly.
Fix
Fixed log flushing on exit
Background logs are no longer lost when the application shuts down.
Chore
Smaller Docker images
Duplicate dependencies were removed from the production image, with CI now reporting image sizes to catch bloat.
2026-08-10Custom field filtering arrived for the members list, email analytics got more reliable, and documentation plus dependency updates filled out the week.6 changes
Feature
Filter members by custom fields
Site owners can now filter their members list based on values stored in custom fields, including archived ones shown as read-only.
Fix
More reliable email analytics events
Open and click tracking events are now captured more dependably, with metrics wired into monitoring correctly.
Docs
Developer documentation expansion
Guides covering Node.js compatibility, editor package APIs, testing practices, and internal packages were added or refreshed.
Chore
Slimmer production dependencies
Unnecessary packages were stripped from production builds and Docker images to reduce size.
Refactor
Email analytics converted to TypeScript
The email analytics service and its tests were rewritten in TypeScript for better safety.
Chore
Dependency updates
Several libraries including dompurify, preact, and body-parser were bumped to newer versions.
2026-08-03Version 6.57.0 shipped with the new React member details screen replacing the old legacy one, plus groundwork for custom field improvements.5 changes
Feature
Released React member details screen
The redesigned member details page built in React is now live, replacing the older Ember-based screen which was deleted.
Fix
Fixed import mapping on short screens
The member import mapping step no longer breaks when viewed on smaller windows.
Refactor
Custom field values re-keyed
Custom field values are now stored by field key instead of numeric ID, making migrations safer across changes.
Docs
Internal package golden path docs
Documentation was added showing developers the recommended way to build and use internal packages.
Chore
v6.57.0 release
The release candidate process kicked off with a version bump to 6.57.1-rc.0 following the 6.57.0 release.
2026-07-27A quiet week focused on setting up automated code review rules for type safety.1 change
Chore
CodeRabbit review rules for TypeScript + Zod
Automated review rules were configured so pull requests get checked for proper TypeScript and Zod type-safety patterns.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 3 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required