MCPSERV.CLUB
Publify

Publify

Self-Hosted

Self‑hosted Ruby on Rails blogging and micro‑publishing platform

Active(87)
1.9kstars
0views
Updated 25 days ago

Overview

Discover what makes Publify powerful

Publify is a mature Ruby on Rails content‑management platform that has been actively maintained since 2004. It is designed around a classic multi‑user blogging engine with an integrated micro‑blogging layer that can publish to Twitter. The system embraces IndieWeb principles, encouraging self‑hosting, ownership of content, and syndication across the web. For developers, Publify offers a fully functional API surface, extensible plugin architecture, and a straightforward Rails stack that can be deployed on any conventional Ruby hosting environment or containerized platform.

Multi‑user blogging

Micro‑blogging engine

Text filtering pipeline

Widget system

Overview

Publify is a mature Ruby on Rails content‑management platform that has been actively maintained since 2004. It is designed around a classic multi‑user blogging engine with an integrated micro‑blogging layer that can publish to Twitter. The system embraces IndieWeb principles, encouraging self‑hosting, ownership of content, and syndication across the web. For developers, Publify offers a fully functional API surface, extensible plugin architecture, and a straightforward Rails stack that can be deployed on any conventional Ruby hosting environment or containerized platform.

Key Features

  • Multi‑user blogging with role‑based permissions (admin, publisher, author).
  • Micro‑blogging engine that posts short messages to Twitter via OAuth.
  • Text filtering pipeline: Markdown, Textile, SmartyPants, @mentions → links, #hashtags → link.
  • Widget system and a plugin API that let developers inject custom functionality into the admin UI or front‑end rendering.
  • Custom theme engine based on ERB/SCSS, supporting multilingual content out of the box.
  • Advanced SEO hooks (meta tags, sitemaps, robots.txt) and built‑in RSS/Atom feeds.

Technical Stack

LayerTechnology
Web frameworkRuby on Rails 5.2.x (current releases use 6.x/7.x)
LanguageMRI Ruby 2.5‑2.7 (compatible with newer 3.x via JRuby)
DatabasePostgreSQL, MySQL/MariaDB, or SQLite3 (configured via database.yml)
Asset pipelineRails Asset Pipeline with ExecJS for JavaScript compilation; optional Webpacker support in newer forks
Image processingMiniMagick/ImageMagick for thumbnails and media handling
Background jobsSidekiq/Resque (optional) for Twitter publishing and email notifications
DeploymentCapistrano, Docker, Heroku (via rails_12factor), or any Ruby‑compatible PaaS

The core codebase is organized as a standard Rails application: models for User, Post, Message, and Widget; controllers expose RESTful endpoints; views are ERB templates that can be overridden by themes.

Core Capabilities & APIs

  • RESTful JSON endpoints for posts, users, and messages (e.g., /api/v1/posts.json).
  • Webhook support: publish events to external services (e.g., Slack, Zapier).
  • Plugin hook system: developers can create publify_plugin gems that register callbacks (before_save, after_render) and add admin UI components.
  • Scripting API: the publify rake tasks expose programmatic access to create posts, schedule messages, and manage users.
  • OAuth integration: built‑in support for Twitter OAuth1.0a; can be extended to other providers via OmniAuth.

Deployment & Infrastructure

Publify is a conventional Rails app, so it runs on any Ruby runtime with the required gems. Typical deployment steps:

  1. Provision a VM or container with Ruby, Rails, and a supported database.
  2. Set environment variables (SECRET_KEY_BASE, DATABASE_URL, optional S3 credentials).
  3. Precompile assets and run migrations (rails db:migrate).
  4. Start the web server (Puma/Unicorn) and a background job worker if needed.

Containerization is straightforward; the official Docker image for Rails can be used, or a custom Dockerfile that installs ImageMagick and compiles assets. Horizontal scaling is achieved by running multiple app instances behind a load balancer, with shared database and object storage (S3 or equivalent). The lightweight nature of the stack keeps memory usage low (~200 MB for a typical instance).

Integration & Extensibility

  • Plugins: Publish your own publify_plugin gem, register hooks, and ship it via RubyGems or Git.
  • Themes: Create a directory under app/views/themes/your_theme and override partials (_post.html.erb, _layout.html.erb).
  • Webhooks: Configure config/initializers/webhook.rb to expose endpoints that external services can POST to.
  • Third‑party APIs: Leverage the existing Twitter integration or add new adapters for Mastodon, RSS aggregators, etc.
  • Internationalization: All user‑facing strings are in I18n YAML files; developers can add new locales easily.

Developer Experience

  • Documentation: The README provides a clear install guide; the codebase is well‑commented and follows Rails conventions.
  • Community: Active GitHub issues, IRC channel (#publify), and a responsive maintainers team.
  • Testing: RSpec test suite with coverage reports; CI is set up via GitHub Actions.
  • Configuration: Uses standard Rails config/environments/*.rb files; environment variables for secrets.
  • Extensibility: The plugin API is intentionally simple, allowing quick addition of features without touching core code.

Use Cases

  • Personal blogs that want full control over content and data, with built‑in Twitter syndication.
  • Small team news sites requiring multi‑author workflow and content moderation.
  • IndieWeb practitioners who need a self‑hosted, open‑source platform that respects ownership.
  • Educational projects where students can

Open SourceReady to get started?

Join the community and start self-hosting Publify today