Projects
Homelab — Cloud-Inspired SRE/DevOps Platform
Homelab with 3-node Proxmox HA and 6-node Kubernetes HA clusters, GitOps workflows, IaC (Terraform, Ansible, Packer), CI/CD via self-hosted GitHub Actions, HashiCorp Vault, Prometheus/Grafana, and off-site DR backups.
This homelab is engineered for production-grade reliability in a small footprint, with an RTO of ≤ 3 minutes and an RPO of ~15 minutes. It consists of a Proxmox HA cluster and a highly available Kubernetes environment (kube-vip, MetalLB, Longhorn, and NGINX Ingress Controller). Infrastructure is defined entirely as code with Terraform, Ansible, and Packer templates, while GitOps workflows are driven by Argo CD and a self-hosted GitHub Actions runner that executes pipelines with built-in policy gates and security scans. Security and access are managed through HashiCorp Vault, Cloudflare Zero Trust, Nginx Proxy Manager, WireGuard, and segmented VLANs. Observability is covered by Prometheus, Grafana, Alertmanager, Beszel, Uptime Kuma, and Dozzle for fleet-wide logs. Applications and disaster recovery are orchestrated via Dokploy, with Proxmox and Kubernetes workloads replicated to a NAS and off-site cloud storage, while databases are backed up to Cloudflare R2. The entire environment is UPS-backed, with automated shutdown coordination to protect workloads and maintain consistency during power events. At present, the platform runs 11 GitOps stacks (28 containers) as part of a larger 29-stack fleet totaling 95 Docker containers.
Technologies: Proxmox, Kubernetes, Longhorn, MetalLB, Terraform, Ansible, Packer, GitOps, CI/CD, HashiCorp Vault, Docker, GitHub Actions
SourceHoundarr
Open-source, self-hosted companion for *arr apps that searches for missing library items in polite, rate-limited batches. Features a live dashboard, bcrypt auth, and CSRF protection.
Radarr, Sonarr, and the rest do a great job with new releases, but they don't go back and search for items already in your library that are missing or below your quality cutoff. Their built-in search fires everything at once, overwhelming indexer API limits. Houndarr fills that gap: configurable batch sizes, per-item cooldowns, hourly API caps, and download-queue backpressure gating keep searches slow and polite. It ships with a dark-themed web dashboard (FastAPI + HTMX + Tailwind CSS), a filterable log viewer with multi-format export, API keys encrypted at rest, bcrypt auth, and CSRF protection. Distributed as a Docker image and a Helm chart for Kubernetes. It reached 103+ GitHub stars and 2.6k+ Docker pulls in its first 48 hours.
Technologies: FastAPI, HTMX, Tailwind CSS, Docker, Helm
Live SourceFlaskKeyring
A full-stack, zero-knowledge password manager with client-side AES-GCM encryption and secure REST APIs for ultimate security.
FlaskKeyring is a comprehensive password management solution utilizing a zero-knowledge model with client-side AES-GCM encryption and PBKDF2-derived keys, ensuring sensitive information remains secure end-to-end. User encryption keys are derived from their master password, stored only on the client. Flask-Login powers user authentication, while Flask-Mail and a self-hosted Synology MailPlus Server support secure email validation and password recovery. The application leverages REST APIs, a responsive Bootstrap interface, and Jinja2 for dynamic templating. For deployment, it uses Heroku with PostgreSQL for production and SQLite for local testing. Key database elements include the master password hash, encrypted passwords, IV, and salt, all designed to protect user data with strong client-side encryption.
Technologies: Python, Flask, JavaScript, PostgreSQL, REST API, Web Cryptography API, Bootstrap, HTML, CSS, Jinja2, SQLAlchemy, Flask-Login, Flask-Mail, SQLite
Live SourceIndexNet Engine
A Java-based search engine simulation utilizing the PageRank algorithm and web crawling.
IndexNet Engine is a Java-based search engine simulator replicating web crawling and page ranking functionalities similar to Google's PageRank algorithm. This project demonstrates object-oriented programming and advanced algorithms, such as B-Trees for efficient data indexing and external sorting techniques for managing large datasets that exceed memory limits.
Technologies: Java, Algorithms, Data Structures, PageRank, Web Crawling
Live SourceBridgeChat
Semester-long software engineering class project. I pitched the idea and solo-developed the prototype: a real-time chat app with on-the-fly translation across languages. Voted best project of the semester by the class, winning both the mid-semester and final presentation votes.
BridgeChat is a comprehensive real-time chat application designed to facilitate seamless communication between users of different languages. It integrates automatic message translation based on each user's preferred language, ensuring a smooth conversation flow without language limitations. Built with Flutter for cross-platform support (web, mobile, and desktop) and Firebase for authentication, real-time messaging, and backend services, BridgeChat emphasizes privacy with username-based registration. The project also features robust CI/CD pipelines, extensive documentation covering system architecture, testing, and deployment, and is designed to scale for future enhancements.
Technologies: Flutter, Firebase, Dart, Cloud Functions, Real-Time Messaging, CI/CD
Live SourcePortfolio Website
A personal portfolio website showcasing projects, skills, and software engineering experience.
A Next.js-based portfolio website featuring responsive design, project showcases, an about page, resume, and a contact form. The website is powered by AOS for animations, TypeScript for functionality, Tailwind CSS for styling, and Headless UI for project page modals. It is self-hosted on Dokploy, utilizing modern build tools like PostCSS and pnpm for efficient development workflows.
Technologies: Next.js, TypeScript, Tailwind CSS, Dokploy, Formspree
Live SourceThe .dotfiles Project
Cross-platform Unix automation and environment setup mastery.
The .dotfiles repository is a cross-platform solution automating development environment setup on macOS, Arch Linux, WSL, and Debian-based systems. It includes a dynamic .zshrc and .zprofile that configure environments based on the OS and architecture of the device. The repository also features a powerful macOS bootstrap script for installing essential tools, managing Tmux sessions, configuring Neovim, handling Conda environments, and setting up shell plugins. This project ensures consistency and efficiency across platforms, from MacBooks to Raspberry Pis.
Technologies: Git, Bash, Zsh, Shell Scripting, macOS, Arch Linux, Debian Linux, WSL, Homebrew, Neovim, Miniforge, Tmux
SourceRaspberry Pi 5 Codepi Setup Guide
A comprehensive guide for setting up a Raspberry Pi 5 as a portable development environment.
This guide provides step-by-step instructions for configuring a Raspberry Pi 5 to work seamlessly with an iPad Pro via USB-C Thunderbolt 4 and USB Ethernet. It covers SSH setup with Blink Shell, remote access through RealVNC Viewer, and setting up Code-Server and Neovim for a portable development environment. This setup offers developers a stable, portable, and powerful platform that enhances productivity and flexibility.
Technologies: Raspberry Pi, Linux, Debian, SSH, VNC, Code-Server, Docker, Blink Shell
SourceMatrix Chain Multiplication Analysis
A Go and Python project analyzing computation cost reduction for matrix chain multiplication using dynamic programming.
This project evaluates computation-cost reduction strategies for matrix chain multiplication using dynamic programming and compares it to sequential left-to-right multiplication. The analysis is performed using sequences of matrix dimensions, generating detailed results and visualizations for empirical insights. The project is implemented in Go for computational efficiency and Python for data analysis and visualization.
Technologies: Go, Python, Dynamic Programming, Data Analysis, Visualization
SourceEmpirical Evaluation of Classic Sorting Algorithms
An empirical study of Quick Sort, Merge Sort, and Heap Sort with memory profiling.
This project benchmarks Quick Sort, Merge Sort, and Heap Sort algorithms, evaluating their performance across different dataset sizes (10,000 to 800,000 elements). The analysis includes comparisons, execution time, and memory usage, with results presented through detailed comparison tables and graphs. The study also compares algorithm performance on non-decreasing and non-increasing input orders, providing insights into real-world efficiency.
Technologies: Python, Sorting Algorithms, Matplotlib, NumPy, Pandas, Memory Profiling
SourceKruskal & Prim Implementation
A Python project implementing and comparing Kruskal's and Prim's algorithms for computing the Minimum Spanning Tree (MST) of a graph.
This project provides Python implementations of two classic graph algorithms—Kruskal's and Prim's—for finding the Minimum Spanning Tree (MST) in an undirected, weighted graph. It includes scripts that execute both algorithms on sample input graphs, along with a performance evaluation module that uses NetworkX to generate random graphs and matplotlib to visualize execution times across various graph sizes and densities. Detailed documentation, user manuals, and performance reports (in PDF and CSV formats) support a comprehensive understanding of the algorithms, their implementations, and their efficiency.
Technologies: Python, Graph Algorithms, Kruskal's Algorithm, Prim's Algorithm, NetworkX, Matplotlib, Pandas
SourceSpace Invaders Clone
An interactive Java game simulation of the classic Space Invaders, featuring real-time rendering and dynamic gameplay.
This Java Swing project recreates Space Invaders with modern enhancements, featuring real-time rendering, advanced collision detection, and comprehensive game state management. The game architecture uses object-oriented principles and efficient data structures to manage game elements. Randomized behaviors enhance replayability, while bounding box algorithms ensure accurate collision detection at high frame rates. Event-driven timers and state control overcome synchronization challenges between animations and game logic. The project showcases understanding of game loops, graphics manipulation, and memory optimization, delivering a nostalgic yet challenging experience.
Technologies: Java, Java Swing, Data Structures, Collision Detection, OOP, Game Development
Live SourceSnake Game in Java
A classic snake game implemented in Java using Java Swing and advanced data structures.
This classic Snake game is developed in Java using Java Swing for the graphical interface. The game leverages data structures such as arrays to track the snake's body parts and a deque (double-ended queue) to manage the direction of movement. Each move involves shifting elements in the array to simulate the snake's body following its head. Randomized algorithms are used to generate the position of the apple on the grid, while collision detection algorithms ensure the game ends when the snake collides with the walls or its own body. The game features score tracking, increasing difficulty as the snake grows, and smooth, responsive controls.
Technologies: Java, Java Swing, Data Structures, Collision Detection, OOP, Game Development
SourceGPA Calculator Webapp
A simple, elegant web app for calculating semester and cumulative GPA.
The GPA Calculator web app allows students to manage their academic performance easily. Users can add and remove courses, input grades and credit hours, and calculate both semester and cumulative GPAs. Developed without external UI frameworks, this project highlights expertise in raw JavaScript, HTML and CSS web technologies.
Technologies: JavaScript, HTML, CSS
Live SourcePyPassManager CLI
A CLI-based password manager built with Python and Fernet encryption.
PyPassManager is a command-line password manager that combines Python with Fernet encryption and the Colorama library. It offers secure 256-bit encryption, rapid key generation, and fast user authentication. The tool uses a file-based system for storing encrypted data and enhances security with Pwinput for password input.
Technologies: Python, Cryptography, Fernet, CLI, Encryption, Colorama
SourceMastermind Trilogy
A Java-based Mastermind game trilogy featuring AI, progressive difficulty, and dynamic guesses.
The Mastermind Trilogy reimagines the classic game of Mastermind through three projects. MastermindAI features an advanced AI opponent, Mastermind with Progressive Difficulty introduces scaling difficulty, and Mastermind with Dynamic Guess Generation adds unpredictability through strategy-based gameplay.
Technologies: Java, Algorithms, Game Development, Artificial Intelligence
SourceStockfolioHub
A real-time stock trading application built with Flask, Python, and the IEX API.
StockfolioHub is a dynamic full-stack web application that revolutionizes the way users interact with the stock market. Built with Flask and Python, and integrating real-time data from the IEX API, StockfolioHub offers a responsive and up-to-date trading experience.
Technologies: Python, Flask, IEX API, SQLite, Bootstrap, JavaScript, Heroku
Live SourcePlanetPath
Mapping sustainable routes with Streamlit and Geopy integration.
PlanetPath is an interactive Streamlit web app developed to promote environmental awareness. By using the Geopy library for precise distance calculations, the app helps users understand their carbon footprint and make eco-conscious transportation choices. This project won 2nd place at the UHack Hackathon.
Technologies: Python, Streamlit, Geopy
Live SourceWeather Alert Program
A Python-based weather alert system integrated with Twilio and OpenWeatherMap APIs.
This project demonstrates proficiency in Python and API integration by creating a Weather Alert Program. It provides real-time weather updates for any location using the OpenWeatherMap API and integrates with Twilio to send SMS alerts, keeping users informed with timely notifications.
Technologies: Python, Twilio API, OpenWeatherMap API, SMS Integration
SourceTask Automation Toolkit
A collection of useful Bash scripts for task automation.
This repository contains a set of Bash scripts designed to automate various tasks, improving efficiency and productivity. These scripts cover tasks like system maintenance, file management, and routine operation automation.
Technologies: Bash, Shell Scripting, Automation, Unix
SourceCustom Neovim Configuration
A streamlined and efficient Neovim setup tailored for productivity.
This Neovim configuration is built using Lua to provide a fast, clean, and flexible development environment. It integrates essential plugins, custom key mappings, and performance optimizations to enhance coding workflows, ideal for developers looking for a customizable Neovim setup.
Technologies: Neovim, Lua, Vimscript, Text Editors
SourceFlaskKeyring iOS App
A WebKit port for FlaskKeyring, adapted for iOS.
This project adapts the FlaskKeyring application for iOS devices using WebKit, providing a native app experience for managing passwords. It demonstrates my ability to transition web applications into mobile platforms using iOS development tools.
Technologies: iOS, WebKit, Swift, Xcode
SourceNumber Theory Program
A C++ console program for performing number theory operations.
This program is a console-based application developed in C++ to perform a variety of number theory operations. Users can calculate the greatest common divisor (GCD) using the Euclidean algorithm, find additive and multiplicative inverses in modular arithmetic, and verify if two numbers are inverses of each other. It features a user-friendly interactive menu system and demonstrates a clear understanding of fundamental number theory concepts and modular arithmetic.
Technologies: C++, Console Application, Number Theory, Modular Arithmetic
SourceMastermind with Dynamic Guess Generation
A Mastermind game with an adaptive computer algorithm for guess generation.
An extension of the classic Mastermind game, this project features an adaptive computer algorithm that refines its guesses based on the player's inputs. It demonstrates my ability to develop complex algorithms and adaptive game mechanics.
Technologies: Java, Algorithms, Game Development
SourcePython Learning Resources
A Streamlit-powered web app curating resources for Python learning.
This web app, built with Streamlit in Python, offers a curated collection of resources to support Python learners at various levels. It includes interactive sections for tutorials, exercises, and project ideas, all structured to enhance learning experiences directly within a streamlined web interface. Streamlit’s features make it easy for users to explore resources, making this app a valuable tool for beginners and intermediate Python enthusiasts.
Technologies: Python, Streamlit
Live SourceBoat Management System
A C project for managing boats and their storage details in a marina.
This C project serves as a comprehensive boat management system for marinas, allowing users to add, remove, and display boat information, process payments, and track monthly fees based on storage location. The project includes support for different storage types (slip, land, trailer, storage) with respective rates, dynamically expands memory for new entries, and validates user input. It also supports file-based data persistence, enabling data to be saved and loaded from CSV files, and displays boats in alphabetical order for easy inventory management. Key features include robust memory management, user input validation, and structured output of all data entries.
Technologies: C, File Handling, Dynamic Memory Allocation, Structs, Enums
SourceStream Editor (svi)
A C project that mimics the functionality of a stream editor, applying a list of edit commands to text files.
The Stream Editor (svi) is a C-based program that processes lines of text from standard input according to a set of commands provided in a file. This project supports a variety of edit operations, including inserting, appending, deleting, and substituting text with optional line range specifications. Commands are stored using efficient data structures, including enums and unions, and are executed with robust error handling. The program features a modular design with a Makefile for easy compilation and testing, ensuring maintainability and scalability. Key functionalities include handling complex edit operations with dynamic memory, user-friendly syntax for commands, and high-performance line processing.
Technologies: C, File Handling, Dynamic Memory Allocation, Structs, Enums, Makefile
SourceDynamic Structs
A C program to manage dynamically allocated structures with relational data.
This C program allows users to create and store information about people, including their names, ages, and best friends. The program dynamically allocates memory for each person, storing up to ten entries and allowing users to assign best friends within the list. It demonstrates dynamic memory allocation, struct manipulation, and relational data management through pointers, offering clear input validation and structured output for all entries.
Technologies: C, Dynamic Memory Allocation, Structs, Pointer Relationships
SourceSpecies Log
A C program for recording and categorizing animal species.
This C program allows users to log various animal species, including their name, size, and type (mammal, insect, bird, or fish). It dynamically expands memory as needed to accommodate new entries, enabling users to input multiple species until 'exit' is entered. The program includes robust input validation and displays all recorded species in a structured format, making it useful for demonstrating dynamic memory allocation, enums, and struct-based data storage in C.
Technologies: C, Dynamic Memory Allocation, Enums, Structs
SourceDynamic Matrices
A C program that dynamically allocates memory for matrices and performs matrix multiplication.
This program, written in C, demonstrates dynamic memory allocation for matrix creation and performs matrix multiplication. It includes input validation to ensure compatible dimensions before multiplication. The project focuses on basic memory handling and matrix manipulation in C, making it ideal for practicing dynamic allocation and understanding row-major matrix storage.
Technologies: C, Dynamic Memory Allocation, Algorithms, Linear Algebra, Matrices
SourceSort Pointers
A C program demonstrating sorting using pointers.
This C program demonstrates sorting with pointers through a basic implementation of bubble sort. It initializes an array of integers and an array of pointers to these integers, sorting both by using pointers for in-place comparisons and swaps. This program is helpful for understanding fundamental pointer usage and basic sorting logic.
Technologies: C, Pointers, Sorting Algorithms, Memory Management
SourceBitwise Operations
A C program demonstrating bitwise operations for specific checks.
This C program demonstrates the use of bitwise operations to perform basic checks, including determining if a number is even or odd, checking if a specific bit is set, and verifying if all bits in a given range are on. It provides a straightforward way to explore bitwise logic, helping users understand practical applications of bitwise operators in C.
Technologies: C, Bitwise Operations, Binary Arithmetic, Optimization
SourceTax Calculator
A C program to compute taxes based on income and deductions.
This C program allows users to input their income and deductions to calculate taxable income and the resulting tax owed. The program assigns a tax group based on predefined income brackets and applies appropriate tax rates, with a maximum tax cap. It demonstrates conditional statements, user input handling, and arithmetic operations in C.
Technologies: C, Math
SourceOxygen Pressure Calculator
A C program for calculating oxygen pressure at different depths underwater.
This C program calculates the partial pressure of oxygen (O2) based on depth in feet and the percentage of oxygen in the gas mix. It computes the ambient pressure at a given depth and the corresponding O2 pressure, assigning a pressure group and checking if it exceeds maximum and contingency safety limits. This project illustrates pressure calculation and input validation in C.
Technologies: C, Physics, Math
SourceKangaroo Roadkill Probability Calculator
A C program to estimate the expected number of kangaroo roadkills based on environmental and road factors.
This C program estimates the expected number of kangaroo roadkills within a defined region based on user input for region size, road length, and kangaroo population. It calculates kangaroo density from the region’s area, determines road surface area using an average road width, and applies a probability constant to estimate potential roadkill occurrences. This program emphasizes user input validation and provides clear output, helping users understand how environmental factors influence roadkill probability.
Technologies: C, Console Application, Math
SourceProjectile Motion Calculator
A Java application for calculating projectile motion parameters.
This Java application calculates various parameters of projectile motion, such as range, maximum height, and time of flight, based on user inputs. It applies physics formulas to compute results, providing a practical application of mathematical and programming skills.
Technologies: Java, Physics, Math
SourcePyFun
A collection of fun Python programs including a lottery simulator, Pig Latin translator, and Rock-Paper-Scissors game.
PyFun is a set of fun Python programs, including a lottery simulator, a Pig Latin translator, and a Rock-Paper-Scissors game. It showcases fundamental Python programming concepts and user interaction.
Technologies: Python, Console Application, Game Development
SourceString Edit
A Java program for performing various string manipulation tasks.
This Java program performs string manipulation tasks such as reversing strings, changing case, and finding substrings. It showcases proficiency in string handling and manipulation using Java.
Technologies: Java, String Manipulation
SourceVolume Comparison
A Java tool for calculating and comparing the volumes of 3D shapes.
This Java application calculates and compares the volumes of various 3D shapes, such as spheres, cylinders, and cubes. Users can input dimensions to compute results, demonstrating practical application of geometry and programming skills.
Technologies: Java, Math
SourceGravity Calculator
A Java program for calculating speed and distance of falling objects under gravity.
This Java program calculates the speed and distance of an object in free fall under gravity, applying physics formulas based on time and initial conditions. It showcases practical applications of programming and physics.
Technologies: Java, Physics, Math
SourceLinear Equation Calculator
A Java program for solving linear equations in one variable.
This Java application solves linear equations in one variable. Users can input coefficients and constants, and the program computes the solution, providing a simple tool for solving mathematical problems.
Technologies: Java, Math
SourceGPA Calculator (CLI)
A Node.js command-line tool for calculating semester and overall GPA.
This GPA Calculator is a command-line interface (CLI) tool developed in Node.js that allows users to calculate both semester and overall GPA. The tool prompts users for course names, grades, and credit hours, and it handles the conversion of letter grades to GPA points using a predefined scale. It uses JavaScript's Map for grade conversion and provides a clear user flow with validation to ensure correct input for both semester and cumulative GPA calculations. Challenges included ensuring robust input validation and handling edge cases such as GPA and credit input formats.
Technologies: JavaScript, Node.js, Console Application
SourceMastermind with Progressive Difficulty
A Java-based Mastermind game with progressively increasing difficulty.
This implementation of the Mastermind game in Java features progressive difficulty levels. As the player advances, the game becomes more challenging, testing logic and deduction skills. The project highlights the use of algorithms for game progression.
Technologies: Java, Game Development, Algorithms
SourceBatch Executor
A C program that executes commands from a file in batch mode.
Batch Executor is a C program designed to execute a series of shell commands specified in a file.
The program reads each command, spawns a child process using `fork()`, and executes the command
in the background with `execvp()`. It ensures that all commands are executed concurrently and waits
for all processes to complete before terminating. This project demonstrates a strong understanding
of process management, inter-process communication, and system-level programming concepts in Unix/Linux.
Technologies: C, Process Management, Fork, Execvp, Waitpid, Unix/Linux
SourceQualities Parser
A C program to extract, process, and save user-described qualities.
Qualities Parser is a C program that collects user input to extract self-described qualities
starting with the phrase "I am". It writes these qualities to a file, concatenates them into
a single string, displays the results, and deletes the file after confirmation. The program
uses dynamic string manipulation and file handling to efficiently process the data, ensuring
robustness through input validation and error handling. It also demonstrates mastery of basic
string and file operations in C.
Technologies: C, File Handling, String Manipulation, Memory Management
SourceSentence Analyzer
A C program for sentence and word-level analysis using regex.
Sentence Analyzer is a robust C program that performs sentence-level analysis on user input.
It splits text into sentences based on punctuation (.!?), checks each sentence against a user-provided
regular expression to determine matches, and counts the number of words in each sentence. This program
demonstrates the use of advanced C features, including regex handling, tokenization with strtok_r,
and memory-safe string manipulation, providing an efficient and interactive tool for text analysis.
Technologies: C, Regex, Text Analysis, Tokenization
SourceBakery Shop Simulator
A Java console application simulating a bakery's order system.
The Bakery Shop Simulator is a simple Java console-based application where users can order pastries, coffees, sandwiches, and loaves of bread. The program dynamically calculates the subtotal, tax, and total cost based on user input. It demonstrates basic input handling and arithmetic operations, providing a hands-on example of a small business ordering system.
Technologies: Java, Console Application
Source