Brian Bolnick
IC Project Management
While working as an Implementation Consultant at Instructure, project management played a huge role in successfully implementing new instances of the Canvas LMS. The team was previously using a plethera of tools, each of which fulfilled a particular need that was absent from the other. The goal of ICPM was to combine the best and most useful pieces of each tool in a single application. This would make the administration and management of every project more stream-lined and accessible. I also used this tool as a training resource for co-workers who were interested in getting started with web development. The application features overall project dashboards, individual milestone progress and status tracking, project sponsor and contact storage, and email template generations.

I had also planned to build live integrations with Financialforce (the main CRM) to pull in particular project information, as well as additional functionality and interactivity within project details. However, I left Instructure before I was able to fully complete the project.
Technology
Front End:
Back End:
Database:
Authentication:
State Management:
React.js
Node.js
MongoDB
Local (Passport + JWT)
Redux
Database Architecture
icpm-erd
Authentication
ICPM implements local authentication with the Passport NPM. The app is held within a single file structure, but the server and client are two separate applications. For this purpose, I also implemented JWTs to validate and authenticate HTTP requests from the client to the server.

The User's registration email is saved into the database with a salted and hashed password. Each login attempt is compared to the hashed value, which then uses a Redux push to forward the user to the main dashboard page.
The dashboard (or home page) lists each project belonging to the Implementation Consultant. As this information is stored in the database, a Redux fetch action is dispatched when the page loads to retrieve all projects belonging to the authenticated user.

Each card displays general information about the project, as well as an outline of the progress for each implementation milestone. Clicking on a card brings you to the main project view page.
Dashboard
Project View
The project view shows specific information for a single project. The main view consists of an overview of implementation milestones (SIS, Branding, Authentication, Migration, and Other). Each sub-task of the milestones are able to be completed from this view, updating the overall milestone progress. The client sends an HTTP PUT request to the server to update the task status. More information about the project as a whole is also displayed.
The other sections of a project view are the project contacts and note tracker. Contacts allows the user to add points of contact for the project with designated role and contact information. All of this data is easily visible, and allows the user to send an email directly to a contact if desired.

The notes view is a collection of rich content editors that help to generate a Weekly Status Call email template. I created this feature to help save time by granting the IC the ability to take all notes for the status call in the application itself and then easily convert it into an email that is sendable to the client. The email template also pulls in additional project information (dates, project folder links, etc.). My roadmap planned to include a feature that would allow you to select stored contacts before creating the template so it would pre-populate everything you need in order to send it off.
Contacts and Notes