Code Monkey home page Code Monkey logo

shay-parties's Introduction

Build status

Parties for All is a free, open-source web-based event and RSVP manager written in Ruby on Rails.

It's free of charge and ad-free, and it always will be.

Parties for All provides the following features in a lightweight, simple interface:

  • Event discovery at a general level and for events specific to an individual host.
  • Support for secret/hidden events, blocked from displaying in the events index unless you've RSVPed to them already.
  • Event landing pages, including address management and scheduling.
  • Multiple systems for communicating with your guests before the event:
    • Polls, for any questions that need answering
    • Threaded comments (including avatars via Gravatar)
  • RSVP tracking
  • Mailing list management (no support for sending emails directly, but provides an easy-to-copy list of email addresses for sending the email yourself)
    • Additionally, access to easily contact all users who have RSVPed.

Why?

The main thing keeping me on Facebook was its (admittedly quite good) events system. I looked for alternatives, but all of them were either for-profit startups targeting concerts or event managers with money to burn on advanced features or non-profit services designed for pretty niche use cases (e.g. managing a convention or conference). To make sure I could seamlessly pull myself away, I wrote an alternative.

It's got everything you need for the basics of managing events with friends and loved ones, but intentionally doesn't have any features for people looking to make money off people showing up. I also wouldn't recommend it for events with more than a few dozen attendees - it's not built for interacting with the masses (the comments section, for instance, designed under the assumption that discussions won't involve more than a few dozen comments)

I develop this project as a hobby because I feel like this is a service that should exist without any restrictions. There are some associated costs, but they're minimal (and will be minimal unless this really takes off). I might have a donation option here in the future to defray those costs.

And finally, since this is a personal project being provided free of charge and managed in my spare time, I can't guarantee things like service availability, data integrity, or fast issue resolution when bugs occur. I make no guarantees or promises about the service, and don't assume any liability for loss or damage that occurs from failure or undesirable behavior. Use this service at your own risk.

Developer Info

Contributing

To contribute to Parties for All, just fork it and open a pull request with your proposed change. I'll respond within a day or two. I accept pull requests from anyone, and encourage people who are new to software development to contribute, even if it's something small like a copy change or a CSS cleanup. I do expect changes to the internal logic to have the following test coverage:

  • If you changed or added Javascript, either introduce or modify an integration test to ensure the logic you introduced works. I don't currently have scaffolding set up for JS unit tests, since the custom JS on the site is minimal.
  • If you changed any user-facing interactions, same as above - it needs an integration test.
  • Any changes to the models or controllers need a corresponding model or controller unit test.
  • New or updated models need new or updated factories.

And, of course, your changes shouldn't break any existing tests (though it's fine to change those tests if you've changed the assumptions they're testing).

If you're unsure about how to write any of the above tests, go ahead and submit your PR without them, but note in your description that you'd like help and I'll be happy to oblige.

If your change modifies the UI, it helps a lot to include before/after screenshots in your pull request.

What to Contribute

Currently, I keep track of what features I want to add or upgrade in the Projects section of this Github repository. Feel free to grab anything in the to-do columns, if you're looking for ideas. If you'd like to implement something not listed there, I'll never say no to someone helping out.

Local Setup

This app doesn't do anything particularly unusual, as Rails apps go. It runs its database on PostgreSQL, uses Puma for its server, and Bundler for its dependencies.

Run with Docker Compose (preferred)

Running docker compose up will spin up a server and all dependencies. The local development server will listen on port 23000. Sidecar containers will also run on boot handle installing your bundle and running any pending migrations. If you change your dependency versions or add a new migration, you'll need to run the sidecars again to get things up to date:

docker compose run bundle-installer && docker compose run db-migrater

If you just want to run the test suite, you can spin up a shell (with dependencies) for testing by running the docker-shell executable in the bin directory:

./bin/dockershell

Run directly

To run locally without using Docker, you can just run the following commands from the repo's root directory, once you've cloned it:

bundle install
rails db:setup
rails server

The above commands assume you have Ruby and Bundler installed and have a Postgres server running on your machine.

Running the tests is as simple as bundle exec rspec.

Running your own instance of Parties for All

If you want to host your own instance for privacy reasons (or whatever other reasons), take a look at the infrastructure folder in the repository. You can spin up your own copy of that infrastructure with Terraform on your personal AWS account. Work to make setup more automated and require less manual input is underway.

shay is testing deploys

shay-parties's People

Contributors

thepletch avatar dependabot[bot] avatar

Stargazers

Francis Nimick avatar  avatar Ali Ukani avatar Tyler Hallada avatar Isaac Boehman avatar

Watchers

James Cloos avatar Kostas Georgiou avatar  avatar

shay-parties's Issues

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.