Westlake Royal Building Products
Westlake Royal Building Products is one of the many brands of Westlake, a global diversified industrial company, focused on products for home building and remodeling. My big accomplishment on this project was creating something that the client said they had never seen before with one of the other developers — A product navigator that would guide you along one of 3 paths, and after asking a series of questions, present you with product recommendations. You can read more about the product navigator on the Technical Details tab.
Building Westlake Royal Building Products was very much a team effort, from the Client team to the graphics designers to the developers.This site was built on Drupal 11 and makes use of Apache Solr as the search backend. The design leverages paragraphs to create custom blocks that content editors can use to create the page layout desired. Most of the pages on the site were built that way
Our Travel Home
The idea for Our Travel Home started when my wife and I returned from our trip to Iceland in 2016. Based on our attempts to sound out Icelandic place names, we decided to call it "Murdered the language with an axe". We even went as far as registering the domain name, but we never did anything with it, and we let the registration lapse. In April of 2024, we took a cruise that included observing the total solar eclipse on April 8th, and came back with a renewed determination to create a travel blog.
Building Our Travel Home was an interesting journey. Upgrading from Drupal 9 to Drupal 10 was a pretty straightforward task, but when I went to upgrade to Drupal 11, I discovered that the base theme that I had been using was not Drupal 11 ready. The project seemed not to have been updated in a while, so I forked the theme and made the changes needed so it could be used with Drupal 11.
MEDUSA
MEDUSA is the membership management system for The Royal Manticoran Navy: The Official Honor Harrington Fan Association, a world wide 501(c)7 non-profit fan organization with 7,000+ members. It was, and is, a dramatic improvement over the original management website, which was held together with bailing wire, bubblegum, and duct tape. Originally, I was the second developer on the project, but very quickly became the only one. The last time I checked, I wrote about 95% of the site, but that percentage is coming down since a second developer has joined the project.
MEDUSA was built using Laravel 5.7 and MongoDB. Bootstrap, Font Awesome and jQuery were used for the UI components; for tabular information, DataTables was used. To round out the UI, the rcswitcher jQuery plugin gave the checkboxes a nice improvement. All of the CSS was maintained using SCSS which was compiled and minified by webpack. Webpack was also used to combine and minify all of the javascript used on the site.
Trucks-API
The Trucks-API project was originally a demo project to showcase my software development skills. To quote the challenge that prompted this project
Our team loves to eat. They are also a team that loves variety, so they also like to discover new places to eat. In fact, we have a particular affection for food trucks. One of the great things about Food Trucks in San Francisco is that the city releases a list of them as open data.
Using the latest open data from the city of San Francisco, the Trucks-API project exposes a simple public facing api that can be queried by location/address, type of cuisine or name. It will return a JSON response, suitable for use in other applications.
The goal for this demo was to make it fully self contained and standalone. The only requirement was to have a reasonably modern version of Docker installed. For this project, besides Docker, I used Laravel 11, Ubuntu Linux 24.04, PHP 8.3, MariaDB, Redis, Nginx, Composer and PHPStorm. It requires very little setup – clone the repository, create a .env file, and then run docker compose up. The full details on what happens with the containers start is in the README.mdin the repository. Once the container has started, there will be three API endpoints configured.