Peter Epp
Portfolio
- Home
- Portfolio
Welcome to My Portfolio
I've worked on quite a few projects over the past 15 years. Some were great, some nothing fancy. Below are the highlights of some of the work I've enjoyed the most, am most proud of, and/or best demonstrates my skills and talents.
Work Projects
These are projects I've built or worked on with others for my employer.
What is this?
A largely informational website that also has a public registry that integrates with Sharepoint for the back end (same as the NWT Land and Water Boards). An additional feature allows users to submit requests to download map files so they can keep track of those downloads where the requests (and their associated file links) expire after 24 hours.
Details
This was a site we originally built on Drupal 7 and just recently rebuilt and redesigned on Drupal 9 in conjunction with other Kellett team members.
The key feature of this website is the public registry, which fetches data from a Microsoft Sharepoint system in XML format, transforms that into a local MySQL database and then exposes that data to Drupal in a way that is compatible with stock modules and functionality for listing, searching and displaying the content. It includes custom code and templates for individual page displays and interactive maps. It includes an opt-in email subscription system that sends a daily digest to each subscriber at the end of each day to inform them of updates that have been made to all the registry projects they are subscribed to.
This is almost identical to the registry built for the NWT Land and Water Boards, but with improvements made to the code based on an improved understanding of the Drupal APIs.
Key Features
- Responsive, modern design
- Faceted search
- Interactive maps
- Email subscriptions and notifications
- Public registry integrating with Microsoft SharePoint
Technologies Used
Note: no link is provided as this is a private, internal system and only the login page can be publicly seen.
What is this?
Lighthouse is the internal, custom project management tool used by Kellett Communications.
Details
It started it's life as a couple of independent basic tools, one for doing estimates, invoices and so on, and another for having project discussions and sharing files.
Over time it grew into a more robust set of tools, combining the original ones with additional functionality and full-on project management, integrating the Harvest time tracking tool and other functionality. About 2 years ago it was rebuilt on Laravel 5.8 by a colleague, and then taken over by me to continually evolve it's functionality and has since been upgraded to Laravel 10. With the new underlying framework it's now much easier to maintain and add on new functionality. It was also built using the Vue JS reactive framework form some components to provide more fluid user experiences, though it is not a 100% Vue app. It also combines jQuery (though that's being removed little by little) and Bootstrap components. It does not use Vue Bootstrap, however.
Key Features
- Tracking and management of clients and projects, including project descriptions, deliverables, conversations, and file sharing
- Integration with Harvest time tracking tool (via REST API) for tracking time and reporting
- Estimates and invoices, with ability to send expiring public links to clients to view, download and even pay invoices online
- Fiscal reporting by client and fiscal year
- Manage publications and insertion orders for print advertising
- Manage hosting domains and plans for invoicing clients for annual web hosting and email
- Varying user roles and access permissions for staff, clients, and contractors
- Dark/Light theme that adapts to OS setting
Technologies Used
What is this?
A set of 4 public informational websites for the Land and Water Boards of the NWT (Mackenzie Valley, Sahtu, Wek'èezhìi and Gwich'in) with a public registry providing access to detailed information on the regulatory process of reviewing and approving land and water-based projects (e.g. construction, mining etc) in the Mackenzie Valley and surrounding regions in the Northwest Territories.
Details
During my tenure at Kellett Communications, I worked with this client on and off for about 10 years. The site was originally developed in Wordpress, but the functional requirements quickly outgrew that and it was rebuilt on Drupal 7. The entire site was recently rebuilt in Drupal 8, retaining and migrating all content and functionality. Multiple colleagues of mine have also worked on this project over the years and I have been involved in it heavily for most of that time.
The key feature of this website is the public registry, which fetches data from a Microsoft Sharepoint system in XML format, transforms that into a local MySQL database and then exposes that data to Drupal in a way that is compatible with stock modules and functionality for listing, searching and displaying the content. It includes custom code and templates for individual page displays and interactive maps. It includes an opt-in email subscription system that sends a daily digest to each subscriber at the end of each day to inform them of updates that have been made to all the registry projects they are subscribed to.
Key Features
- Responsive, modern design
- Faceted search
- Interactive maps
- Email subscriptions and notifications
- Public registry integrating with Microsoft SharePoint
Technologies Used
What is this?
The Yukon government provides various online services to general public as well as specific business sectors and is expanding on this in order to streamline and improve the services they provide. This includes things like renewing a vehicle registration, paying a government invoice, or submitting a class 1 exploration notice.
Details
While working at Kellett Communications, I was involved with the development of several of these online services along with other developers, most recently the class 1 exploration notice. The front end of all these services are built on Drupal 7 (moving to Drupal 8 for newer services), and save data to various different back-end systems using RESTful APIs. One of those system's is a Laravel-based application that I was also involved in developing some of the back-end services on, particularly the class 1 exploration notice.
Key Features
- Integrations with back-end REST APIs
- Integration with ESRI map services
- Complex web forms with tailored user experiences
Technologies Used
What is this?
The NWT Teacher's Association provides various information and services for education professionals in the NWT. The website provides a variety of publicly accessible information as well as a private members area and a member administration and management tool for association staff.
Details
Built originally on Drupal 7 and recently rebuilt in Drupal 8, this website provides standard public-facing information to help people learn about teaching in the NWT, along with a back-end area where association staff can manage their membership. The system allows them to keep track of members, which communities they are in and their employment information. It also allows them to facilitate and track communications with members through Mailchimp along with an internal communication audit and discussion system.
Key Features
- Customised user-registration and member management
- Private access to information and files
- Integration with Mailchimp (for auto-subscribing members when they sign up and become active)
- Tailored member communication tools
Technologies Used
What is this?
Similar in purpose to the NWT Land and Water Board sites, this provides publicly accessible information and a public registry providing detailed information about the regulatory process of the environmental impact review process for any projects requiring such a review and approval process within the NWT.
Details
Originally built on a custom PHP CMS platform in the early 2000s, the site has since been rebuilt on Drupal 7 and is currently in the process of being redesigned and rebuilt on Drupal 9. It used to integrate with a document management system to provide the public registry back-end, but since that system failed it makes use of the old CMS back-end for providing the public registry data until it can be rebuilt and integrated with a new public registry system that is currently under development. It provides advanced faceted search functionality for searching and browsing the registry, as well as interactive timeline views of projects. It was most recently updated to include a timeline tracker page that provides aggregated timeline data along with a quick view of all project timelines.
Key Features
- Responsive design
- Faceted search
- Interactive maps
- Email subscriptions and notifications
- Interactive timelines
- Public registry
Technologies Used
What is this?
A script that uses a combination of composer and drush to create a new Drupal 9 installation using the Acquia Lightning modules. NOTE: No link is provided as this is a private project.
Details
This is a script written in php that will get you started with a fresh Drupal 9 site incuding the Acquia Lightning features, complete with a Bootsrtap Barrio based starter theme and bunch of preconfigured stuff ready to go. It may not be everyone's preferred initial setup, but it could be forked and modified to suit. It uses a configuration file to tailor the installation and save some steps during the process.
Note: we have discontinued use and maintenance of this script now in favour of simply cloning a pre-installed and configured base site, which is easier to maintain.
Personal Projects
These are projects I've worked on in my spare time.
This is a command-line script written in PHP using Symfony Console for automating Drupal updates using composer on multiple sites. It offers the following features:
- Option to automatically commit and push to a git repository
- Automatic download of production database (if a drush alias is present)
- Backup of database prior to updates
- Function to rollback a site so you can test the update deployment manually prior to production deployment
- Detailed summary of updates used in git commit
- Option to send email notifications with the detailed summary
- Options for handling scaffold files that may have been overriden in the project (if you are not already taking care of that another way)
- Nicely formatted logging and a log display command to quickly review any messages generated by the last run command
- Proper handling of multisite configurations
In uses YML file for configuration and to provide the list of sites to be updated, which it will look for in a few different locations on the machine executing the script. It can speed up the process of running regular updates when managing a large number of sites. If you use a CI workflow, then the next step of testing and deployment to UAT for review can be triggered automatically as well when the script pushes the updates to your remote repository.
If you manage and host a large number of sites with a contract to handle security updates, this script is for you!
Technologies Used
Note: no link is provided as this is a private, internal system and only the login page can be publicly seen.
What is this?
A Drupal-based web application for managing digital assets, such as computers and other devices as well as passwords for digital resources that need to be shared amongst a team.
Details
This is a project I took on in my spare time with the hope that I might turn it into a SaaS product I could sell. This hasn't happened yet as I don't have the marketing resources, but it is in use by my current employer (Kellett Communications). It allows you to keep track of all hardware, where it's located and who it is currently assigned to, as well as how old it is and what administrative access information is needed to login.
In addition, it provides a keychain function for sharing passwords for various digital resources and saves the passwords using a slow encryption method in the database.
Technologies Used
What is this?
It's a whole custom MVC framework built in PHP. The link above goes to the core framework, but you can browse the other Github repos to find the various modules and extensions I also developed for it.
Why?
- I was young and not very knowledgeable of what was out there (I didn't know about things like CakePHP or Laravel)
- I wanted something to make development life easy so I could build out sites more quickly
- I needed an excuse to learn more advanced PHP OOP development
Details
In my earlier years of web development, before I knew much about what was out there and before I'd started working with Drupal, I was building custom sites from scratch. You know, as you did back in the day. So I started working on a framework to help make it easier and quicker and over the years built this entire thing. Obviously there are much smarter people out there working on much better, more advanced frameworks and have been all along, but this gave me a huge boost in my knowledge and expertise in PHP OOP development.
Sadly I've lost most of the commit history because I couldn't be bothered with the hassle of converting it properly from SVN when I moved everything over to Github.