← All reportsPublic report

forem/forem

For empowering community 🌱

23k stars Ruby View on GitHubprofiled 14d ago
Try GitZoid
85PRs this week
8Contributors
0Deps scanned
0Issues found
01 · Repo overview

How forem is put together

Forem is the open-source community platform that powers dev.to, built as a large Ruby on Rails 8 monolith with a progressively-enhanced Preact-first frontend served alongside server-rendered ERB views. Content flows through Rails controllers and ActiveRecord models backed by PostgreSQL (with a hard-required pgvector extension used for AI embedding-based feed recommendations), while Redis backs Sidekiq background jobs, sessions, caching, and feature-flag caching. Heavy work (feed generation, notifications, analytics, email delivery) is offloaded to Sidekiq workers scheduled via sidekiq-cron. The frontend is bundled by esbuild (with Babel transpilation), styled with Sass themes, and tested with Jest unit tests plus Cypress end-to-end tests.

Languages

RubyJavaScript (JSX)Sass/CSSHTML (ERB)SQL

Frameworks

Ruby on Rails 8.0.5Preact@hotwired/stimulusDeviseSidekiqesbuildBabelPostCSS

Datastores

PostgreSQL (pg extension, requires pgvector >= 0.8.0)Redis (sessions via redis-actionpack, Sidekiq queues, caching)

Infrastructure

Docker (Containerfile, Containerfile.base, Dockerfile, container-compose.yml, docker-compose.yml)Kamal 2 deployment (config/deploy.yml, .kamal/secrets, .kamal/hooks)GitHub Actions CI/CD (.github/workflows ci.yml/cd.yml per badges)Buildkite pipeline (.buildkite/pipeline.containers.yml)Gitpod (.gitpod.yml) and Ona development environmentsUffizzi preview environments (uffizzi/docker-compose.uffizzi.yml)Datadog observability (ddtrace, dogstatsd-ruby, datadog/prerun.sh)

Major components

Rails web application (app/controllers)

Handles all HTTP surface: articles, comments, follows, billboards, dashboards, uploads, AI chats, API secrets, and dozens of other resourceful controllers.

Authentication & identity

Devise-based authentication with OmniAuth social login strategies (GitHub, Twitter/X, Apple, Facebook, Google OAuth2, MLH), plus invitations (devise_invitable) and email authorizations.

Preact frontend (app/javascript)

Component-based client UI including shared components, crayons design system, Storybook stories, and Stimulus controllers, built via esbuild.config.mjs.

Background jobs & scheduling

Sidekiq workers with throttling and unique-jobs enforcement, driven by cron schedules defined in config/schedule.yml and config/sidekiq.yml.

Admin & internal tooling

Admin data querying and dashboards via Blazer and PGHero, feature flags via Flipper (with ActiveRecord store and UI), A/B testing via field_test, protected by rolify/Pundit roles.

Search, feed & personalization

Algolia-backed search/recommendations plus pgvector-powered semantic embeddings for feed ranking (optional GEMINI_API_KEY).

Media & content pipeline

Image/file uploads via CarrierWave (with bombshelter protection) to Cloudinary/AWS, imgproxy URL generation, Markdown rendering (redcarpet), Liquid templates, and RSS ingestion (feedjira).

Analytics & integrations

Event tracking via Ahoy (web and email), Segment-compatible analytics toward Customer.io CDP, transactional email via Customer.io, Mailchimp (gibbon), Stripe billing, Slack notifications, and GitHub API access (octokit).

Over the past five weeks the team has been steadily modernizing how Forem talks to external services and keeps pages fast. A major thread was moving email and activity tracking over to Customer.io, alongside a wave of performance work on caching, database indexes, and rate limiting. The last two weeks shifted toward polish: AI disclosure features for articles, richer event APIs, moderation center improvements, and a series of fixes to authentication redirects and edge caching.

Week by week

2026-08-24A quieter week focused on enriching the events API and smoothing out custom-domain sign-in behavior.latest4 changes

Feature

Events API now includes full details

Event data returned by the API now carries a full_details field so apps and automated agents get complete context in one call.

Feature

Filter events by type

The events API endpoint accepts a type_of query parameter so callers can request only the kinds of events they care about.

Fix

Custom org domains redirect signed-in users to the main site

People already logged in who land on an organization's custom domain are now redirected to the main domain instead of hitting an awkward iframe login.

Feature

Badge achievements API improved

The API that reports badge awards received general improvements to make it more useful and consistent.

2026-08-17A busy week centered on AI disclosure features, Customer.io tracking expansion, and a batch of caching and rate-limiting safeguards.6 changes

Feature

AI disclosure features shipped

Articles can now disclose AI involvement, with an admin toggle to control the feature and support exposed through the API.

Feature

AI disclosure respects feed preferences

Feed ranking and queries were updated so readers' preferences about AI-disclosed content actually shape what they see.

Feature

Rate limiting added for API reads

GET requests to the API are now capped at 30 per minute per caller to protect the service from overload.

Feature

Email consents synced to MLH Core

All of a user's email subscription choices are now shared with MLH Core, with moderator newsletter consents included.

Refactor

Database indexes created safely at scale

Several weeks of index-creation problems were resolved by building indexes concurrently without long lockups or risky drops.

Chore

Customer.io integration expanded

Article, comment, and reaction activity now flows into Customer.io's tracking system, and the old internal broadcast mailer was retired where Customer.io took over.

2026-08-10The biggest week of the stretch: digest emails moved fully onto Customer.io, a three-phase moderation center overhaul began, and numerous caching and privacy fixes landed.6 changes

Feature

Digest emails sent via Customer.io

The regular email digest is now delivered through Customer.io as a tracked event rather than the old transactional mail path, including click tracking and moderation gating.

Feature

Moderation center overhaul phases 1–3

Three successive phases rebuilt the moderation dashboard, improving how moderators review and act on content.

Fix

Edge cache poisoning prevented

A fix stopped Fastly from serving cached pages to the wrong person when login state got out of sync, and API routes no longer cache error pages at the edge.

Fix

Privacy fixes for personal information

Email addresses were removed from structured profile data shown to search engines, and the API now requires authentication before revealing anyone's email.

Fix

Published dates show in local time

Article publish dates now display in each reader's own timezone instead of a single fixed one.

Feature

One-click unsubscribe support

Emails now include RFC 8058 headers so readers can unsubscribe from newsletters with a single click.

2026-08-03A small maintenance week fixing OAuth account re-linking and keeping error pages out of the edge cache.3 changes

Fix

Machine-created identity links repaired on re-auth

When someone signs in again through an external provider, an incorrectly linked account identity now gets pointed to the right place.

Fix

Clearer message after failed OAuth relink

A broken error message was replaced with a simple call-to-action telling people to sign in directly.

Fix

API errors no longer cached by Fastly

Error responses from API routes are excluded from edge caching so stale or wrong errors aren't served to other users.

2026-07-27A feature-rich week adding AI-powered article evaluation, organization page reordering, event management tools, and several user-facing bug fixes.6 changes

Feature

AI-powered concept article evaluation

Articles can now be automatically evaluated against key concepts using AI, with thresholds that tune themselves dynamically.

Feature

Organization page reordering

Organizations gained the ability to reorder their pages, with proper cache updates and validation when something goes wrong.

Feature

Event management improvements

Admins can now fork (duplicate) events and send custom emails to everyone signed up for an event.

Feature

LiveCodes embed tag

A new liquid tag lets authors embed interactive LiveCodes playgrounds directly in posts.

Fix

Unicode social images fixed

Social sharing images now render correctly when titles contain special characters like emoji or accented letters.

Refactor

Faster home page cache refresh

The home page's edge cache was shortened to 60 seconds with quick revalidation, so fresh content appears sooner.

03 · Security check

Dependencies and code review

0 dependencies scanned

Dependency advisories

Security Watch

No known advisories across 0 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