Giter Club home page Giter Club logo

arooo's Introduction

Arooo - A Room Of One's Own

Ruby CI Ruby lint security Open Source Helpers

Welcome ๐Ÿš€๐Ÿš€๐Ÿš€โœจโœจ

This is a membership application app written by members of Double Union, a feminist hacker/makerspace for nonbinary people and women in San Francisco.

This app is named after a famous Virginia Woolf essay, A Room of One's Own. You can learn more about it on Wikipedia!

Also, here is a puppy that is saying "arooo":

A puppy howling

What does arooo do?

  • Prospective members can apply for membership
  • Current members can vote and comment on applications
  • Current members can see a directory of members
  • Current members adjust their dues via Stripe
  • Current members can apply for scholarships
  • Membership coordinators can manage member status
  • Emails are sent for applicants, accepted member setup reminders, cancelling mailers, dues issues, and scholarship requests (see mailers folder)

The application supports three levels of membership: members, key members, and voting members, where any member can see and comment on an application, but only voting members can vote. Membership coordinators can set whether the app is accepting applications, accept or reject individual applications, manage membership levels, and review dues status.

You can see screenshots of the system here: see our Arooo announcement post.

How to run it and contribute

We welcome contributions from anyone! Please see our Contributing Guide for an overview of how to help, including how to set up your development environment and run the application.

Production maintainer / SRE guide

Rails console - heroku

You only need this if you are deploying code, checking changes, or maintaining a production instance of arooo

Set up heroku commandline client: https://devcenter.heroku.com/articles/heroku-cli

Staging: $ heroku run rails console --remote staging

Production: $ heroku run rails console --remote production

Bugsnag

www.bugsnag.com is a heroku plugin that records errors in the production app. This is helpful for debugging. For bugsnag access, ask someone with access to the board@ section of 1Password to log into bugsnag and send you an email invite to create an account. Thank you to Bugsnag for their OSS program :)

Deploying and Heroku access

This section only pertains if you have heroku & deployment access. Only maintainers have heroku access and can deploy.

If you are a DU member, see https://docs.google.com/document/d/19LbIYB2RDy-17UXuQx6wLgKp2EdLdqj-pg1cm3EpSb8/edit for more information on getting permission.

Both staging and production Heroku environments are connected to this GitHub repo, making it possible to deploy directly through the Heroku UI. To deploy:

  • Staging: Merge to main, and your code will be automatically deployed to staging as soon as CI goes green.
  • Production: Log into Heroku, and select the production Aroo app from your dashboard. Click on "Deploy", and scroll to the bottom. There will be a place to select a branch to deploy, and a button that you can click to deploy.

Database migrations will run automatically during the release process on Heroku. This is controlled by the release directive in our Procfile.

If you prefer to do deploys from the command line, here are the steps:

  1. Add Heroku remotes to your .git/config (type git remote --help for more instructions on how to configure git remote.)
[remote "production"]
   url = [email protected]:du-arooo.git
   fetch = +refs/heads/*:refs/remotes/heroku/*
[remote "staging"]
   url = [email protected]:doubleunion-staging.git
   fetch = +refs/heads/*:refs/remotes/heroku/*
  1. Pull down the latest code from main
git checkout main
git pull --rebase origin main
  1. If CI tests are passing, push to the staging environment
git checkout main
git pull --rebase origin main
git push staging main
  1. If needed, perform rake tasks or set ENV variable settings on staging
  2. Test staging!
username: doubleunion
password: meritocracyisajoke
  1. After confirming that the code works on staging, push it to production!
git checkout main
git pull --rebase origin main
git push production main
  1. If needed, perform rake tasks or set ENV variable settings on production

Environment variable configuration

As of February 2023, the environment variables set in Arooo's production environment are:

# Amazon credentials. Used for email sending, and possibly other stuff.
AWS_ACCESS_KEY_ID
AWS_REGION
AWS_SECRET_ACCESS_KEY

# Error reporting
BUGSNAG_KEY

# Postgres database
DATABASE_URL

# For GitHub OAuth
GITHUB_CLIENT_KEY
GITHUB_CLIENT_SECRET

# For Google OAuth
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET

# Same as DATABASE_URL
HEROKU_POSTGRESQL_RED_URL

# To receive dues payments via Stripe
STRIPE_PUBLISHABLE_KEY
STRIPE_SECRET_KEY
STRIPE_SIGNING_SECRET

# General Rails and Heroku configuration
CANONICAL_HOST: app.doubleunion.org
HOST_URL: app.doubleunion.org
LANG: en_US.UTF-8
RACK_ENV: production
RAILS_ENV: production
SECRET_TOKEN

You can get the current values from Heroku, either via the web UI, under Settings > Reveal Config Vars, or using the Heroku CLI: heroku config --app du-aroo.

In your local development environment, you can set these variables in config/application.yaml.

TODO: It would be great to document these variables further, and figure out which ones are still needed.

Email

This app sends emails via the Amazon SES service. Look for the config.action_mailer.delivery_method in production.rb for the precise configuration details.

If you need more information about our AWS setup, board members have AWS Console access.

Staging

Currently neither github nor google auth works on staging- we should get this working again so we can actually test.

The basic-auth login is found in https://dashboard.heroku.com/apps/doubleunion-staging/settings under BASIC_AUTH_NAME/BASIC_AUTH_PASSWORD

Security

To report a security vulnerability with Arooo, see SECURITY.md. Thank you!

License

Copyright (C) 2014 Double Union

This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 LICENSE.txt file for the full license.

arooo's People

Contributors

aiyesha avatar alicial avatar ameliagreenhall avatar anaulin avatar arbonap avatar brittag avatar cachar avatar carlomara avatar coilysiren avatar compwron avatar dependabot[bot] avatar fureigh avatar holdenk avatar imperiopolis avatar ita07 avatar jessicard avatar katafrakt avatar kiran-stripe avatar lilliealbert avatar mathildemouw avatar rahmatullah5 avatar rajivsah avatar rivers avatar robotboyfriend avatar sarahwalters avatar sbpipb avatar snyk-bot avatar stellaconyer avatar sylphiae avatar vaurora avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

arooo's Issues

Set up Travis CI Account

I talked to the people at Travis CI and they said they could give us free builds so that we can have a CI on our private repo without paying. This will be nice for showing us the build status on PRs!

Sign up for the free trial under a Double Union email account, and let me know when that's done. After that's done I'll let them know what e-mail it's under!

http://travis-ci.com/

Automatically email people who haven't set up their accounts yet

We should have four emails go out. These are all if they haven't set up their accounts yet.

Reminder 1: 3 days after they are accepted

Subject: Double Union โ€” Account Setup Needed <3
Body:

Hi #{@user.name}!

We are so excited for you to be a member of Double Union. Before things are official, though, we need you to confirm your membership #{ link_to "on this page", members_user_setup_url(@user.id) } (you'll need to login with GitHub like you did to apply).

If you have any questions, just email the membership coordinators at [email protected]!

Reminder 2: 7 days after they are accepted

Subject: Double Union โ€” don't forget to join :D
Body:

Hi #{@user.name}!

We are so excited for you to be a member of Double Union that we just keep sending you emails.

Before your membership is a real thing, we need you to fill out #{ link_to "a very short form", members_user_setup_url(@user.id) } (you'll need to login with GitHub like you did to apply).

If you have any questions, just email the membership coordinators at [email protected]!

Reminder 3: 14 days after they are accepted

Subject: Double Union โ€” join us soon?
Body:
Hi #{@user.name}!

We are so excited for you to be a member of Double Union that we just keep sending you even more emails.

Before your membership is a real thing, we need you to fill out #{ link_to "a very short form", members_user_setup_url(@user.id) } (you'll need to login with GitHub like you did to apply).

If you have any questions, just email the membership coordinators at [email protected]! If you're no longer interested in being a member, just email us and we'll stop bugging you <3

(If we don't hear from you within a month of when you were accepted, we'll assume that you're no longer interested in joining.)

Reminder 4: 21 days after they are accepted

Subject: Last Call for Double Union membership
Body:

Hi #{@user.name}!

Since we haven't heard from you, we're going to cancel your membership in seven days. So! If you're still excited about Double Union, sometime in the next seven days just fill out this #{ link_to "very short form", members_user_setup_url(@user.id) } (you'll need to login with GitHub like you did to apply).

If you have any questions, just email the membership coordinators at [email protected]!

Should be able to change sponsorship option

I learned something about someone I sponsored that made me change my mind about sponsoring them. I unchecked the sponsor box and clicked the "No" vote option, but my sponsorship remained

Tiny Typo on Homepage

Under "Want to Support Double Union?", donations is duplicated in this sentence:
"Double Union is a non-profit supported entirely by donations, membership dues, donations, and volunteers."

Members should see an explicit "You can't vote" message

Members (not key members) sometimes think they can vote and spend a lot of time looking for the voting button. Options:

  • In place of buttons, "You can't vote" text
  • Grey out voting buttons with a greyed out "You can't vote message"

Use CanCanCan for finer-grained admin authorization

Currently, anyone with is_admin set to true can access the Manage Applications and New Members pages. Since there are now different sets of people doing the jobs of helping applicants and helping new members, it would be nice to have finer-grained access control โ€” instead of giving everyone admin rights to everything, have specific roles for application coordinators and new member coordinators.

Roles:

admin โ€” can do everything
application_coordinator โ€” can see manage application page, can accept/reject applications
member_coordinator โ€” can see manage members page + all the things on it, can see new members page + all the things on it

Some people will need both application & member coordinator roles, so that's neat.

Use CanCanCan.

What is the caching on the static membership page for

hey @rivers, I'm getting mad at this line in the static pages controller, mostly because I don't know why we're doing it, and I have to comment it out to be able to see changes to the membership page. Because I can't figure out how to tell the development env that I've updated it because ๐Ÿ˜ฆ

caches_action :membership, :layout => false

Tell me what it's for! Or if I can delete it!

after 2 weeks, if an application doesn't have a sponsor, email that user

if the applicant has 2 no votes, don't send.
something like:

%p Hi #{user.name},

%p Your application has been open for two weeks and doesn't yet have a sponsor. Have you been to any Double Union events yet? We'd love to meet you and figure out if you'd be a good fit for the space.

%p Feel free to email [email protected] if you have any questions. %p All the best,

%br/ Double Union

%br/ @doubleunionsf

%br/ = link_to "www.doubleunion.org", "http://www.doubleunion.org"

Newly-setup members should get confirmation email when they have access to things

Marking a member as "Setup Finished" via http://www.doubleunion.org/admin/new_members should trigger an email to the person with the following info:

Hi #{@user.name}!

Thanks for getting all of your Double Union membership things set up. You now have access to the member's Google Drive folder and a Google calendar called "DU Members". You should read through the Member's Handbook now to get a quick overview of how things work at DU.

See you at at member's meeting soon!

Applications can be put on hold + members can vote "Maybe later"

  • Have three vote buttons, "Yes", "No, never", and "Maybe later"
  • "Maybe later" voters' names are shown
  • If an application gets more than one "Maybe later" vote, it goes in the "Hold" state, rather than rejected
  • If an application gets more than one "No, never" vote, it goes into "Rejected" state
  • Held applications are shown on the voting page, perhaps under the in-progress applications

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.