Some projects chase trends. QuestKeeper sharpened its sword, packed its rations, and walked the road the long way—by design.
Built in 2018 as a full-stack PHP and MySQL web application, QuestKeeper is a Dungeons & Dragons 5e character tracker that embraces traditional web fundamentals. No modern frameworks. No scaffolding magic. Just sessions, SQL, structured includes, and deliberate logic layered one piece at a time. It’s a utility app first, a portfolio statement second—and that order matters.
For employers, developers, and recruiters, QuestKeeper demonstrates something increasingly rare: someone who understands how the web actually works.
QuestKeeper allows users to register, authenticate, and manage D&D 5e characters inside a protected member area. Each character sheet stores ability scores, skills, saving throws, proficiencies, and level-based statistics, all persisted in a relational database and dynamically rendered in the browser.
This is not a static demo or mockup. It is a functional, stateful application with real users, real data, and real rules.
The project follows a clean, conventional PHP structure that prioritizes clarity and maintainability:
The layout reflects a disciplined approach to server-side development—one that scales mentally before it scales technically.
QuestKeeper implements a complete authentication flow:
Passwords are hashed using MD5, which is openly documented in the README as a legacy choice reflective of the project’s era. Importantly, the documentation also explains how modern hashing (password_hash) would replace it today. That transparency signals awareness, not oversight.
At its core, QuestKeeper is a thoughtfully constructed CRUD application:
The schema supports the layered complexity of a D&D character sheet without becoming brittle or overengineered—a balance that takes experience to strike.
D&D character sheets are rule engines in disguise, and QuestKeeper treats them accordingly.
These calculations are handled in dedicated PHP includes, keeping business logic isolated, readable, and testable. The code reflects a real understanding of the D&D 5e ruleset—not just the math, but the intent behind it.
QuestKeeper enhances usability without abandoning server-rendered principles:
This hybrid approach delivers responsiveness while preserving clarity—proof that interactivity doesn’t require a JavaScript framework to be effective.
The UI favors function over flash:
The result is an interface that feels like a tool, not a toy—exactly what a character manager should be.
Several quiet details elevate the project:
These choices demonstrate professional restraint and an understanding of real-world development constraints.
QuestKeeper doesn’t rely on buzzwords to impress. It demonstrates foundational competence where it counts:
For recruiters and employers, this project shows someone who can build systems—not just assemble interfaces.
For developers, it’s a reminder that strong fundamentals age better than trends.
QuestKeeper is classic for a reason.
Every stat is earned. Every rule is respected.
And nothing here rolled with advantage it didn’t deserve.