Juicerfeed is a Ruby on Rails 8 app for exploring social posts from multiple sources (X, Facebook, Instagram…)
- Sources imported from a Mockend API
- Posts imported from the same API
- Filtering by platform, media type and source.
- Infinite scroll on the posts feed
- A small analytics dashboard (top posts by views, likes, comments, shares)
- Ruby: 3.4.6
- Rails: 8.1.x
- Database: PostgreSQL
- HTTP client: Faraday
- Pagination: Pagy
- Async jobs UI: Mission Control Jobs
- Frontend:
- Ruby on Rails Default Stack, Turbo, html.erb Files
- Importmaps
- Stimulus included by default but not used in this project
- Alpine.js
- Simple Vanilla CSS, no libraries
No Node / Webpacker / JS bundler is required.
You’ll need:
- Ruby 3.4.6 (rbenv / rvm recommended)
- PostgreSQL (running locally)
- Bundler
git clone git@github.com:chille1987/juicerfeed.git
cd juicerfeedbundle installJuicerfeed uses credentials per environment(development, test, production) so you will need to create/edit development and test credentials by running:
bin/rails credentials:edit -e development
bin/rails credentials:edit -e testClose each file to save it and then run:
bin/rails db:create db:migrateDevelopment server
bin/rails serverJuicerfeed used Rails built-in SolidQueue to run background jobs so you will need to run it in separate tab
bin/jobs startIn order to access UI for Background jobs under /jobs you will need a username and password setup in rails:credentials for mission control jobs.
bin/rails credentials:edit -e developmentand add username and password for mission control jobs, you can add any username and password:
mission_control:
http_basic_auth_user: juicerfeed
http_basic_auth_password: juicerfeedDevelopment and test credentials are added in .gitignore so everyone who runs the app can have it's own credentials for development and test environment.
Restart the server and now you should be able to see UI for jobs under
/jobsJuicerfeed uses Minitest
To run all tests:
bin/rails testSome useful focused runs: Model tests (e.g. scopes + validations):
bin/rails test test/models/post_test.rb
bin/rails test test/models/source_test.rbService tests:
bin/rails test test/services/fetch_sources_from_api_test.rb
bin/rails test test/services/fetch_posts_from_api_test.rbController tests:
bin/rails test test/controllers/posts_controller_test.rb
bin/rails test test/controllers/analytics_controller_test.rbJuicerfeed uses SolidCache to cache posts, in order to enable cache in Development you will need to run:
bin/rails dev:cacheMore on SolidCache can be found here:
https://guides.rubyonrails.org/caching_with_rails.html#solid-cache
This app is deployed to juicerfeed.com on a Hetzner VPS server via kamal.
Typical steps (summary):
Configure config/deploy.yml for your server.
Ensure secrets are available to Kamal (e.g. via kamal secrets or environment).
bin/kamal setup
bin/kamal deployExact Kamal configuration will depend on your server setup and registry credentials.
More info on how to deploy with Kamal can be found here: