Mercury Overview
Background
At the time of this writing I have been building web applications for almost fifteen years. I have worked on a lot of projects personally, with designers and in cubicle land. Years ago I wrote my own pseudo-language in C that interpreted code sort of like PHP or ColdFusion.
When I switched to ColdFusion I used the FuseBox framework for a while and then created my own published framework called BlackBox. Several years later I enhanced BlackBox to version two and a few years after that I started work on a new ColdFusion framework I called Kung Fu. Each of these frameworks got better and better.
When I switched from ColdFusion to PHP I repurposed most of the Kung Fu platform and created the Mercury Framework. Mercury is built on the MVC model and is extremely efficient and flexible. Mercury was built with the intention of building as much functionality in as possible while understanding the absolute need for flexibilty to accomodate needs that may arise.
Technology
Mercury is written in PHP and MySQL and has been built primarily on CentOS 5.2 and Red Hat Enterprise Linux running both on servers and on my laptop in a VMWare machine. It leverages JavaScript and I have chosen jQuery as the primary library for modern web user interface functionality. It also makes use of mod_rewrite in Apache. The WYSIWYG editor that has been integrated is FCK Editor.
Due to the lack of an application scope in PHP I decided to avoid going the full object-oriented approach with Mercury. The system I have in place only ever loads the functionality necessary for a specific page request. There is no instantiation of abstract classes or specific objects leveraging tons of functions that a specific page request will never use.
Features
- Core System
- Modular
- Core modules
- Developers can enhance as needed
- Developers can write custom modules
- Lean, efficient core
- Easy to install
- Can run on a single site or power many on a server
- Permissions
- Custom permissions definable per module
- Assign permission profiles to groups or user types
- Give different people different levels of admin control
- Separate functionality from presentation
- Written as an MVC architecture
- Every display element can be customized
- Default views for every core module
- Can create custom views per implementation
- Developers can override functions as well as display files
- No per-site conditionals on display
- Deployment
- Set up server or use one of ours
- Run an install script to initialize the database
- Session
- Built in session management
- Permission stored after login in session
- Distinct URLs
- Merury was built with search-engine-friendly URLs in mind
- Nice URLs for humans as well
- Each displayable page will have a distinct URL associated with it
- SEO engine that lets you specify any URL you want for any page
- No pages are ever displayed directly from form POSTs
- Core Modules
- Admin
- Blog
- Shopping Cart
- Content Management System
- Core Functions
- Forums
- Friends
- Groups
- Photo Galleries
- Javascript functions
- Private and Group Messaging
- User Profiles
- Permissions and security
- User creation and management
- Standardized development structure
- This is how we code here
- Learn it once, become familiar with the whole system
- Easily understand other people's modules
Core Functionality
A few core files provide most of the magic in Mercury. The rest of the modules, even the core modules, are simply modular implementations of PHP.
