Josh Johnston

Josh Johnston

Full-Stack Web Developer • Halifax, NS

NSCC IT Web Programming graduate building full-stack web applications and custom tooling.

Skills

Technologies and tools I use to build and ship software.

Languages

  • HTML / CSS
  • JavaScript (ES6+)
  • Python
  • PHP
  • SQL

Frameworks & Libraries

  • Node.js / Express
  • React / Next.js
  • Tailwind CSS
  • WordPress
  • Twig
  • Godot / GDScript

Databases

  • MariaDB / MySQL
  • PostgreSQL
  • MongoDB
  • Supabase

Infrastructure & Tools

  • Git / GitHub
  • Nginx / PM2
  • Ubuntu Linux / VPS
  • REST APIs
  • Web Security / SSL
  • CI/CD / GitHub Actions
  • Agile / Scrum

Work Samples

Each project documented with the problem, my role, and the outcome.

Personal Project

RPGMaker Archive Website

Problem / Task

The maintainers of the RPGMaker Archive List had a 500+ game collection managed in a Google Sheet with no public web interface. They needed a modern, searchable site to preserve and share these games with the community.

Outcome / Result

Live at rpgmakerarchive.com with 562 games indexed across multiple RPG Maker engines. Scored 100 for best practices and SEO on PageSpeed Insights (mobile). SSL hardened from A to A+ on SSLLabs. When issues arose with search engine indexing and game loading, implemented a fix within 24 hours.

My Role & Contribution

Collaborated with the maintainers on planning and design, condensing their input into a final design. Wrote a Python script to pull data from Google Sheets via the Google API into MariaDB. Built the full-stack app (Express + React) to search and display results. Deployed to a VPS on Ubuntu with Nginx and PM2, ensuring adequate hardware and bandwidth resources, and configured SSL to achieve an A+ rating.

Tools & Technologies
Express React MariaDB Python Google Sheets API Tailwind CSS Nginx Ubuntu Linux PM2 SSL/TLS VPS
VN
Personal Project

Visual Novel Engine Port

Problem / Task

Port visual novels built with the KiriKiri engine to Godot 3.x. KiriKiri has its own proprietary scripting language (.ks files), so the port required designing a new scripting language, a full interpreter, and a runtime engine from scratch rather than converting assets one-to-one.

Outcome / Result

A working Godot-native visual novel runtime capable of executing ported KiriKiri games, with full save/load support, shader-driven transition effects, and a localization pipeline.

My Role & Contribution
  • Designed and implemented SiennaScript, a custom visual novel scripting language with 50+ commands, including a tokenizer, AST representation, and a signal-driven interpreter in GDScript/Godot 3.x.
  • Built a fully serializable save/load system capable of snapshotting and restoring a dynamic Godot scene tree, including shader materials, audio state, and script execution position.
  • Authored a Python migration tool to convert legacy KiriKiri .ks scripts (UTF-16-LE) to SiennaScript, automating dialogue extraction into a localization system.
  • Implemented shader-based transition effects (crossfade, wipe masks) via real-time shader parameter manipulation integrated with the tween animation system.
Tools & Technologies
Godot 3.x GDScript Python Custom DSL Shader / GLSL JSON Localization Signal Pattern Factory Pattern
Final Integrated Project

TCG Collection Tracker

Problem / Task

Build a full-stack web application as a team final project: a freemium TCG collection manager supporting Pokémon, Magic: The Gathering, and Yu-Gi-Oh!, with AI-powered card identification from photos.

My Role & Contribution
  • Built GleamVision, a custom AI microservice for trading card photo identification, integrating single-card and multi-card (YOLO) detection endpoints with tier-gated monthly usage metering.
  • Implemented Stripe freemium subscriptions with webhook-driven lifecycle management and a self-serve customer portal.
  • Built tiered serverless rate limiting (Upstash Redis) across auth, payment, and AI endpoints, with MFA and RBAC-enforced admin routes.
  • Integrated three external TCG APIs (Pokémon, MTG, Yu-Gi-Oh!) into a unified search experience with type-safe Zod validation.
  • Maintained a CI/CD workflow with GitHub Actions, Conventional Commits, lint-staged hooks, and PR-gated feature branches.
Outcome / Result

Deployed live SaaS at project-tcg-collection.vercel.app, a production-grade app with freemium billing, AI card recognition, multi-TCG search, and a professional CI/CD pipeline, delivered as the NSCC IT Web Programming diploma capstone.

Tools & Technologies
Next.js Supabase Stripe Upstash Redis Python YOLO Zod GitHub Actions Vercel PostgreSQL MFA / RBAC
WP
Production Plugin

Retreat Guru WordPress Plugin

Problem / Task

A client needed their Retreat Guru SaaS programs, lodging, and teacher profiles integrated into WordPress across 5 configurable view modes, replacing their dated existing plugin.

My Role & Contribution
  • Architected an MVC-inspired plugin, separating models (API/cache), controllers, custom REST endpoints, and Twig-rendered views.
  • Designed a caching layer using WordPress Transients with hourly WP-Cron background refresh, exponential-backoff retry, and a health-check that auto-reschedules missed cron events.
  • Built REST endpoints with nonce validation, role-based permission callbacks, and rate limiting (100 req/min); added iCal (.ics) export and URL rewrite rules for program detail pages.
  • Wrote ES6+ JavaScript across multiple modules: a custom calendar grid, live search with a debounced scoring algorithm, a filterable/sortable list view, and shared ARIA accessibility utilities.
Outcome / Result

Production plugin deployed on multiple websites, integrating the Retreat Guru API with no custom database tables, resilient caching with auto-recovery, and security hardening across all endpoints and templates.

Tools & Technologies
PHP JavaScript (ES6+) API WP-Cron Twig 3.x Composer REST API Rate Limiting MVC iCal / RFC 5545
IoT
Personal Project

Koji Fermentation Chamber

Problem / Task

Growing koji mold requires precise temperature and humidity control. I needed a way to monitor environmental conditions in a DIY fermentation chamber and log the data for review.

My Role & Contribution

Built the entire system: wired a Raspberry Pi to a temperature/humidity sensor, wrote Python scripts to poll and log readings to MariaDB, and created a local-network REST API with Express to expose the data.

Outcome / Result

Working IoT monitoring system on the local network. Learned the importance of verifying hardware specs after the original sensor failed due to excess condensation at 100% humidity.

Tools & Technologies
Python Raspberry Pi Express REST API MariaDB
Open Source Tool

WolfText

Problem / Task

Wolf RPG Editor games embed all dialogue and text directly in map files, making localization and bulk text edits difficult with no standard external tooling available.

My Role & Contribution

Built a Python CLI tool that extracts text from Wolf RPG Editor map files into a centralized JSON file, and reinserts translated or modified text back using configurable placeholders, with linebreak handling to match in-game textbox layout.

Outcome / Result

Released on GitHub with extraction, insertion, placeholder management, and improved linebreak accuracy. No external dependencies required beyond the Python standard library.

Tools & Technologies
Python CLI JSON Wolf RPG Editor

Education & Certifications

Academic background and professional certifications.

IT Web Programming Diploma

Sept 2024 – Apr 2026

Nova Scotia Community College (NSCC)

  • Built and migrated databases using MariaDB with SQL and MongoDB.
  • Developed web applications with vanilla JavaScript and modern frameworks.
  • Applied Agile/Scrum methodologies in team-based project work.
  • Final integrated project: full-stack TCG collection tracker with custom AI card recognition.

Google IT Support Professional Certificate

December 2022

Google / Coursera

  • Configured and supported IT infrastructure.
  • Troubleshot core service and support challenges with best-practice documentation.

Contact

Feel free to reach out for work, collaboration, or questions.