When Ksusha and I got married, I decided to use it as an opportunity to
write some software to manage all aspects of our wedding, from tracking
guests and RSVPs to generating place cards for printing. Given that
half of the fun of wedding preparation (for us at least) was DIY
projects, what better than to mix in a DIY software project? You can
see the public results of my efforts at wedding.eriksu.org (although
most of the interesting features are hidden within the RSVP and admin
After requests from a few friends, I finally got around to packaging up
and posting this software as a starting-point for others (and you can
download it here). I'm releasing it under the MIT License, meaning
you can pretty much do whatever you want with it as long as you don't
sue me, even if some bug somehow ruins your perfect day.
The djWed package is personal web-based wedding management software
written in the Python Django web framework. This is intended entirely
as a starting point of code to develop from, and is not intended to be
something that works out-of-the-box. Rather, it is software that you
can hack to do what you want.
When writing software for your own wedding, one initially encounters a
pleasant design constraint that is rarely encountered in software
engineering: code designed to be used exactly once. In fact, I intend
to get married exactly once (now complete) and thus never use djWed ever
This meant that I took many short-cuts that I might not have otherwise
taken, but which made sense for expediency. For example, generating
mass emails or PDF/PS output from SVG templates is fairly awkward.
However, it didn't make sense for me to develop an elegant user
experience for functions that would be executed exactly once by just one
person. Similarly, I hard-coded in that I'd have two wedding and
reception venues ("MA" and "CA") as that
simplified some code. I was also much worse about documenting the code
or developing regression or unit tests than I would have been if I was
developing production software.
However, now that our wedding is finished, some friends have asked to
use this code. As such, these friends may need to live with the
consequences of these decisions if they wish to start from this code
base. They will encounter many bugs, hacks, quirks, and perhaps even a
few squirrels. If you are one of these people, you are welcome to do
the same as I did and adapt the code for your single use, or you can do
cleanup to generalize this software so that it could more readily be
used by others. If you do clean it up and post it, let me know so I can
link to it from here.
Some of the features included are:
- Track guests and invitees (where each invitee may consist of
- Each invitee has an "invite code" that they can use to login.
- Invitees can update their contact information and leave comments.
- Invitees can RSVP and select meals and other options.
- Send mass emails to invitees with form-filling.
- Web-based reports on RSVPs, meal selections, and more.
- Spreadsheet exports of reports.
- Gift and thank-you note tracking.
- Generate mailing labels for invitees.
- Table assignment tracking (but no automated table-assignments).
- Multiple venue support (currently hard-coded at two venues in some
- Integrated photo gallery using a modified version of Photologue that
lets guests upload their photos.
- Web-based editing of informational pages (HTML "page snippets").
- Initial import of guest information from a CSV spreadsheet.
- Generation of printed materials from SVG templates, including:
- Save-the-date cards with RSVP invite codes.
- Personalized place cards (even including food selection)
- Personalized RSVP cards
- Personalized envelopes with artwork
Now that this is done, perhaps I'll never need to look at this code
again, although I have already reused some snippets from it for other
At some point in the future, I may post some examples of printed
materials generated, as well as some of the artwork we created. (We
have plenty of wedding DIY projects that I should go back and write-up