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
Frameworks
Datastores
Infrastructure
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).
A quieter week focused on enriching the events API and smoothing out custom-domain sign-in behavior.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week focused on enriching the events API and smoothing out custom-domain sign-in behavior.
Week of 2026-08-17
A busy week centered on AI disclosure features, Customer.io tracking expansion, and a batch of caching and rate-limiting safeguards.
Week of 2026-08-10
The 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.
Week of 2026-08-03
A small maintenance week fixing OAuth account re-linking and keeping error pages out of the edge cache.
Week of 2026-07-27
A feature-rich week adding AI-powered article evaluation, organization page reordering, event management tools, and several user-facing bug fixes.
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.
Dependencies and code review
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