Web Development

Web development is the area where I got my start in software, and where I have the most experience. I'm comfortable handling the full stack from database to frontend.

Development Stack

My current go-to development stack is: React or VueJs, Go, and PostgreSQL. Often times, I use Bootstrap's CSS, espeically if it's a form heavy project. Usually accented with custom CSS.

These days, most of the new applications I'm working on are internal business applications that use the browser as a user interface, with a backend API for database access.

Although these are internal, non-public applications, it's still web development under the hood.

Linux Servers

Day to day, I spend a lot of time SSH'd into Linux servers. I run most of my applications on Linux servers, and I'm very comfortable in a terminal. I'm comfortable running applications on bare metal (ie. NGINX and systemd based services) or in containers.

Containers / CI/CD

Although I am comfortable running applications on bare servers, I am using Docker and Kubernetes for most new work. I use a Docker Compose setup for development work, and have been using K3S for production containers.

Along with this, I have a Gitlab pipeline setup for automated testing and deployment. Kubernetes is indeed overkill for most work I'm doing, but it's worth the overhead for container management.

Web & Open Source Projects

Here's a selection of web based, and open source projects I've worked on.

Jefferson County, Ohio Website

Includes sections for various departments. These sections can be updated by users via a custom admin backend. The site also includes a GIS system, real estate search, and admin section for both. The website is built using a VueJs frontend, Go backend, Postgres database, and hosted on a Ubuntu Server.

ToddChat App / Web Interface

Todd Chat (named after Todd, the cat), was born out of Google's decision to sunset Hangouts. I was tired of switching chat apps every few years due to this sort of thing. So, I thought I'd write my own!

The backend is wrote in Go, and is actually pretty simple. It features a login system, web socket server for chats, and not much else. I wrote a web client in React, and a mobile (Android only for now) app using React native.

This is fully containerized, so it can be run anywhere. I'm running it on a K3S cluster (becuase, why not?!). There are unit tests for the backend, web, and mobile apps. This is somewhere between alpha and beta versions.

React / Go Starter Project

This project mostly serves as a template for creating a: React frontend, Go backend, Postgres database project. Clone it, change the relative bits, and get going.

I've taken it a bit beyond the template stage by adding basic funtionality around creating and modifying "Widgets". This project includes unit tests, Dockerfiles, and a Docker Compose setup for development. Full README in the repo.

Modelgen

Modelgen is a project that automates the creation of CRUD functions based on a struct. The struct is assumed to model a database table. This project came to life in the middle of rewriting a legacy product. Faced with an evolving database schema, and an increasing number of functions to match, I needed to cut time dedicated to writing boilerplate code.

Modelgen also features a way to define a struct with sql.Null* fields, and it will generate optional where parameters for SQL Select queries, based on those fields. Ultimately letting users submit a JSON based request with 0 to n number of searchable fields.

Go / Vue Starter Project

This project is similar to the React starter project, but it's using Vue, missing tests and containerization. It's a bit older, and hasn't been updated with those details yet. I'm using React for most new projects, but this still serves as a good example project.