Kevin Hu

Summary of Projects

Here are the collection of various hosted on GitHub. These projects showcase my skills in scripting, self-hosting, content-management and more. Feel free to explore and check out the repositories for more details.


HTPC Troubleshooter

November 2024 - May 2025

Fullstack Python FastAPI Application

I have a dedicated post about this project.

"Instead of spending at most 5 minutes for technical support, I went down the dark side and built a fullstack app, it only took me couple months… while learning new frameworks and technologies.".

HTPC Troubleshooter is a multilingual web application designed to address issues with our home theater setup. It's built using Python FastAPI, HTMX, Jinja2 and Hugo, and it integrates with external services such as Jellyfin, Home Assistant, ffmpeg and onkyo-eiscp. Demonstration video and detailed information is found on the dedicated post.

There are 2 Github repositories for this project, one for the main application and the other for documentation and static site. You can also review the static documentation site without FastAPI at https://htpc-troubleshooter-support.pages.dev.


BCIT Times

April 2025 - May 2025

Full-stack NodeJS News Publishing Application

BCIT Times is a new publishing platform which is built using express.js and MySQL/Prisma for the backend and React/Next.js for the frontend. It consists of 3 types of users: Admin, Editor and Reader. It features role-based access control, allowing admins to manage users and posts, editors to create and edit posts, while only allowing readers to view and comment on posts.

The application is dynamic and responsive, with a modern design. It allows all type of users to easily navigate and interact with the content. The admin dashboard provides a comprehensive overview of the platform, including user management and post approvals. Editors have access to a friendly interface for creating posts with rich media support, while readers can enjoy a seamless reading experience with the ability to comment on posts.

This was a group project for Agile Course at BCIT, I was the frontend developer and worked closely with the backend team and product owner using agile methodology. I was responsible for implementing the user interface, creating React/Next components, and ensuring a smooth user experience. I have learned a lot about React, NodeJS and agile development practices through this project.

Out of 25 groups that participated in this project, BCIT Times was selected as one of the top 3 projects by the Expo attendees and instructors 🙌.


Personal Notes and Documentation

Ongoing

Content Management/Static Site Generator

I use Obsidian for note-taking, including homelab documentation. Previously, I used Bookstack, but switched to Obsidian for better efficiency. I migrated my notes using Python scripts and configured mkdocs to host them. To publish all my notes publicly with a nice design, I also use Quartz.

In my documentation site, you can find my homelab documentation, which includes all the hardware and software I use in my homelab. The rest of my Obsidian notes include my study notes and project notes related to my programming and selfhosting journey.

My documentation site https://vttc08.github.io/infra-docs
My Obsidian Notes https://vttc08.github.io/obsidian-notes


Movie Renamer

Ongoing

Python/Bash Utility Script

To organize my movies and add Chinese subtitles for my parents, I wrote Python scripts to rename subtitle files according to specific rules. I manage my movies in Webtop, an isolated environment. To avoid installing many dependencies, I also use bash scripts for file operations and to call the Oliver Tin API or using an interactive SSH shell. These scripts evolve over time to add support for multiple disks and features like subtitle extraction, UTF fix, and ad removal.


Customized Docker Container for GUI Apps

Ongoing

Dockerfile/Bash

I use Docker extensively to deploy apps on my server. Sometime I need to run GUI apps, and others have not built them yet. I created a Dockerfile to build a custom Docker image based on jlesage's base image. I also wrote bash scripts to initialize the container and manage the app's configuration along with Github Actions to automate the build process.


Fireshare Import

Aug 2024

Powershell Utility Script

Fireshare is an app people can host their gaming clips and offers easy embed to social media platforms. However, the import features are limited. I wrote a Powershell script that can be run in a right click context menu to import clips from Fireshare to my server. This allows me to easily share any clips I recorded and have a link to share with friends.


SCI 201 - Effect of CPU C-States on Idle Power

May 2024

Statistics Research Project

CPU C-states are states which a CPU can enter when its idling and the correct settings can reduce overall server's power consumption. I was interested in this subject to save power for my home server, so I took the opporunity in SCI 201, an university-level research course to perform the experiment to find out if the idle power consumption between 2 CPU C-states. I used a power meter, Home Assistant and InfluxDB for data collection and used data science Python tools pandas and matplot to summarize the data and at the end, written a formal report and a presentation.


ProPresenter Remote Control

April 2024

Python Flask Webapp

Our church uses a locked down Mac Mini and we are limited to only using ProPresenter with limited configuration. The presenter need to control the slides. We've used wireless remotes in the past but many of these are unreliable due to range. ProPresenter does offer local remote control, but it's lacks some features and due to the locked down internet, we cannot use it. I created a basic Flask app that can preview, switch slides and control livestreaming; it does not have range limitations and it's stable. I've also used public-key based SSH tunneling to a public VPS to overcome the locked-down network and lack of admin limitation on the Mac Mini.