A web application for managing ticket booking and sales, with a public side (users choose their seats and print their tickets themselves) and an admin side (for listing and modifying bookings)
I see Freeseat (1.3.0) as not particularly "turnkey" yet - it took me a week to get it in production, and then there were still bugs which have since been fixed in 1.3.1. I am not complaining, I know how long these things take to develop). Because it is not and may never be a truly turnkey solution, it requires integration by someone who knows php and mysql well enough to write their own ticket system if they had time. Freeseat I hope will remain simple and become more readable so it can be adapted to no end of unforeseen and differing needs by developers. Because it is so obsessively nested and functions are spread among so many files, a lot more liberal commenting would make the code a lot more approachable for developers so it would be more easily adaptable and integrateable. For instance, when a non-trivial function is used, a comment that say in which of the many files that function can be found would be very useful. When arrays and variables are declared or used for the first time on a page, a little blurb about what they're for and how they work, where they came from and what's in them would have saved me days of time. The default English is a little funny, it sounds like a European talking, but you can edit the default language file. The multilingual functionality is great, except it makes code more unreadable and it is hard to know how to change things in the language file because you're not sure where all it will be used, again, comments in the language file about how and where each entry is used would be helpful. The php code itself is obsessively nested... to the point of mind-boggling absurdity in places; you'd almost think it was written by an old-school c programmer. Trying to figure out what does what and where things are in the code will take most of your time. The mysql database design is straight forward, approachable and elegant, with only one tiny quirk where there's a missing groupid in the booking table where the bookingid equals the groupid so quereies have to check two places for the groupid which seems unnecessarily complicated. It is easy enough to add more fields to the show or booking table - to include things like the address of the theatre to print onto the tickets. It would be good if Freeseat was more up-front about its current limitations... You can only book and pay for one show night at a time; there's no real shopping-basket array whereby you can pick up tickets for different shows; I'm going to try to hack my installation so it can do that at some point, but not today! The email notifications are great and work logically and sensibly. The panic messages to admins are garbled, but with enough experience admins can figure out what they mean and don't mean, customers never see those so it isn't a critical problem. Best thing about Freeseat is that it is free and open and will get you started selling tickets faster than it would take you to code something less by yourself. It is also under active development as at 2010 version 1.3.0, so for those of you in the future it may be more robust, with more approachable code, and maybe even "turn-key", especially if you can help with that. Given how there's precious little else out there now for open source ticket sales, Freeseat is already worth supporting and working with unless you're determined to write your own php ticket sales system from scratch, which I am not!