Hi, I'm Mark.
I like to build internet things.

Splitting Costs with Friends!

React application with Firebase backend with user authentication. The idea is to create an account, and within that account, have trips. Within each trip, you'll enter the friends involved in that trip. When an expense is occured, you will enter the expense into a table, tagging the friends involved in the expense and who paid. Each expense is divided between friends involved, and a running tally is calculated of how much is owed. Everyone then pays into a single pool and it is divided by those that have a net balance of money owed instead of taking the time to divide each expense among friends.

This is still a work in progress, but all basic features are currently functional. Both responsive and standard formatting need some cleanup, and I intent to add visualizations of data as a feature.

React, Firebase

Covid-19 Chloropleth Map
by Texas County

This app displays a chloropleth map of Covid-19 cases by Texas county. The backend uses Cheerio to scrape the Texas Dept. State Health Services' website for statistics that are then served up by an Express API. The front-end is built with Gatsby.js to display those stats on the chloropleth map generated using D3.js.

Texas Covid-19 cases by county were initially scraped from Texas Dept. State Health Services. On March 22, 2020, DSHS released their own map of Covid-19 cases and stopped displaying the chart my info was being scraped from. As a result, Cheerio now scrapes the Web Archive version to demonstrate how the app initially functioned. The information is out of date and won't be updated beyond March 22.

HTML, CSS, React, Gatsby.js, D3.js, Express


SwatchTones is a MEAN full-stack application that allows users to search for and upload cosmetics samples that represent a diversity of skin tones, allowing for more informed online purchasing decisions. The app integrates with several NPM modules that extract prominant colors from uploaded images, attempts to discern makeup from skin tone, and displays that array of colors.


This application was designed for mobile use, allowing users in a disaster zone to either offer assistance or request assistance from neighbors and community members in the event emergency services are overextended. The Ruby application is built on a Rails backend that serves a JSON API with all CRUD operations available across models and CORS configuration. The front-end uses Angular and features the Google Maps API for geolocation.

HTML, CSS, Ruby on Rails, AngularJS, PostgreSQL


Hiking Weather is a full-stack application using Mongo, Express, Angular.js, and Node.js [MEAN]. The application allows a user to enter in the dates and location for a hiking trip and then receive recommendations for clothing, water consumption, and other advisories based on the OpenWeatherMap API.

HTML, CSS, Bootstrap, JavaScript, Mongo, Express, Angular.js, Node.js


Blockchain Jobs is an online job board dedicated to blockchain related roles in the tech industry. This full-stack application adheres to the MVC file structure and uses Node.js, MongoDB, Mongoose, Express and EJS. There are three models (employers, jobs, users), complete RESTful routes, user authentication with password encryption, and Google Maps integration (particularly challenging using only EJS).

HTML, CSS, Bootstrap, JavaScript, jQuery, Node.js, MongoDB, Mongoose, Express, EJS


JavaScrolls is a simple javascript turn-based card game in a similar style to Hearthstone, in which a player and the console play/attack with "creature" cards until the opponent has no points remaining.

HTML, CSS, JavaScript, jQuery