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
| Layer | Technology |
|---|---|
| Web framework | Ruby on Rails 5.2.x (current releases use 6.x/7.x) |
| Language | MRI Ruby 2.5‑2.7 (compatible with newer 3.x via JRuby) |
| Database | PostgreSQL, MySQL/MariaDB, or SQLite3 (configured via database.yml) |
| Asset pipeline | Rails Asset Pipeline with ExecJS for JavaScript compilation; optional Webpacker support in newer forks |
| Image processing | MiniMagick/ImageMagick for thumbnails and media handling |
| Background jobs | Sidekiq/Resque (optional) for Twitter publishing and email notifications |
| Deployment | Capistrano, 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_plugingems that register callbacks (before_save,after_render) and add admin UI components. - Scripting API: the
publifyrake 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:
- Provision a VM or container with Ruby, Rails, and a supported database.
- Set environment variables (
SECRET_KEY_BASE,DATABASE_URL, optional S3 credentials). - Precompile assets and run migrations (
rails db:migrate). - 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_plugingem, register hooks, and ship it via RubyGems or Git. - Themes: Create a directory under
app/views/themes/your_themeand override partials (_post.html.erb,_layout.html.erb). - Webhooks: Configure
config/initializers/webhook.rbto 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/*.rbfiles; 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Contao
Open‑source CMS for professional, multilingual websites
Offen Fair Web Analytics
Privacy‑first web analytics for self‑hosted sites
Django-CRM
Open‑source CRM built on Django for full control and rapid customization
OpenSearch
Enterprise‑grade search and observability for unstructured data
InvenTree
Open‑source inventory management for makers and manufacturers
Traq
Self‑hosted PHP project manager for issues and milestones