MyHonors-Backend tackles all of the server-side needs of the MyHonors platform. From initializing/authorizing sessions, file uploads, sending emails and more, MyHonors-Backend tackles all of these tasks.
- Setup the appropriate configuration settings (keys, URLs, etc.) at
.config.sample.php
and rename it to.config.php
. composer install --dev
to install all of our dependencies - both client AND development modules.robo all
to run robo, our PHP task runner that automates PHP linting, executing unit tests, making sure our codebase follows PSR specification and many more.
MyHonors-Backend uses a myriad of web technologies. Some frameworks, tools, and libraries that are used are:
Libraries
- Firebase\PHP-JWT JSON Web Token Generator for stateless authentication and session handling
- Ktamas77\Firebase-PHP Firebase client for PHP
- Corneltek\Pux High-performance router for URL paths
- Level-2\Dice Powerful dependency-injection container, preventing us from coupling our classes
- Dreamscapes\Ldap-Core LDAP Abstraction library
Extensions
- php-ldap Lightweight Directory Access Protocol Extension for PHP, for FIU Authentication
- php-gd Image GD Extension for PHP, for manipulating image files
Build Process
- Codegyre\Robo for automating tasks - a PHP task runner (like Gulp, but with PHP)
- PHPUnit\PHPUnit for unit-testing our PHP code
- Composer for handling our dependencies
- Travis CI for continous-integration, ensuring the quality of our production code
To keep MyHonors-Backend highly scalable, it needs to follow a certain discipline in its development environment. Here are some ground rules to follow:
- Always write your tests before you write your code - Test Driven Development!
- Make sure that tests pass and that you are in sync with the current master branch before making a pull request/merge to the master branch!
- Follow the PHP Framework Interop Group's PSR-2 specification coding style (which means that you must also follow the PSR-1 coding style) as well as the PSR-4 specification autoloading specification for classes, namespaces and directory structure.