Skip to content

zinedistro/zinedistro

Repository files navigation

A Zine Distro in a Box

Deploy

What is it?

A Rails application to facilitate creating a zine distro. It includes a complete application to get started sharing zines online.

Is it Good?

Yes.

Is it "Production Ready™"?

Yes.

Setup Instructions

Using the Install Script

Run bin/setup should get everything you need up and running, including:

  • Bundling gems
  • Setting the .env file from the example file
  • Database configuration
  • Database setup and loading seed data

Using Vagrant

Install Vagrant

Start the Virtual Machine:

vagrant up

This command will download a virtual machine for Vagrant, install Docker on the virtual machine host, boot the Rails and PostgreSQL containers, link them together, set up the database, seed it with example data and finally, start the rails server.

It can take a while to download, so go find a nice zine to read in the meantime.

Customize Environment Variables

See .env.example for variables that need configuring. Copy .env.example to .env to get started:

cp .env.example .env

Next up, add some randomized secrets for Devise and Rails. DEVISE_SECRET_KEY, and SECRET_KEY_BASE are secret keys for the app and should be different long, random strings. Try running rake secret and placing the output in the corresponding values of DEVISE_SECRET_KEY and SECRET_KEY_BASE. For example:

echo "DEVISE_SECRET_KEY=`rake secret`" >> .env
echo "SECRET_KEY_BASE=`rake secret`" >> .env

For the values of CARRIERWAVE_AWS_ACCESS_KEY_ID and CARRIERWAVE_AWS_SECRET_ACCESS_KEY, you must enter your AWS credentials for an S3 bucket you wish to use to store PDFs and associated cover images.

For more information, see the AWS page on security credentials.

If you wish to use another provider to store files, it should be possible, I just have not tried it yet. If you get it working or would like to ask a question, please open an issue.

User Setup

Once the application dependencies are taken care of, create your first user:

vagrant ssh
cd /home/app/zinedistro
./bin/console

In the Rails console that appears, type something similar to this while substituting your own email address and password:

User.create!(email: 'admin@example.com',
             password: 'password',
             password_confirmation: 'password')

Redis configuration

In order to optimize Redis for caching, change the key expiration policy to volatile-lru:

heroku redis:maxmemory REDIS_URL --policy volatile-lru

Note that this is not necessary if the application was deployed using the Deploy to Heroku button

Request for Contributions

We would be thrilled to have your input on the future of zinedistro. Let's get started with a few ground rules.

Please contribute to this repository if any of the following is true:

  • You have expertise in community development, communication, or education
  • You want open source communities to be more collaborative and inclusive
  • You want to help lower the burden to first time contributors

How to Contribute

Prerequisites: familiarity with GitHub PRs (pull requests) and issues. Need help getting started? Try reading the Github guide.

When creating a pull request, we ask that you try to create a clear commit message outlining what was changed, added or removed in the present tense. See the commit history for examples of commit messages. For more information on the formatting of commit messages, see Tim Pope's blog post

In particular, this community seeks the following types of contributions:

  • Ideas: participate in an issues thread or start your own to have your voice heard.
  • Improvements: help make this project more accessible to other users, make it more extensible and easier for a new user to launch their own zine distro.
  • Outline sections: help us ensure that this repository is comprehensive. if there is a topic that is overlooked, please add it, even if it is just a stub in the form of a header and single sentence. Initially, most things fall into this category.
  • Copy editing: fix typos, clarify language, and generally improve the quality of the content

Conduct

We are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, disability, ethnicity, religion, or similar personal characteristic.

Please be kind and courteous. There's no need to be mean or rude. Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer, merely an optimal answer given a set of values and circumstances.

Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works.

We will exclude you from interaction if you insult, demean or harass anyone. That is not welcome behaviour. We interpret the term "harassment" as including the definition in the Citizen Code of Conduct; if you have any lack of clarity about what might be included in that concept, please read their definition. In particular, we don't tolerate behavior that excludes people in socially marginalized groups.

Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact one of the Zinedistro core team immediately. Whether you're a regular contributor or a newcomer, we care about making this community a safe place for you and we've got your back.

Likewise any spamming, trolling, flaming, baiting or other attention-stealing behaviour is not welcome.

Communication

GitHub issues are the primary way for communicating about specific proposed changes to this project. When making a contribution or commenting on someone else's contribution, please follow the conduct guidelines above. Language issues are often contentious and we'd like to keep discussion brief, civil and focused on what we're actually doing, not wandering off into too much imaginary stuff.

License

MIT licensed.

See license for more information.