What we do
PHP Framework
Greg has developed an open-source PHP framework called PAL (short for "PHP Application Library"). It's different from every other framework out there with its focus on giving power to the programmer. while retaining simplicity and elegance. Instead of being another Rails clone, it lets PHP programmers feel like they are really coding in PHP but on top of easy-to-use, high-powered machinery. PAL is oriented toward the MVC (model-view-controller) paradigm, but takes advantage of web conventions as much as possible. It also contains a fast, powerful, fully-featured database abstraction layer called PalDb (that at the moment is primarily geared toward MySQL).
PAL was designed to meet the following needs:
- Help development teams work together in a consistent manner.
- Allow the site to be maintained and modified easily by separating each type of functionality cleanly into its own area.
- Give enough expressive power to the programmer to produce anything they need.
- Be simple enough to learn and code things quickly in.
- Have a powerful plug-in system that allows features to simply be dropped into a project
- Be fast. PAL is about the fastest PHP framework out there, with a minimum overhead of as low as 2 ms.
In fact, this website is built entirely using PAL.
The Architecture
Part of our business strategy was to re-use plugins from one project in
our next projects. This cuts down the cost of development significantly.
Thus, projects built on PAL are built like this:
Another dimension that we are concerned about is the development process.
This is not specific to PAL, but to any professional software project.
We want our team to be able to work in a well-defined development
environment, and for changes to be tested as they go through
the different stages and into production:
Projects, Plugins and Interfaces
Our technology doesn't only let us re-use plugins in different projects. It allows for much bigger possibilities. Here's the full story:
- Two copies of a plugin in two different projects can either share a database or have their own independent data. Thus, various projects can share some or all data between them.
- We can expose web services and build interfaces on top of them. For example, a travel application may have several interfaces through which users can log in and use it: facebook, myspace, iPhone and the web.
- We can intelligently leverage the social connections on all the platforms they are available (facebook, myspace, etc.), as well as other data like geolocation on the iPhone
- By creating standalone web interfaces -- widgets -- we can offer webmasters all over the internet to use our plugins, such as putting a free bulletin board widget on their site, or chatroom or calendar widget. We will then have a presence on all those sites.
- We can basically mix and match plugins, interfaces and projects creating far-reaching solutions for users across platforms.
We created Lucky Apps' technology to enable us to do all this.