adrianvella.com

portfolio · amber · auto · 13ac0d05

~/projects
Assisted by AI

“Assisted by AI” indicates that AI tools contributed to the development process. This may include code generation, documentation, or other aspects of the project. The extent of AI assistance varies by project. These projects helped me familiarize myself with AI tools and their capabilities, but the final implementation and decision-making were my own.

Liftino

This project is the software component of a hydraulic car lift built for a family member's garage, controlled by an Arduino and multiple relays.

Although helping to build this car lift was not the most software-intensive or complicated project, I had the opportunity to work with a team where each person handled the part of the project they were most experienced with.

The team was made up of a metalworker, a hydraulic specialist, an electrical engineer and myself. The system uses an Arduino to control the hydraulic lift and a relay to activate it. The system is operated through a control panel, with safety being a priority.

While working on this project, I had to learn how to diagnose and troubleshoot electrical issues such as noise and interference.

CC++SolderingPatience

Trip Planner

A single-page application with no backend at all. NGINX serves the static files, while WebDAV is used to store the data. The app also integrates with OpenStreetMap, Unsplash and Docmost to publish the planned trip. No credentials are exposed to the client, and all API calls are proxied through NGINX.

To facilitate planning, the app includes AI-assisted features that generate prompts anyone can use to create a trip itinerary or update a specific section or day of the trip.

ReactNGINXWebDAV

Home Lab

Triggered by the rise in subscription costs and the desire to have more control over my data, I started building a homelab to self-host services and experiment with new technologies.

The homelab is built on Proxmox and hosts multiple VMs and LXCs running various services such as Home Assistant, AdGuard Home, NGINX, Jellyfin and more. The homelab is fully managed and documented through Ansible. Since I started hosting a media server for family photos and videos, I have also had the opportunity to experiment with ZFS and GPU transcoding. I use Proxmox's built-in backup and replication features as part of a 3-2-1 backup strategy.

All services are monitored, with alerting set up through Prometheus and Grafana. Access is secured through Cloudflare Zero Trust and Tailscale.

ProxmoxZFSAnsibleDockerCloudflareGrafanaPrometheusTailscale

Files

Hosting and maintaining a homelab is fun and all, but the wife-approval factor isn't something to write home about, given the loud fan noise and high electricity bills. When one of the selling points was that we were going to bid adieu to all subscriptions, I had to build something to replace the almighty Google Drive + Google Photos combo without losing functionality or usability.

Forked from filebrowser and heavily modified to suit my needs. The Vue.js frontend was completely rewritten to be more user-friendly and support a better mobile experience, improved PDF handling with note-taking features, live Markdown editing with Mermaid diagram support, and album and gallery features with memories and tagging. The Go backend was modified to support background tasks, more file types (including RAW images), video thumbnail generation, EXIF metadata extraction (including GPS locations) and more.

Vue.jsGoDocker

Ready. Type help or choose an item. · theme amber · appearance auto

enter