Giter VIP home page Giter VIP logo

zinedistro's Introduction

A Zine Distro in a Box

Build Status Test Coverage Code Climate Dependency Status PullReview stats

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: '[email protected]',
             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 Stories in Ready

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.

zinedistro's People

Contributors

faun avatar testocat-8618eb avatar samnang avatar

Stargazers

astrolemonade avatar stieglitzz avatar J.N. Breuer avatar  avatar Marín Alcaraz avatar Jay H avatar  avatar Adarsh Pandit avatar

Watchers

Gabriel Gilder avatar James Cloos avatar

zinedistro's Issues

Research the feasibility of using cloudinary over S3

This would certainly make setup of a new distro easier (no S3 access keys or configuration required). The problem is that cloudinary is quite expensive once you cross the threshold of the free tier. Analyze the size of the existing S3 bucket to see if it's over the free tier limit.

As a zine editor, I should be able to add multiple Authors to a Zine

Modify zine creation flow so that the zine can have multiple authors

  • automatically parsed with a comma as a delimiter
  • tagged using select2 input field with multiple values possible
  • If an author with a given name exists in the database, use that. Otherwise, create a new entry for that author

Separate existing authors

Some zines currently have multiple authors, but they're currently being stored as a comma-delimited list as a single field.

Parse these authors and separate them into separate author entries.

Add author listing page

In order to easily cross-reference the works of authors that have multiple zines, I should be able to click on a author's name in the zine listing and be taken to a listing of that author's works.

Move models to Rails engine

Create ZineLibrary engine that encapsulates zines in mountable object.

The reasoning here is that if the models are a separate gem, the API, the admin page and the html fronted application can be separate, optional, independent pieces.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.