I'm Randall.

I build web applications and mobile apps. My go-to stack is Laravel, Inertia.js, React, and PostgreSQL — but I'm a software developer first. I choose the tools that fit the project, not the other way around. And what I build aren't websites — they're applications. There's an important difference.

A website displays information. A web application does something. Most businesses have websites — static pages, maybe a contact form, often built on WordPress or Squarespace. What I build is fundamentally different: server-side logic, database-driven state, authentication systems, real-time data pipelines, custom algorithms, and purpose-built tools that solve specific problems. The same kind of engineering behind the products you use every day — just applied to different domains.

Here are my two largest projects for 2026:

Belcourt Family Dentistry

A full-stack healthcare platform engineered to capture and manage patient leads across four intake channels — appointment requests, smile simulations, wellness quizzes, and comfort profiles. It scores 100 on Lighthouse SEO, is fully responsive on mobile, and was built from scratch to convert visitors into patients.

The backend includes a custom staff portal (built with Filament) where the team reviews leads, tracks engagement, and manages follow-ups. Three notification channels keep staff informed: email alerts via SMTP, in-app database notifications, and dashboard widgets with ROI metrics and lead source analytics.

Under the hood, this application has depth that no template or page builder could produce. A custom teeth-whitening engine performs pixel-level RGB-to-HSL color space conversion — over 100 lines of color math that brightens teeth without discoloring skin or gums, using PHP's GD library with zero external APIs. A proprietary spam detection system scores submissions against 95+ keyword patterns across 8 categories with weighted thresholds, tuned specifically for the kind of spam dental practices receive (equipment vendors, staffing agencies, SEO firms). All analytics are HIPAA-compliant and server-side — no Google Analytics, no third-party trackers. IP addresses and session IDs are SHA-256 hashed and irreversible, making the entire analytics pipeline immune to ad-blockers while respecting patient privacy. The scheduling engine generates 14 days of appointment slots through a 3-layer override system (weekly schedules, date overrides, blocked time slots), shared between the booking form and Bella — a template-driven chatbot that walks patients through conversational booking without any AI hallucination risk. A 6-theme multiplexing system allows instant, zero-downtime visual changes managed entirely from the admin panel.

CraigsRadio

A web application — and native iOS app — built for streaming music with a DJ, broadcasting live shows, and bringing radio into the modern era. It scores 100 SEO, 98 Performance, 96 Best Practices, and 94 Accessibility on Lighthouse. This isn't an embedded Spotify widget or an audio player with a playlist. It's a custom-built streaming platform with its own infrastructure.

The streaming architecture bypasses traditional solutions like Icecast or Shoutcast entirely. All music is pre-transcoded to 320kbps MP3 and served from Cloudflare R2's CDN. The web player uses Howler.js; the mobile app uses expo-audio. When a listener tunes in, the server selects tracks from a rotation queue based on station genre, and each client fetches files sequentially with near-end prefetching — the next track loads 10 seconds before the current one ends, ensuring gapless playback. This scales efficiently because there's no central stream to bottleneck.

An AI DJ — built with the newest technology for script generation and text-to-speech — creates voice segments between tracks, welcoming listeners, introducing songs by name, and building transitions. DJ audio is generated on-demand, cached on R2, and played using a ducking pattern where music volume lowers during the DJ segment and restores after. For live DJ shows, Redis becomes the source of truth: current track, playback position, and queue are synchronized across all listeners so everyone hears the same song at the same time. DJs can send voice drops, take listener questions (recorded via the browser's MediaRecorder API, uploaded to R2), and have their responses concatenated with caller audio via FFmpeg into single on-air segments.

The iOS app is built with Expo (React Native), SDK 54, using expo-router for file-based navigation, Zustand for state management (shared architecture with the web app), and Sentry for crash monitoring. Background audio playback, push notifications for live shows and new tracks, and Sanctum token-based authentication connect it to the same Laravel 12 backend and PostgreSQL database that powers the web experience. Built and submitted to the App Store via EAS on M1 Mac infrastructure.

I have a degree in computer science and served as Vice President of the Beta Iota Chi Chapter of Phi Theta Kappa Honor Society. Beyond the degree, most of what I know came from curiosity, late nights, and a stubborn refusal to accept "I can't do that" as a final answer. What started as tinkering became a career — I build things not because I have to, but because I want to.

I believe the best software is built by small teams who genuinely care. I want to be in that room.

Message me