Visit site: http://lisalhilton.com/larapipeline/
Technologies used: PHP, MySQL, Laravel
The purpose of the website is to replicate and in some cases automate a financial tracking spreadsheet that I used in my previous job. The spreadsheet tracked information across multiple fiscal years, types of funding, projects, and geographic regions. It also utilized information from two different internal company systems – a financial tracking system and a subaward management system.
I had previously mapped out the database as part of a class on relational database concepts. One challenge throughout both the initial creation of the site and the conversion to Laravel is that the data from one of the internal systems does not entirely conform to good relational database design, primarily in the assigning of subaward numbers. While mostly unique, a few projects had ended up being assigned the same number. Dealing with this challenge while building and converting the site gave me a strong appreciation for the need to design and maintain databases according to good practices.
A large portion of the code that I wrote for building the website was focused on interacting with the database–adding, updating, deleting, and pulling out information. Laravel uses Eloquent ORM, which handles this coding, and which also makes handling relationships between tables much simpler. This made it much faster to develop some extra pages, such country pages that show the projects in that country.
Laravel also makes it easy to use the same form templates for adding and editing information. This not only saves time developing but also provides a consistent experience for users.
Possible next steps:
- Assign users to projects in various roles. May be easiest to use a role/permissions plug-in for Laravel.
- Change the way regions are handled, having them be assigned per project rather than figuring them out based on the project’s country/countries. This would better reflect the business logic of how projects are assigned.
- More work on the queries, especially those that deal with the data from the external systems.
- Improve the display, such as using a tab-like display for projects to more easily separate out the information.