The project is a culmination of several years of work building custom software for small businesses. This custom software was generally solving one or several aspects of business automation - problems that were not addressed in the "off-the-shelf" software. Because the proprietary software can not be modified therefore a whole new application has to be developed to address those specific problems. This is not a very efficient approach but the alternative it to wait for a new release (months maybe years), pay for it and hope that it will have those features you were asking for.
Since we were building those applications for small businesses without big budgets we were trying to reduce the up-front cost by utilizing what they already had - thus we were using such tools like MS Access or Filemaker Pro. Building applications using MS Access for example allows modifications and tweaking anytime and adding new feature on-the-fly - these are some advantages. Once you build such a monster and keep important data there users would like to access it anytime and anywhere. Sure - you can tie MS Access database to an interface built in ASP but then you end up with two front-ends talking to one back-end. It would be simpler to have one data store - and more powerful than Jet engine - and build only one front-end - this way there is zero client deployment and another reduction in cost of development.
First we tried ASP as over 99% of our clients had Windows NT/2000 servers and it can be deployed at almost no-cost. A simple MS Jet engine was sufficient to drive those small web applications. However ASP is not a very powerful platform - the same can be said about the strength of Jet engine. Moving to the next level would mean .NET and MS SQL and we are talking serious money here.
Luckily there is open source. Apache, MySQL, PHP - all are fast, stable and free. This means that the up-front cost can be practically zero. During the development we decided to use also only open-source tools - Eclipse for IDE, SVN for version control, Subclipse as SVN plugin for Eclipse, Trac for simple project management. This requires Python which is also open source - thus we build the entire environment using freely available software and tools.
To build those applications based on top of this open-source stack we needed some sort of reusability, some order of how the code can be organized and reused. And first of all whenever possible we tried "not to reinvent the wheel" but adopt existing solutions developed by others and released as open-source.
epesi framework is then a unique collection of such software (libraries, modules) adopted by us to create a platform on which we can build our applications. We were trying to design it as well as we could - here are some goals:
- platform independent (both server and client)
- build-in localization
- powerful access control (phpAGCL)
- ability to connect to many database systems (ADOdb)
- use AJAX
- keep it fast and small
As it was released on June 21, 2007 epesi framework contained already close to 50,000 lines of code and the cost of development would exceed $1.6 mln USD. Of course not all the code that is there was created by our team.
From the very beginning we decided that our work will be released as an open-source software as well - not only to give back to the community but also to let others comment on our work and therefore help us create a better quality software. We hope that you will find our work useful. If you decide to use it for your own projects please let us know. If you find bugs, have ideas or just want to contact us - please visit our forum.