a Lightweight and Modular Open Source PHP Web Development Framework
Using aFramework was an obivous choice for me as I'm the author of it :P
As I also built Agnes' site going with aFramework felt like the natural thing to do.
How would it look if aFramework's official site didn't run on aFramework? :)
Sidkritik.se is a Swedish site focused on website reviews. It's a little like a CSS-gallery but anyone can add and review sites.
aFramework's core is ~130kb and consists of 15 files. That includes the two external libraries aFramework uses; Dean Edward's JS-packer and Markdown, which together make up about half of that size.
The code you write in aFramework can also easily be ported to other frameworks or just plain old procedural PHP because aFramework doesn't force you to write code in any special way.
The download zip contains 5 styles, a bunch of jQuery plug-ins as well as jQuery itself and jQuery UI + loads of other (optional) stuff, that's why it's a little bit bigger.
Out of the box a typical aFramework installation generates the front-end in about 0.05 - 0.1 seconds (depending on the computer it runs on, of course) and after that scores around 98/100 on ySlow's "Small site or blog"-test. Much thanks to aFramework's magic merging and compressing of all CSS and JS-files.
aFramework is built with semantic and lightweight XHTML and completely separates design and content. It contains plenty of SEO-tweaks such as canonical URLs and meta descriptions. aFramework also supports nice URLs whether or not you have mod_rewrite enabled.
aFramework's every module validates XHTML 1.0 Strict and uses absolutely no tables for layout or any other nonsense like that. In fact, all of aFramework's modules only use one CSS-class - to tell whether a style is selected on the styles page. The rest is just POSH :)
Because aFramework uses Markdown for almost all kinds of user generated content you can always be sure to have 100% semantic and valid (X)HTML.
aFramework is built with love and progressive enhancement. The HTML is so clean you can eat off it and every aspect of the JS is built with care.
aFramework comes bundled with jQuery (+ plenty of plug-ins) and almost everything that can be is hijaxed. If you prefer a different JS library (or perhaps you don't need JS at all) you can simply delete all the JS-files and aFramework will still function properly thanks to the use of progressive enhancement.
aFramework is practically infinitively extensible. Everything from configuration to modules to styles to entire sites can be extended allowing you to rapidly create customized web sites that build on the solid aFramework core.
aFramework is modular. Every part of an aFramework-site is contained within its own files and folders and can be accessed with or without XHR individually. To load any module with ajax all you need is something like:
$('#random-links').load(Router.urlForModule('RandomLinks'));
aFramework automatically merges and minifies all your site's JavaScript and CSS-files so that the browser only needs to download 1 file per language while you can structure your code as modular as you like.
Every CSS-file you create has access to all of aFramework's generic CSS-constants, such as $self-clear, $pipe-menu, $data-definition etc. So if you want you can use them, if not, aFramework will remove them from the generated CSS. You can of course create and use your own constants as well.
aFramework is completely written in UTF-8 and can, with a couple of settings, be made to run in several different languages. All done in an SEO-friendly way where each language has their own URLs. Currently aFramework and its sites are translated into English and Swedish.
Almost everything user's create in aFramework is written in Markdown. Markdown assures 100% valid and semantic output and editor's need only focus on the writing. With JS enabled you'll also get a Markdown WYSIWYM editor around every textarea that takes Markdown input.
aFramework comes bundled with plenty of useful modules, one of them being the Google powered search engine that you can install with a click.
Almost everything that can be hijaxed is. By default aFramework uses jQuery but if you prefer a different library simply replace the JS-files with your owns. Because aFramework is completely built with progressive enhancement it works fine without JS as well.
Almost every aFramework module comes with an "in page" admin. That means that when you login you can edit, delete or create articles, pages, comments etc all on the same page!
If you want a little more control but find PHPMyAdmin bloated you can browse over to aFramework's dynamic admin; aDynAdmin which is basically a lightweight version of PHPMyAdmin.
When you're logged in you'll get a small debug panel at the top of the page. If you're a developer you'll appreciate information such as paths to templates and classes as well as template variables, number of queries and run time for each module.
aFramework only really requires PHP5 and MySQL. The Google Search Module requires curl and mod_rewrite is always good for SEO/usability but not required.
Download the latest release using the big download-link in the top. If you're feeling tech go ahead and check out the svn repo over att Google Code.
Unzip the downloaded file in your local www/ (or similar) directory or directly on your server. aFramework works from any subdirectory so it doesn't need to be in root.
Depending on where you unzipped aFramework you may need to edit the RewriteBase command in .htaccess. If, for example, you unzipped aFramework in localhost/aFramework/ RewriteBase should be /aFramework/, not /.
aFramework's installer actually installs stuff so it's important you CHMOD 777 aFramework's root directory before running it.
Go to the folder where you installed aFramework using your browser (Firefox, right?:) and append /Install/ to the URL to start the installation wizard. Something like localhost/aFramework/Install/
If you just want to try it out without creating your own site then follow these steps:
Want to become a pro? Head over to the documenation.
aFramework comes with a few external libraries and sometimes pieces of code found over the internet. Most of the time there's a comment above the particular function or class, but in some cases I may have forgotten where I got it from. If you find something uncredited that's yours please contact me. There really isn't much external code though.
Here's a list of the major libraries and classes aFramework uses:
There's probably something else I've forgotten + perhaps some fonts or icons or images. Regardless my intention is not to take credit for things that aren't mine so do let me know if I'm using something I shouldn't.