← All reportsPublic report

tryghost/ghost

Independent technology for modern publishing, memberships, subscriptions and newsletters.

55k stars JavaScript View on GitHubprofiled 11d ago
Try GitZoid
400PRs this week
32Contributors
3Deps scanned
0Issues found
01 · Repo overview

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

JavaScriptTypeScriptCSS

Frameworks

ReactPreactEmber.js (legacy ember-admin)ViteVitestPlaywrightNxTailwind CSSreact-router@tanstack/react-queryzodreact-hook-form

Datastores

MySQL (docker dev via compose.dev.yaml)SQLite (compose.dev.sqlite.yaml dev variant)

Infrastructure

Docker Compose (dev stack: compose.dev.yaml and overlay files)Dockerfile.productionGitHub Actions workflows (.github/workflows/)Tinybird analytics (ghost/core/core/server/data/tinybird)Stripe dev harness (docker/stripe/with-stripe.sh)Mailgun dev compose overlayDevcontainer (.devcontainer/)

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.

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.

03 · Security check

Dependencies and code review

3 dependencies scanned

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