[ Portfolio ]

Work Projects

Virginia Spaceport Authority

During the Summer of 2025 I interned at the Virginia Spaceport Authority (VSA) as an IT/IS Intern. I worked primarily with the system administrator (Brian Bishop) and network engineer (John Phillips). At the beginning of my internship the VSA began to reintroduce Linux into their tech environment, so I quickly jumped on the opportunity and put my skills to use.

RHEL Integration

The VSA was beginning to reintroduce Red Hat Enterprise Linux into their tech stack, being a fan of Linux I quickly jumped to the occasion.

I wrote a set of tools to expedite the set up process for RHEL, and some others to harden the system so we meet the higher security standards.

  • VM_SETUP- Tool that ran all the other setup scripts in the intended order, alongside other setups like adding a MOTD and installing basic packages for ease-of-use.
  • OVAL_SCAN - Automated oval scanner. Reaches out to update to the most recent OVAL evaluations and checks the system against it. Reports back any found vulnerabilities.
  • SSH_AUDIT - Script for audting ssh logs to retrieve pertinent information, login IPS, Resolved names, login count, timestamps, etc.
  • ARCTIC_WOLF - Enrolls and does setup for adding our machines to a SOC service.
  • REPO_ACCESS - Runs the tools necessary to expand the package repositories for RHEL systems.

No Public Repository, Sorry

Tools Used: Bash, Red Hat Enterprise Linux, Rocky Linux

CardDAV Server

I was tasked with deploying a list of all VSA employees' contact information on everyone's phones within the company.

I was provided with a CSV file of all the employees contact information and a Red Hat Enterprise Linux VM from my mentor Brian. From here it was up to me.

I utilized three open source projects to accomplish this: PostgreSQL, Radicale, and NGINX. NGINX was a reverse proxy for routing and securing traffic, PostgreSQL held the contact information and logical groupings, and Radicale served the vCards.

I combined all of these by building a suite of Python tools for generating vCards, managing the database, and updating the Radicale server.

Using Jamf we deployed a contacts payload that reached out to the server, which would route the traffic as it came in, generate vCards off the database, then return the contacts list to everyone's devices.

I also created an interal web interface using Flask for easily accessing and modifying the database, individual contacts, logical groupings, and syncing operations.

Notably the service is completely free to run and everything is on-prem, a large boon for the organization as opposed to enterprise solutions.

No Public Repository, Sorry

Tools Used: Python, Radicale, PostgreSQL, Psycopg2, Jamf, Flask, Gunicorn, Red Hat Enterprise Linux, Hyper-V, NGINX, Internal CA SSL

CACTI Server

Cacti is a network fault monitoring and data visualization tool.

Using a Rocky Linux VM in our cluster, I set up and installed Cacti so that we could monitor the devices on our network using SNMP.

Using this tool, we were able to track and monitor our core switches down to individual interfaces for anomaly detection and to monitor our UPS voltage and battery capacities.

This entire setup is also completely free to run and everything is stored on-prem.

No Public Repository, Sorry

Tools Used: MySQL, MariaDB, Php, RRDtool, Apache, Cacti, SNMP, Rocky Linux

I did a presentation to our company which can be found here: Capstone Presentation

Personal Projects

CLI-GPT

CLI-GPT is a command line interface frontend for interacting with OpenAI's API.

I built this program so I could use OpenAI calls on my headless FreeBSD system. The project began as a way of asking OpenAI questions from a terminal but I began to add on more functionalities to make it a more useful system. It allows total customization of all of the models parameters, the ability to save and load profile configurations, and the ability to add files and images to uploads.

GitHub

Tools Used: Python, OpenAI API, Rich Console, prompt-toolkit

The Perpetual Music Machine

An all-in-one software for hosting, managing, and broadcasting your own online radio.

A work in progress. I started this project in order to make it easier to host and manage my own radio broadcasts. Ideally the software will be able to deploy and/or configure both the Icecast server and Liquidsoap generation while also maintaining playlist sync to outside sources for easy setlist management.

GitHub

Tools Used: Python, Icecast, Liquidsoap, Spotipy, SpotDL

music.jfelix.space

Visit it here.

An audiovisualized interface for tuning in to various college radio stations.

I was very proud of my UI made for radio.jfelix.space and wanted a way to use it publicly in a copyright-safe manner. 2025-10-03 is national college radio day and college radios were a perfect choice for audio stream sources!

GitHub coming soon

Tools Used: Butterchurn, JS, CSS

jfelix.space

This website.

Running of an Oracle Cloud VM on Rocky 9 this is a simple static html website. However the domain contains a lot more than meets the eye. I self-host many services from my own hardware at my house including a Matrix instance, a Navidrome instance, and an Icecast server. These are subdomained and securely routed using Cloudflares tunneling system so as to secure my home network.

  • Matrix/Element: An E2E encrypted federated messaging instance. Used for secure file sharing and contacting among me and my friends.

  • Music/Radio: An audiovisualized frontend for college radio broadcasts. When I was a kid I adored Winamp's Milkdrop visualizer, and I've always loved radio. Using Icecast as a broadcast server, Liquidsoap as a stream generator, and Navidrome for hosting the music, I created a set of online radio stations broadcasting different genres. I then took a WebGL Milkdrop project called "Butterchurn" and implemented onto the website, hooking it up to your live audio stream to provide visualizes while listening. I also moved music.jfelix.space to be another instance of this UI for accessing public college radio broadcasts.

GitHub

Tools Used: Rocky Linux, Oracle Cloud, NGINX, Cloudflare Tunneling, JavaScript, Node, npm, Butterchurn, IceCast, Liquidsoap, Matrix-Synapse, PostgreSQL, Docker, Docker Compose

Academic Projects

OpenValve - Databases

OpenValve is a data collection project built for a database class.

The goal was to create a system for generating game recommendations based on overlapping game tags from a user's library.

Using a combination of SteamWorks API calls and manual webscraping we collected tens of thousands of records within a relational database, using relation tables to connect Users, Games, and Tags.

We created a webapp frontend for manually scraping games and user accounts for tag data, and using this created an interface for selecting games and finding similar ones based on overlapping tag counts.

I've exported a semi-sanitized version of the project and posted it onto GitHub. It's lacking a couple of functionalities such as the phpMyAdmin database connection.

GitHub

Tools Used: SQL, php, SteamWorks API, Python, BS4, Flask, SQLAlchemy

RamRanch - VCU Hackathon

2nd Place Winner

A habit tracking gamification project built during a 5-hour mini-hackathon.

The theme of the mini-hackathon was "Hack4Good".

A team of me and 3 others designed and developed a prototype for a gamified habit-tracking app, where fulfilling your healthy habits would benefit your ranch's rams.

We developed a prototype of the ranch system with several rams, where their needs are to be tied to your general upkeep. For example; you would set a water drinking goal, and as you complete it your ranch's daily water supply refills.

We used tkinter to develop the app prototype, and had in place API calls to other apps in order to auto-update your ranch's status.

GitHub

Tools Used: Python, Tkinter, Various APIs

Prescription Effect Logging Software - Software Engineering

Working with a team of 7 to develop software related to the healthcare field.

We designed a logging application that takes daily inputs from a user based on their perceived effects of a prescriptions, logs them, then allows the user to visualize the data.

App was developed in TypeScript using Deno as a runtime environment and DenoFresh to do the frontend work. On the backend we had a SpringBoot REST API running for data storage and other functions.

Using GraphJS and an interactive calendar a user could select a range (or set) of dates and get a visualization of inputted information across the timeframe.

GitHub

Tools Used: JavaScript, TypeScript, Deno, React, GraphJS, SpringBoot