GitHub logo LinkedIn logo

Word Wheel Solver Repository

I developed a Python application to solve word wheel puzzles using the EWOL dictionary to identify all valid words. The application can be used via a command-line interface or accessed through a Flask-based API, which is integrated into a simple web interface further down this page.

A GitHub Actions workflow automatically runs unit tests and enforces PEP8 formatting before changes are pushed to the repository. Upon successful unit testing, a second workflow deploys the app locally to my Raspberry Pi.

API requests are routed through an Nginx reverse proxy.

Tech Stack

Try it out

Task Manager Repository

I developed a Java application to manage and schedule email reminders for day-to-day tasks and events, with all task data persisted to a CSV file on the host system-deployed on my Ubuntu Raspberry Pi 5. The app provides a CLI interface for adding, viewing, and deleting events, as well as configuring reminder times.

A separate daemon process continuously monitors the CSV file, automatically dispatching email notifications as tasks are due and performing daily cleanup of expired events. The entire solution is Dockerized for portability and automation.

I implemented a GitHub Actions CI/CD pipeline to build, test, and publish multi-architecture Docker images, with deployment orchestrated to my Raspberry Pi via a self-hosted runner upon each push to the repository.

Tech Stack

CLI Snapshot

Task Manager Interface

My Website Repository

This website was built using HTML, CSS, and JavaScript. It is hosted from home on my Ubuntu Raspberry Pi using Nginx. A self-hosted GitHub Actions runner on the Pi handles deployment locally on a Git commit, and the site is served securely over HTTPS. Dynamic DNS is implemented with a scheduled script that updates my Cloudflare DNS records every 10 minutes, ensuring the domain always resolves to my current public IP.

Tech Stack

Ten10 Jenkins Project Repository

For my final project in Ten10's Platform Engineering stream, I deployed the frontend and backend of a basic website to an AWS ECS cluster using Fargate. The site was hosted across two Availability Zones, with an Application Load Balancer distributing traffic.

The backend was built using a multi-stage Docker build, and all necessary AWS infrastructure was provisioned with Terraform. I implemented a Jenkins pipeline to automate the entire deployment process, triggered by Git commits.

Tech Stack

Infrastructure Diagram

Diagram AWS infrastructure

Rock Paper Scissors Repository

One of my assessments during Ten10's Core Training was to develop a Rock Paper Scissors game in Java in 8 hours. The game features a simple CLI interface and allows users to play a single round, or best of three, against the computer, which randomly selects its moves.

Tech Stack

Gameplay Screenshot

Rock Paper Scissors Gameplay

Project Onyx ETL Repository

For my final project of Northcoders' data engineering bootcamp, my small team created an ETL pipeline that extracted data from a Postgres OLTP database, stored it in AWS S3, processed it via Lambda functions, and loaded it into an OLAP Postgres DB. We monitored with Cloudwatch, used AWS Secrets Manager for credentials, and deployed with Terraform. Code was tested using Pytest via a GitHub Actions pipeline.

Tech Stack

Infrastructure Diagram

Diagram of ETL pipeline