Repository navigation
Expand file tree
/
Copy pathprojects.html
More file actions
228 lines (216 loc) · 15.7 KB
/
Copy pathprojects.html
File metadata and controls
228 lines (216 loc) · 15.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Isherveer Bhullar | Projects</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="style.css?v=2">
<script>try{if(localStorage.getItem('theme')!=='dark')document.documentElement.classList.add('light');}catch(e){}</script>
</head>
<body>
<div class="blob blob1"></div>
<div class="blob blob2"></div>
<div class="blob blob3"></div>
<div class="blob blob4"></div>
<div class="grain"></div>
<div class="topbar glass">
<div class="brand">
<div class="ring"><img src="profile.jpg" alt="Isherveer Bhullar" onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';"><b style="display:none;">IB</b></div>
<div>
<div class="name">Isherveer Bhullar</div>
<div class="rec"><span class="dot"></span>REC · PORTFOLIO</div>
</div>
</div>
<div class="nav-pill" id="tabs">
<a class="nav-btn" href="index.html">About</a>
<a class="nav-btn" href="resume.html">Resume</a>
<a class="nav-btn" href="videos.html">Videos</a>
<a class="nav-btn active" href="projects.html">Projects</a>
<a class="nav-btn" href="credentials.html">Credentials</a>
<a class="nav-btn" href="contact.html">Contact</a>
</div>
<button class="icon-btn" id="themeToggle" onclick="toggleTheme()">🌙</button>
</div>
<div class="layout">
<!-- SIDEBAR -->
<aside class="sidebar glass">
<div class="avatar-wrap"><div class="avatar"><img src="profile.jpg" alt="Isherveer Bhullar" onerror="this.style.display='none'; this.nextElementSibling.style.display='flex';"><b style="display:none;">IB</b></div></div>
<h1>Isherveer Bhullar</h1>
<span class="role-chip">CS STUDENT · DRONE PILOT · EDITOR</span>
<div class="status"><span class="dot"></span> Open to summer internships</div>
<div class="info"><div class="info-label">Email</div><div class="info-value">isherveer@gmail.com</div></div>
<div class="info"><div class="info-label">Location</div><div class="info-value">Rotorua, Bay of Plenty, NZ</div></div>
<hr class="sep">
<div class="socials">
<a class="social-btn" href="https://github.com/codemastervy" target="_blank" rel="noopener">GitHub</a>
<a class="social-btn" href="https://www.linkedin.com/in/isherveer-bhullar-572016202/" target="_blank" rel="noopener">LinkedIn</a>
</div>
<a class="cta" href="mailto:isherveer@gmail.com">Get in touch →</a>
<div class="clock" id="clock">--:--:--</div>
</aside>
<!-- MAIN -->
<main>
<section class="panel active" id="projects">
<div class="card glass">
<span class="eyebrow">✦ PROJECTS</span>
<h2 class="headline">Projects and ongoing work.</h2>
<p class="lede">Shipped work, infrastructure I run day to day, and a leadership role.</p>
<div class="btn-row" style="margin-bottom:6px;">
<a class="btn-s" href="https://github.com/codemastervy" target="_blank" rel="noopener">View all repos on GitHub →</a>
</div>
<div class="filter-row">
<button class="filter-btn active" data-filter="all">Everything <span class="filter-count">15</span></button>
<button class="filter-btn" data-filter="app-dev">App dev <span class="filter-count">4</span></button>
<button class="filter-btn" data-filter="systems">Systems <span class="filter-count">8</span></button>
<button class="filter-btn" data-filter="media">Media <span class="filter-count">2</span></button>
<button class="filter-btn" data-filter="leadership">Leadership <span class="filter-count">1</span></button>
</div>
<div class="project-grid">
<div class="project-card" data-category="systems">
<div class="project-thumb"><img src="assets/thumbs/liquid-os.png" alt="The Liquid OS desktop, running in QEMU" loading="lazy"></div>
<h4>Liquid OS</h4>
<div class="project-date">Sep 2026 to Present</div>
<p>A bootable, installable Ubuntu 24.04 respin with a glassmorphism GNOME desktop, built end to end by a GitHub Actions workflow using live-build. The interesting part was the debugging: a one-character typo in casper.conf that dropped the live session into a BusyBox shell, a GNOME extension enabled with none of its code installed, and a "broken" image that turned out to be a VM starved of RAM. Released as a verified 2.4 GB ISO.</p>
<div class="chip-row"><span class="chip">Linux Distro</span><span class="chip">Live Build</span><span class="chip">GitHub Actions</span></div>
<a class="repo-link" href="https://github.com/codemastervy/liquid-os" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="app-dev">
<div class="project-thumb project-thumb--icon"><img src="assets/thumbs/simple-smb-file-browser.png" alt="Simple SMB File Browser app icon" loading="lazy"></div>
<h4>Simple SMB File Browser</h4>
<div class="project-date">Aug 2026 to Present</div>
<p>A multiplatform SwiftUI app for browsing SMB2/3 network shares on iPhone, iPad, and Mac. It supports upload, download, rename, move, batch operations, and dual-pane browsing, and is built on AMSMB2.</p>
<div class="chip-row"><span class="chip">SwiftUI</span><span class="chip">iOS & macOS</span><span class="chip">Networking</span></div>
<a class="repo-link" href="https://github.com/codemastervy/simple-smb-file-browser" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="app-dev">
<div class="project-thumb"><img src="assets/thumbs/smb-web-client.png" alt="The SMB Web Client browsing a share" loading="lazy"></div>
<h4>SMB Web Client</h4>
<div class="project-date">Aug 2026 to Present</div>
<p>A self-hosted web client for SMB shares, in Docker: the same browser and file-browsing experience as the native iOS/macOS app, but from any phone or laptop with no app install. Client only, it connects out to shares and never hosts any of its own.</p>
<div class="chip-row"><span class="chip">Docker</span><span class="chip">Python</span><span class="chip">Self-hosted</span></div>
<a class="repo-link" href="https://github.com/codemastervy/smb-web-client" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="systems">
<div class="project-thumb"><img src="assets/thumbs/nas-dashboard.png" alt="The NAS Dashboard host overview" loading="lazy"></div>
<h4>NAS Dashboard</h4>
<div class="project-date">Aug 2026 to Present</div>
<p>A self-hosted NAS dashboard for Docker: file browser, on-demand SMB sharing, and host system monitoring in one container. Built as a CasaOS replacement for my home server, with nothing shared until you explicitly turn it on.</p>
<div class="chip-row"><span class="chip">Docker</span><span class="chip">Python</span><span class="chip">Self-hosted</span></div>
<a class="repo-link" href="https://github.com/codemastervy/nas-dashboard" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="app-dev">
<div class="project-thumb"><img src="assets/thumbs/floppy-run.png" alt="Floppy Run promo artwork" loading="lazy"></div>
<h4>Floppy Run</h4>
<div class="project-date">Aug 2026 to Present</div>
<p>A 2D platformer about a smiling floppy disk. Made in 2023 for a Level 3 game development course. It is not good.</p>
<div class="chip-row"><span class="chip">C#</span></div>
<a class="repo-link" href="https://github.com/codemastervy/floppy-run" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="systems">
<div class="project-thumb project-thumb--v1"></div>
<h4>Home Server: Self-Hosted Infrastructure</h4>
<div class="project-date">Self-hosted, ongoing</div>
<p>Ubuntu Server running eleven Docker containers in daily use by my household: photo backup, network-wide DNS filtering, Time Machine backups, and home automation. I root-caused an upstream Samba authentication bug in it and confirmed a systemd fix with a real reboot test.</p>
<div class="chip-row"><span class="chip">Docker</span><span class="chip">Linux</span><span class="chip">Networking</span></div>
<a class="repo-link" href="https://github.com/codemastervy/homelab-server" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="app-dev">
<div class="project-thumb project-thumb--v2"></div>
<h4>Unity: Mental Health Super App</h4>
<div class="project-date">March 2023 to Present</div>
<p>A mental health and wellbeing app for kids and teens, with plans for rollout across New Zealand schools. Built with a team through the App Launchpad programme.</p>
<div class="chip-row"><span class="chip">App Launchpad</span><span class="chip">Team project</span><span class="chip">Mental health</span></div>
</div>
<div class="project-card" data-category="media">
<div class="project-thumb project-thumb--v3"></div>
<h4>Live Event Streaming Runbook</h4>
<div class="project-date">Volunteer AV crew</div>
<p>A field-tested runbook for multi-camera live event streaming with OBS Studio, a Blackmagic ATEM Mini, and external audio interfacing, written so the next volunteer can run it without me there.</p>
<div class="chip-row"><span class="chip">OBS Studio</span><span class="chip">ATEM Mini</span><span class="chip">Live production</span></div>
<a class="repo-link" href="https://github.com/codemastervy/live-streaming-guide" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="systems">
<div class="project-thumb project-thumb--v4"></div>
<h4>Dependency Update Workflow</h4>
<div class="project-date">Aug 2026 to Present</div>
<p>A GitHub Actions workflow that checks pip, npm, and Docker base image updates on a schedule, pauses for a real human approval by email, and only merges the resulting pull request if the existing test suite passes. Extracted from two of my other repos, where it runs in production.</p>
<div class="chip-row"><span class="chip">GitHub Actions</span><span class="chip">CI/CD</span><span class="chip">Python</span></div>
<a class="repo-link" href="https://github.com/codemastervy/dependency-update-workflow" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="media">
<div class="project-thumb project-thumb--v5"></div>
<h4>Freelance Video & Design Portfolio</h4>
<div class="project-date">Freelance</div>
<p>Freelance video editing and graphic design process alongside my CS degree: briefing, rough cuts, colour and audio workflow, and delivering in whatever format the destination platform actually needs.</p>
<div class="chip-row"><span class="chip">Video editing</span><span class="chip">Design</span><span class="chip">Freelance</span></div>
<a class="repo-link" href="https://github.com/codemastervy/design-video-portfolio" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="leadership">
<div class="project-thumb project-thumb--v6"></div>
<h4>Class Representative Programme</h4>
<div class="project-date">July 2026 to Present</div>
<p>Elected Class Rep for both COMPX102 and MRKTG101 in my first semester, running feedback loops between classmates and course staff for two papers at once.</p>
<div class="chip-row"><span class="chip">Waikato</span><span class="chip">Communication</span></div>
</div>
<div class="project-card" data-category="systems">
<div class="project-thumb project-thumb--v7"></div>
<h4>Portfolio Sync Action</h4>
<div class="project-date">Aug 2026 to Present</div>
<p>GitHub Actions workflow that auto-adds new public repos to a portfolio site and a profile README.</p>
<div class="chip-row"><span class="chip">Automation</span><span class="chip">Github Actions</span><span class="chip">Portfolio</span></div>
<a class="repo-link" href="https://github.com/codemastervy/portfolio-sync-action" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="systems" data-autogen="true">
<div class="project-thumb"></div>
<h4>Aquabots Code 2026</h4>
<div class="project-date">Sep 2026 to Present</div>
<p>PS4 controller → Arduino Mega control system for an underwater ROV (AquaBots). Python (pygame + pyserial) reads the gamepad and streams motor commands over serial; an Arduino sketch drives 4x BTS7960 modules for two drive thrusters and two lift thrusters.</p>
<div class="chip-row"><span class="chip">Python</span></div>
<a class="repo-link" href="https://github.com/codemastervy/Aquabots-Code-2026" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="systems" data-autogen="true">
<div class="project-thumb"></div>
<h4>Isherveers Tech Services</h4>
<div class="project-date">Oct 2026 to Present</div>
<p>Computer/IT support, drone aerial photography, and custom 3D printing — Rotorua, NZ</p>
<div class="chip-row"><span class="chip">Html</span></div>
<a class="repo-link" href="https://github.com/codemastervy/isherveers-tech-services" target="_blank" rel="noopener">View on GitHub →</a>
</div>
<div class="project-card" data-category="systems" data-autogen="true">
<div class="project-thumb"></div>
<h4>Smb Share Manager</h4>
<div class="project-date">Oct 2026 to Present</div>
<p>Small Docker container with a web UI for managing Samba shares and SMB users</p>
<div class="chip-row"><span class="chip">Python</span></div>
<a class="repo-link" href="https://github.com/codemastervy/smb-share-manager" target="_blank" rel="noopener">View on GitHub →</a>
</div>
</div>
</div>
</section>
</main>
</div>
<footer>
<div>
<div class="fname">Isherveer Bhullar</div>
<div>Computer science student, drone pilot, and video editor.</div>
<div class="fnote">ROTORUA, NZ · OPEN TO SUMMER INTERNSHIPS</div>
</div>
<div style="display:flex; gap:50px; flex-wrap:wrap;">
<div style="display:flex; flex-direction:column; gap:8px;">
<a href="index.html">About</a>
<a href="resume.html">Resume</a>
<a href="videos.html">Videos</a>
</div>
<div style="display:flex; flex-direction:column; gap:8px;">
<a href="projects.html">Projects</a>
<a href="credentials.html">Credentials</a>
<a href="contact.html">Contact</a>
</div>
</div>
</footer>
<script src="script.js?v=2"></script>
</body>
</html>