Infosys
A tool to manage roleplaying convention data.
Introduction
I started writing Infosys because a roleplaying convention I volunteer at needed a better system to handle data. Having worked with the old system, I thought it better to write the new one from scratch. Obviously there was a fair amount of adventurousness involved as well, though - there's always the interest in building something involved, a certain DIY streak in me.
At first, there was absolutely no intention of building the framework from scratch though - I only intended to make the application. My idea was to implement it in Zend but it didn't take long before I hit a massive obstacle: the webhost I planned to use for testing had never bothered to install PDOs for MySQL and certainly couldn't be bothered to do so when asked. After mucking about with various hacks I got too annoyed with Zend for knowing better and decided to scrap their framework. And thus I built my own.
At first the system was only meant to be a backend for handling data at the convention but together with a friend I plan to extend it a bit to also handle signups for conventions.
General info
The system is a based on the MVC pattern with a typical framework setup. The code consists of:
- bootstrapping code
- framework support code (request handling, routing, database access, etc)
- MVC setup
There's a heavy use of ORM but somewhat unlike your typical MVC framework the ORMs are not identical with the models in the MVC - the ORMs are small, generic entities where all general data handling takes place. The models handle application specific data interaction - i.e. entities do general data processing while models do specific and complex data processing.
One of the underlying design decisions in this framework is to give the MVC apps as much freedom as possible. Hence, controllers decide pretty much everything that's going to happen when a request is made - and little happens if the controller doesn't do anything.
Use
Infosys is being used for Fastaval and for Con2.
Source
Github repo is at http://github.com/Fake51/Infosys/tree/master. The sources are licensed under GPL v3.