Projects

What I've Built

Backend services, full-stack web apps, and software designed to last.

Here's a look at what I've built so far, from scheduled Spring Boot services backed by PostgreSQL to object-oriented game engines and AI-integrated assistants.

01

Job Board Monitor

View on GitHub -->

A full-stack web application that automatically tracks and aggregates job postings from target companies. Polls the Greenhouse ATS API every hour, persists new postings to a PostgreSQL database, and displays them through a clean web interface, only surfacing roles that haven't been seen before.

  • >Built a full-stack job monitoring application in Java and Spring Boot that automatically aggregates live postings from target companies via the Greenhouse ATS API
  • >Implemented a scheduled polling system using Spring Scheduler that syncs new job postings hourly without duplicates, using external ID deduplication backed by PostgreSQL
  • >Designed a relational data model with Spring Data JPA/Hibernate and managed schema evolution using Flyway database migrations
  • >Containerized the development database using Docker for a reproducible local environment
  • >Rendered a dynamic web interface with Thymeleaf templating and responsive CSS

Tech Stack

JavaSpring Boot 3.5Spring Data JPASpring SchedulerPostgreSQLFlywayThymeleafMaven

02

Tarot Card REST API

View on GitHub -->

A RESTful Tarot card service built with Spring Boot that serves the full 78-card deck and draws single or multiple unique random cards, backed by PostgreSQL and documented with OpenAPI.

  • >Designed a layered Controller → Service → Repository architecture that separates HTTP handling, business logic, and data access for independent testability
  • >Built endpoints to retrieve the full deck and draw 1 or n random cards, shuffling the deck so every card in a draw is unique
  • >Validated draw requests and centralized error handling in a global exception handler, returning 400 Bad Request for invalid counts
  • >Seeded all 78 cards into PostgreSQL on startup from a JSON dataset, skipping the load when the data already exists
  • >Wrote unit tests with JUnit 5 and Mockito for draw logic and boundary conditions, plus MockMvc tests for HTTP responses and error handling

Tech Stack

Java 17Spring Boot 4.1Spring Data JPAHibernatePostgreSQLSpringdoc OpenAPIJUnit 5MockitoLombokMaven

03

Text-Based Dungeon Crawler

View on GitHub -->

A console-based dungeon crawler RPG built in Java with character creation, turn-based combat, a shop, and leveling, architected with Factory, Mediator, and Singleton design patterns across 15+ entity types and 2,500+ lines of code.

  • >Built a turn-based combat system where minor, major, and boss enemies spawn based on dungeon depth, with health and damage scaling as players descend
  • >Applied the Factory pattern to create weapons, armor across five equipment slots, and minor, major, and boss enemies
  • >Routed game events through a GameManager mediator to centralize communication between game components
  • >Implemented a Singleton dice class backed by SecureRandom to drive critical hits, misses, bonus chests, and status effects
  • >Designed RPG progression with XP-based leveling, stat point allocation across attack, defense, stamina, and speed, and a shop for potions, antidotes, and spell tomes
  • >Wrote a 12-test JUnit 4 suite covering factories, stats, inventory, enemies, and RNG, with Checkstyle and SpotBugs static analysis configured in the Gradle build

Tech Stack

JavaOOPDesign PatternsJUnit 4GradleCheckstyleSpotBugs

04

Adaptive Virtual Assistant

View on GitHub -->

A full-stack Flask web application built as a team project that uses Google's Gemini API to deliver personalized educational support, adapting answers to each student's age, academic level, learning style, and interests.

  • >Integrated Google's Gemini API to generate answers tailored to each learner's profile, including academic level, learning style, and personal interests
  • >Built a comprehension scoring service that evaluates user understanding and adjusts response-style weights to adapt future answers

Tech Stack

PythonFlaskFlask-LoginWTFormsJinja2Google Gemini APINLTKBootstrapBleachMarkdown

05

Personal Portfolio Website

View on GitHub -->

A website built using Next.js and Tailwind CSS to showcase my projects, skills, and experience, with a terminal-inspired design. (This website!)

  • >Implemented a responsive design using Tailwind CSS, ensuring optimal viewing across devices
  • >Optimized performance with statically prerendered pages, next/font for font loading, and client-side navigation with next/link
  • >Deployed the website on Vercel, enabling seamless updates and continuous deployment

Tech Stack

Next.jsReactTypeScriptTailwind CSS

Want to See More?

Check out my GitHub for additional projects and contributions, or reach out directly.