HackStack is a baseline for a restful PHP website which allows you to focus on building out your idea instead of reimplementing common components.
While built with hackathons and MVPs in mind, HackStack uses production ready components and is designed to offer the best development and user experience.
Baked in:
- Dyanamic URL routing
- Twig templating with automatic caching
- Logging with automatic rotation and separate access and error logs
- Pre-configured templates and routing for:
- 500, 404, and 403 HTTP errors
- User authentication
- Cross-browser styling and consistency
HackStack is built on the shoulders of giants and uses a number of libraries:
- Composer for managing dependencies
- Slim as a lightweight routing engine and template renderer
- Slim-Skeleton for common Slim components and setup, which includes:
- Monolog for logging
- Twig for templating
- Slim-Views for rendering Twig templates
- Slim-Extras for some basic Slim middleware, including:
- CSRFGuard for handling and checking CSRF tokens
- SwiftMailer for handling email delivery
- Bootstrap for clean templating and styling
- JQuery for bootstrap interactions
Additionally, the following services and other attributions have contributed:
- Bootstrap CDN for CDN sources of bootstrap styles
- CDNJS for CDN sources of bootstrap javascript and jquery
- Github for the structure of a number of elements including the sign in element
- Simple Line Icon Webfont for awesome clean icons
- Fork the HackStack PHP repository
- Create a new branch for your changes
- For new features, your branch name should be prefaced with 'feature-'
- For bug fixes & improvements, your branch name should be prefaced with 'fix-'
- Send a pull request from each feature branch to the development branch
It is very important to separate new features or improvements into separate feature branches, and to send a pull request for each branch. This allows us to review and pull in new features or improvements individually.
You should try to match the styling of the existing code as much as possible.