Independent web developer

Selected work / 01–04

MD Web Studio

I build websites
and interactive tools.

Based in Edmonton. Working with WordPress, JavaScript, React and Python.

Explore the work

Selected work (04)

Project index / Open to read

01

Tailz

Client website / NAIT capstoneCase details

WordPress / Team MMKB

A WordPress rebuild.
Four-month deadline.

Our NAIT capstone team, MMKB, rebuilt Tailz’s existing Shopify website in WordPress. Research and client meetings shaped the brief, while design and development continued together.

My work covered WordPress setup, shared templates, navigation and ACF. I built the XS-to-XL grooming-price interaction and helped resolve Git and frontend asset-loading issues.

Read the Tailz case study
Grooming prices01 / 04

ACF / Prices by size

XSSMLXL

One selection.
Every card.

Vanilla JS → Updated prices

Interaction diagram: choosing a dog size updates every service card. Prices for extra-small through extra-large dogs stay with each service.
My contribution
WordPress setup, templates, ACF and interactions
Built with
WordPress, TailPress / Tailwind, Vanilla JS, CSS
Setting
Four students · Four-month deadline
Outcome

Selected by the client, presented in class, and packaged with editing instructions for a handover managed by our professor.

02

iPod music player

Interactive applicationCase details

React / Flask / Last.fm + Spotify

Find a track.
Keep the name.

I sometimes struggled to find new music, so I wanted to build a music discovery website with an iPod-style interface. It was also a way to practise Flask and brush up on React.

I built a Flask backend that picks a track from Last.fm’s chart, finds it on Spotify, and sends it to the embedded player.

Next and previous controls keep a browsing history. SELECT saves a track’s name and artist to a liked-songs view, stored in the browser between visits.

I kept the Spotify player mounted when switching views so opening the saved list doesn’t recreate the playback controller.

The music player’s starting screen: a white iPod with a blue display and a circular control wheel.
Music player / Starting screen. SELECT begins track discovery.
Project type
Personal music application
Built with
React, Flask, Python
Integrations
Last.fm API, Spotify API and embed
03

Movie randomizer

Interactive applicationCase details

React / Flask / TMDB API

Start with a movie.
Narrow it later.

The movie randomizers I tried asked for lots of preferences before showing a result. I wanted someone to get a movie immediately, then refine the search as they kept browsing.

I built it with React, Flask and TMDB. In this version, a genre selector appears after three re-rolls, giving the next pick more direction while keeping the filter optional.

Previous and next controls preserve browsing history. The interface loads the next poster before revealing it and guards against stale responses when requests overlap.

Movie randomizer showing Avengers: Infinity War, the optional Action genre filter, and controls for re-rolling or revisiting previous picks.
Movie result with optional genre filtering and browsing history.
Project type
Personal movie discovery application
Built with
React, Flask, Python
Integration
TMDB API
04

Video game catalogue

PHP / School projectCase details

PHP / MySQL / Bootstrap

Browse the games.
Manage the records.

A school PHP project built from an assigned brief and provided resources. I developed a database-backed video game catalogue with public browsing and a separate, session-protected administration area.

Visitors can search titles, filter by genre, year or platform, and open a game’s details. Administrators can add, edit and delete records, with cover-image uploads and generated thumbnails.

This project gave me practice working directly with server-rendered PHP, prepared MySQLi queries and image processing.

The PHP game catalogue’s browse page, with search and genre, year and platform filters above the supplied game covers.
Catalogue browse page, with title search and genre, year and platform filters.
Project type
School PHP project
Built with
PHP, MySQLi, Bootstrap, GD
Focus
Queries, CRUD, sessions and images
Related coursework

A school SQL lab using provided resources: filtering, sorting, aggregation and record-update exercises. View the SQL lab screenshot.

About

Edmonton, Alberta

MD / Avatar
MD’s Xbox-style avatar, with glasses, a horned helmet, a dark graphic T-shirt and ripped jeans.

The developer
behind the studio.

I’m a web developer based in Edmonton, Alberta. I graduated from NAIT’s web development program in August 2025.

I care about accessible interfaces, fluid layouts, and the small interactions that make a website easy to use. My work spans WordPress websites, React and Python applications, and PHP database projects.

I’m interested in freelance projects and web development roles.

Contact

Projects / Developer roles

For freelance projects or web development roles, email me.