This is a portfolio of my various projects. They showcase my knowledge as a full-stack software developer. My experience goes beyond strictly knowing how to code and includes in-depth knowledge of the full tech stack upon which web applications rely.
Title | Description | Tags | Demo |
---|---|---|---|
PDF.js Quality Comparison | This is a tool I created to visually compare the quality of anti-aliasing when using PDF.js library to zoom in/out of a document vs letting the browser to do it. More details can be found in the tool's intro section | PDF.js/Javascript | Click here to see the tool |
WebRTC Robot | A robot that will join an Engageli classroom. It's not interactive, it will just join. Uses Python and Selenium with Chrome as the browser. | Python, Selenium | EnageliRobot.zip |
WebRTC | Built a basic WebRTC app. Uses a Google STUN server. There is no signaling server, but a log is available to submit and view SDP entries under a mutual meeting ID. No TURN server is implemented, either. | WebRTC | project3 is the most comprehensive, so review that. WebRTC Demos |
Apache Administration & ElasticSearch | I configured Apache to pipe access-log and error-log entries to a PHP CLI script. The script would convert the line to a JSON string and insert it to an ElasticSearch database. This allowed me to then use Kibana to view and search through the logs in real-time. Secured traffic using certificates signed by internal certificate authority. I also installed the SearchGuard plugin for the ELK stack, allowing user-access controls for Kibana. | Apache, ElasticSearch/Kibana, x509 Certs | ElasticSearch server has since been taken offline, but here is the script used to pipe the Apache logs to ElasticSearch: Script |
Javascript library for modal windows | Created a library that uses plain Javascript to facilitate displaying sections of a web page or entire web pages (iframe) within a modal window. I was unable to find such a library that didn't rely on jQuery, so I created this one. | Javascript, CSS | Sample and source code can be found on Github: Click here |
Restaurant Menu web application | Basic application that allows users to create online menus for their various restaurant locations that others can view. Include drag-and-drop abilities, as well as roles and permissions. | PHP/Laravel, Tailwind CSS, Javascript, MySQL | Source code is private, but here's a video demo:
|
REST API to accompany web application | This is a standard REST API created to accompany my Restaurant Menu web application. It uses JWT for authentication (no libraries were used, generated manually within my code these after reading up on JWTs and how they are created). The documentation for the REST API was created using Postman. | PHP/Laravel, Postman Documentation Tool, JWT (JSON Web Token) | Video demo below:
Click here to see the Postman documentation. |
Google Maps to Visualize Traceroute | This application allows you to paste in the results of a windows traceroute and get a visualization of the path that was taken via Google Maps. I integrated to 2 Geolocation APIs, setting one of them as an automatic backup if the first one didn't respond. I integrated to the Google Maps API, as well. | PHP, IP Geolocation APIs, Google Maps API, Javascript, Regex | Video demo here:
Click here to use the tool. |
Drafting XML Schema from Scratch | I regularly work with XML documents and often need to reference the document's XML Schema (XSD) file to determine what enumerations are allowed, what data formats are expected for specific fields, etc. I wanted to gain a solid understanding of the XSD language and figured I could do so by creating one from scratch. I approached this task by assuming that I was creating an API where users could submit consumer information for the purpose of pulling credit reports. I created an XSD that the XML could be validated against to ensure proper formatting. I also made the XSD extensible, so that custom values could be inserted into the XML via other namespaces. Lastly, I utilized the extensibility by creating custom values from another namespace and combining it. I ran a validation check on the files using XML software: everything passed. | XML, XSD (XML Schema) | Video overview here:
Click here to view the XML schema files. |
Implement Client Certificates for User Authentication | This project showcases the concept of using x509 certificates for purposes of client authentication. The workflow here is that the client initially logs in with a password, goes into their settings and generates the certificate, which they will install to their machine. On their next login, the certificate will be detected and they won't need to enter their password. | Apache, x509 Certs, Self-Signed Certificate Authority, PHP | You can see the details of this project, along with a video demo here |
SSO/SAML 2.0 using homegrown IdP | I was able to implement SSO/SAML functionality between Okta and a few service providers, such as Salesforce and ServiceNow. However, this process was simple because these providers had pre-built plugins that allowed this to be done without knowledge of how the underlying technology works. To gain a better understanding of SAML, I created my own homegrown IdP and and got it to work with Salesforce and ServiceNow. Specifically, I was able to get the SP to send a request to my IdP, to which I returned a signed response, successfully establishing a login session and getting the user re-directed to their SP's dashboard. | SSO/SAML 2.0, x509 Certs | Video demo here:
Click here to view the various files and templates I used to manually generate IdP responses. |
Java SSL Debugger | This is a Java-based command-line utility that allows you to check whether the SSL certificate at a target host would be trusted by the Java certificate database. | Java, x509 Certs |
Click here to view the Github repo.
Video demo here: |
Chat App using Websockets | This is a web-based chat application that utilizes websockets. Using websockets allows messages to be received by the server and broadcasted to all participants in real-time with minimal overhead. For purposes of understanding websockets, I did not use any libraries. For production apps, I'd recommend using a library. | PHP, Javascript, Websockets |
Click here to view the Github repo.
Video demo here: |
Library for MeridianLink's SmartAPI | This is a PHP library that can be used to expedite integration to Meridianlink Inc.'s SmartAPI interface. Although the interface is XML-based, this library abstracts away this portion, so the user does not need to know XML, at all. The interface is used to order credit reports and verification services for loan applicants and uses MISMO's XML schema. This library adheres to PSR (PHP Standards Recommendations) and can be downloaded via Composer/Packagist. I built this library during my personal, non-work time while I was employed at MeridianLink, so I fully own it. | PHP, Composer, OpenSSL, XML, XPath, XSD, PHPUnit (for unit testing), Doxygen (auto-generating documentation from code comments) | Here is the Github repo for the library. |
Generic Loan Origination System | This is a generic system that would be used to process and track a borrower's loan application. It's not a full LOS, but a partial one I created for purposes of learning to code. It has a few integrations to 3rd party systems, as well as a heavy use of Javascript. | PHP, XML, XLST, Javascript, CSS, mPDF | This application and code is not available to the public, but you can watch
a demo of it below:
|
Design Specifications for Credit Tracking Software | This was a project I worked on some time ago as part of a startup. My goal was to move the company off a paper system and onto an electronic one. The software included user administration, roles & permissions, a credit card payment integration, audit logging, etc. This was designed from the ground up, 100% by myself with feedback from people who would be using the system. I hired a development team to handle the coding and oversaw the project from start to finish. QA/UAT was done myself and I worked with the development team to iron out all the bugs. Overall, project took around 8 months to finally get deployed. | Balsamiq | The design spec is nearly 100 pages long. You can see the first half of this as a PDF here. |