Skip to main content

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.

Release files for seevooplay 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seevooplay 1.0.6
File Size Uploaded
seevooplay-1.0.6.tar.gz 17.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for seevooplay 1.0.6
File Interpreter ABI Platform
seevooplay-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 48.8 kB

Release files / seevooplay-1.0.6.tar.gz

Download URL seevooplay-1.0.6.tar.gz
Size 17.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5f212ac5772cc55ef66ac42e4b6f3749e96241517c11a9fb75c1696604a172f5
BLAKE2b-256 checksum
How to use checksums
9344ffcbfe44042a63ab4686d52f932c726b01be8e8871efdbce41626ab68d74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.8.10 Linux/5.4.0-120-generic

Release files / seevooplay-1.0.6-py3-none-any.whl

Download URL seevooplay-1.0.6-py3-none-any.whl
Size 31.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fbb11f44ca39c33dae01cf3d8fcae90d4fdf8144a53afc8dcb455d67f559796a
BLAKE2b-256 checksum
How to use checksums
021e09b9b08e02208c71ed59d7bfce0e0c0f133bdf57c89a45e14eeeb2acc8c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.8.10 Linux/5.4.0-120-generic

Release history Release notifications | RSS feed

2.0.2

2 release files

2.0.1

2 release files

1.0.9

2 release files

1.0.8

2 release files

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page