Dining Car is free, open-source Ruby on Rails recipe management and social network that allows users to create, store and share their recipes. It is federation-enabled using the ActivityPub protocol used by softwares such Mastodon, Pleroma and Plume.
Dining Car is heavily inspired by OpenEats, but its focus is slightly different.
These are Dining Car core-features:
- Creating, editing, viewing and sharing recipes
- Browsing and searching for recipes
- Following users across Dining Car instances
- ActivityPub allows Dining Car profiles to be followed from other ActivityPub enabled softwares, recipes can receive comments and be shared around the Fediverse.
Dining Car is Alpha Software, it is not yet ready for production use.
Before you get started, ensure you have the following minimum versions: Ruby 2.5+, PostgreSQL 9.6+, Redis 2.6+.
You need to install Yarn and Ruby. Yarn has installation instructions for several OSs here: https://yarnpkg.com/lang/en/docs/install/ and Ruby can be installed either using RVM (https://rvm.io/rvm/install) or rbenv (https://github.com/rbenv/rbenv#installation).
The command to install ruby project dependencies is:
bundle install
To install javascript dependencies using yarn:
yarn install --pure-lockfile
By default the development environment wants to connect to a dining-car_development
database on localhost using your user/ident to login to Postgres. To setup this database, run:
bundle exec rails db:setup
This will also fill the database with base data for cuisines, courses and units.
You can them run Dining Car using:
bundle exec rails server
You can then access dev environment by accessing http://localhost:3000
in your browser.
You can run tests with
rails tests
Set a COVERAGE environment variable with any value if you want to see the coverage report by simplecov.
You can check localization status with:
i18n-tasks health
And check code quality with:
rubocop
Testing federation can be tricky and you should avoiding use ngrok
or similar tools to avoid inserting ethereal instances into other softwares databases. If you need to test federation, the best way is to setup a server with a proper domain name and keep that up to date with your fork of the project while developing on localhost.
- Ruby on Rails — Our back end is a Rails app. It serves an API (still in development) but also a static website.
- PostgreSQL — Our main data store is in Postgres.
- Redis — We use Redis as a cache and for transient data.
Plus lots of Ruby Gems, a complete list of which is at /master/Gemfile.
Dining Car is 100% free and open source. We encourage and support an active, healthy community that accepts contributions from the public – including you!
Copyright (C) 2018 Renato Cerqueira & other Dining Car contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.