Casey Dwayne

Sites & Software

Welcome!

I am a full stack web developer/software engineer. This curated collection of tools and applications is an extension of my resume.

MLS App

A Vue (3) application. Uses Firebase for the user system/authentication layer. Contains many tweaks you probably wouldn't even notice (unless they weren't there) for a better user experience. Heavily optimized. Mobile friendly. Check it out!

VueFirebaseGoogle MapsVite

MLS Scraper

A robust scraper built using Puppeteer. It simulates user interaction, uses countermeasures for anti-scrape detection, and thoroughly parses content to be stored in a database. Offers a real-time mode for inserting/updating on the fly, batch processing for fewer DB requests, and one-shot mode where all processing is done at the end. Controllable by MLS GUI but mostly runs headless via cron jobs. Notifies via email if there are problems.

PuppeteerJavaScriptMySQLNode

MLS GUI

A simple command center for controlling Puppeteer and "Scraper". It uses SolidJS on the frontend and Express, Puppeteer, and Socket.io on the back. The front and back are completely separated in /src/ to keep things tidy. It uses event-driven architecture with buttons powered by "commands" (like page::refresh) and updates through appropriate hooks (web sockets). Nothing too fancy, just a way to control and monitor scrapes as they progress.

SolidJSViteSocket.ioNodemonSassTailwindExpressPuppeteer

MLS Updater

A Node.js service for syncing scraped MLS listing data to the database. It provides realtime quality assurance, checking if a listing exists, executing INSERT or UPDATE depending, ensuring images already in the database are not overwritten in case images did not load during scrape (anti-scrape bottleneck), etcetera. It also adds Google Maps data (like lat/lng) and some administrative tasks for new listings. At the end it deletes expired listings (those not present in a full scrape).

JavaScriptMySQL

The DSB

The Dynamic Site Builder started out as just a modular way to build websites. Originally in PHP (2012), ported to Node and enhanced in 2014. Creates a streamlined development platform with some "standards" as to the structure of skeletal HTML, theme stylesheets, et. al.. featured HMR/live reload before React and Angular. Developed alongside the 2 until 2016. Still a very useful tool for large sites and software.

NodeExpressWebpackPugSassChalk

CSS Monster

A utility-first SCSS library for rapid prototyping. Built WAY before Tailwind started trending (circa 2013). Largely abandoned because it makes otherwise clean markup look like speghetti code. Intended to create a better solution in JS but discontinued it because the DSB is not as needed in the age of Vue, Vite, SolidJS, etc. Still, impressive for it's time IMO.

SassySass

Sassy

An open-source contribution. Sassy was developed during my rewrite of Monster. Frustrated with the limitations of logic in Sass I developed this utility library (which features advanced map manipulation, comparision tools, implode/explode, etc.). Version 2 use namespacing to avoid potential problems with future releases of Sass. Project available on GitHub.

Sass

Admin Panel

A powerful, portable interface for editing websites using an interface. Connected other parts of my Content Mangagement System such as BLISS (WYSIWYG editor that used Monster), File Manager, Database Manager, and more. Had a drag and drop system with minimize, maximize/restore, close buttons at top. Built in calculator. Show Desktop button. Proof via video.

JavaScriptPHPCSSMySQLTinyMCE

Package Organizer

A tool for managing dozens to hundreds of packages that change every 3 months or so. Client needed a way for their call staff to be able to reference quickly, as well as integrate with custom WordPress plugins I helped with prior (that decides the best package based on address). Used Vuetify to save time. Locked production version behind authentication at client's request.

VueVuetifyAxiosAPIsWordPress

Reviews API

A custom aggregator that replaced a $250/mo SaaS my client had been paying into for years. Takes reviews via APIs from Zillow, Google, Facebook, etc. and stores them in a database. Reviews are served in the front (in batches) with seamless animation that appears as infinite scroll. Client-facing Angular frontend for authentication and administering updates. View the public portion.

MySQLAPIsAngularOAuth 2.0Lazy LoadingInfinite Scroll

...and honestly a lot more.

Visit https://projects.caseydwayne.com for websites.