Skip to main content

Seevooplay is a Django app for online invitations and RSVPs.

Project description

Seevooplay

Seevooplay is a Django app for online invitations and RSVPs. Think of it as your personal, selfhosted version of Evite (or a similar service). Throwing a party? Don't give all your friends' email addresses to Evite. Don't expect your friends to be on Facebook. Embrace the indieweb, kick the corporate middleman to the curb, and let Seevooplay send email invitations and collect responses for you! That's the pitch, anyway.

Seevooplay was crafted for personal use; it is not architected for scale. It is directly inspired by DaVite, a 2000-line Perl script last updated in 2004 -- a very cool and useful hack for its time, but inappropriate for use on the web in 2021. Seevooplay aims to solve the same problems DaVite did, in much the same way, but with modern, maintainable, extensible code, atop the rock-solid foundation of Python and Django.

The owner of a Seevooplay instance interacts with Seevooplay mainly through Django's admin. [Screenshot 1, Screenshot 2] Invitees interact with a single public view, whose template and styling is deliberately minimalistic and intended to be customized. [Screenshot 3] Through the magic of the CSS cascade and Django template overriding, you can make what your guests see as gorgeous (or as ugly) as you like.

Your invitees will receive emails containing personalized links back to your Seevooplay instance. They won't have to create any sort of account (or log in) to RSVP to your event; a UUID in their link tells Seevooplay who they are. This means that forwarded links are problematic: If Alice forwards her invitation to Bob, Bob can RSVP as Alice. In other words, from a security standpoint, Seevooplay is about as naive as it gets. For the casual, personal use cases Seevooplay is designed for, however, this model works. If it spooks you, your parties are much higher stakes than mine, and you should look for a different solution. :)

Seevooplay is free software, licensed under the terms of the GNU General Public License, Version 3. See the included COPYING file for details.

Installation

Seevooplay can be run as a standalone project, or integrated with an existing Django project.

Run as a standalone project

There is not (yet) a containerized distribution of Seevooplay, but if you are familiar with Python, Django, and their modern ecosystems, you should have no trouble getting Seevooplay up and running as a standalone Django project. In broad strokes, the steps are:

  1. Download the Seevooplay distribution and extract to a folder, or git clone it.
  2. Copy config/settings/local.py.example to config/settings/local.py and edit local.py to match your server environment.
  3. Create a Python virtual environment with your tool of choice and populate it with Seevooplay's dependencies. For example, pip install -r requirements.txt or poetry install.
  4. The rest happens from within your virtualenv. First:
./manage.py migrate
./manage.py collectstatic
  1. Do ./manage.py sendtestemail to ensure your setup can send mail.
  2. Do ./manage.py createsuperuser to create a superuser.
  3. Fire up the Django development server with ./manage.py runserver or put your favorite server (gunicorn, nginx, apache) in front of the project.
  4. In your browser, navigate to http://yourdomain/admin and log in with your superuser credentials to poke around and create your first event in Seevooplay. As long as you remain logged in, you can view your first event at http://yourdomain/rsvp/1.

Integrate with an existing Django project

  1. Add Seevooplay to your project with pip install seevooplay or poetry add seevooplay or whatever your Python package-manager-of-choice requires.
  2. Add to INSTALLED_APPS in your settings.py:
'djrichtextfield',  # required for seevooplay
'seevooplay',
  1. Add settings for django-richtextfield in your settings.py. See django-richtextfield's docs for details, or copy the DJRICHTEXTFIELD_CONFIG stanza from Seevooplay's config/settings/base.py.
  2. In your main urls.py, add this import:
from seevooplay.views import email_guests, event_page

... and these urlpatterns:

path('admin/email_guests/<int:event_id>/', email_guests, name='email_guests'),
path('rsvp/<int:event_id>/', event_page, name='invitation'),
path('rsvp/<int:event_id>/<guest_uuid>/', event_page),
path('djrichtextfield/', include('djrichtextfield.urls')),
  1. From within your project's virtual environment:
./manage.py migrate
./manage.py collectstatic
  1. There should now be a Seevooplay section in your project's admin, where you can start kicking the tires.

What Seevooplay Lacks

  • 'Add to calendar' functionality. This is probably something I'll hack on at some point.
  • Internationalization. I welcome pull requests to change this.
  • HTML emails. Plain text emails don't bother me, so this is unlikely to change unless someone else does the work.
  • Comprehensive documentation. If anyone other than me ends up using this, the docs will get better. In the meantime, if you try using Seevooplay and run into trouble, please open an issue on GitHub. I will help if I can.
  • Perfection. This software was crafted to scratch a personal itch. It almost certainly has bugs. If you discover one, or you have a suggestion for improving the code, please open an issue on GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seevooplay-1.0.6.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

seevooplay-1.0.6-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file seevooplay-1.0.6.tar.gz.

File metadata

  • Download URL: seevooplay-1.0.6.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.10 Linux/5.4.0-120-generic

File hashes

Hashes for seevooplay-1.0.6.tar.gz
Algorithm Hash digest
SHA256 5f212ac5772cc55ef66ac42e4b6f3749e96241517c11a9fb75c1696604a172f5
MD5 536c87383550f4166e60a8a883877c6d
BLAKE2b-256 9344ffcbfe44042a63ab4686d52f932c726b01be8e8871efdbce41626ab68d74

See more details on using hashes here.

File details

Details for the file seevooplay-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: seevooplay-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.10 Linux/5.4.0-120-generic

File hashes

Hashes for seevooplay-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 fbb11f44ca39c33dae01cf3d8fcae90d4fdf8144a53afc8dcb455d67f559796a
MD5 5e259540916f5ecbde8bcc842150c340
BLAKE2b-256 021e09b9b08e02208c71ed59d7bfce0e0c0f133bdf57c89a45e14eeeb2acc8c2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page