prime8dev

prime8dev
git clone https://git.prime8.dev/prime8dev.git
Log | Files | Refs | README | LICENSE

commit 131427ce95519b455024b778885668c609924bd1
parent a083517591f826f9b15afc435e84236bf3949a71
Author: Damian Myrda <damian@prime8.dev>
Date:   Sat, 31 Jan 2026 18:35:25 -0600

docs(blog): rewrite portfolio building post with clearer focus

Diffstat:
Mwebsite/src/blogs/building-my-portfolio.md | 37++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/website/src/blogs/building-my-portfolio.md b/website/src/blogs/building-my-portfolio.md @@ -2,7 +2,6 @@ id: building-my-portfolio title: Building a TUI-Inspired Portfolio description: How I built this terminal-style portfolio with Astro -date: 2026-01-16 tags: - Astro - TypeScript @@ -11,36 +10,32 @@ tags: - Portfolio --- -I've always been drawn to terminal interfaces. There's something satisfying about the simplicity and efficiency of a well-designed TUI. So when it came time to build my portfolio, I knew I wanted to capture that aesthetic. Keyboard navigation and dark color scheme that feels like home. +Once I got used to the terminal, **I couldn't live without it**. I love the **simplicity** of the interface and the fact that it's **keyboard native** (no need to reach for the mouse). Anything can be reached within a few key presses, which is one of the characteristics that I love. ## The Stack -This site is built with **Astro** for server-side rendering. At build/request time, READMEs are fetched directly from my GitLab and GitHub repositories: no stale content. **Wakatime integration** pulls my coding stats in real-time, showing weekly activity breakdowns and total hours coded. It's a nice way to show I'm actually writing code, not just talking about it. +I built this website using **Astro** using server-side rendering. I tried to keep it as simple as possible, no over-engineering. Don't need WASM, a full-fledged database, or a complex UI framework. Details about me are stored in json files for ease of access (no need to scour the entire project to make a change), and my blogs are stored in a directory of markdown files. ## Design Decisions -A few key choices drove the design: +Some characteristics that I've observed in terminal user interfaces I've transferred over to my website: -- **Keyboard-first navigation** – Number keys (`1-4`) switch tabs instantly. Arrow keys navigate lists and timelines. `Tab` cycles through sections. `Enter` opens blog posts, `Escape` closes them. It feels like using a real terminal application. -- **List-detail pattern** – Projects and experience use a sidebar list with detail views, similar to email clients or file managers. The experience page features a timeline visualization that's navigable with arrow keys. -- **Live data everywhere** – WakaTime stats update on every page load. Project READMEs are fetched fresh from git repositories. No static snapshots that go stale. +- **Keyboard-first navigation**: `Arrow keys` allows navigation throughout the UI. `Tab` and the number keys (`1-4`) can be used to switch between tabs instantly. `Enter` intuitively opens blog posts and `Escape` closes them. +- **No stale content**: One thing I don't want to worry about it updating my website every time something changes. This is a design pattern that is followed in the entire project. + - Project details are fetched from my [self-hosted GitLab instance](https://git.prime8.dev). + - Blog metadata is taken from the file stats, not a hard coded value. + - Coding stats are pulled from [my Wakatime account](https://wakatime.com/@moncheeta). +- **Personality**: One thing I want to make sure of is that this website is unique, but also derives some of its elements from existing terminal applications. + - Boot animation adds a feeling of life to the website, even though it's entirely static. + - Top tab bar is an idea taken from the countless GUI applications that have it. + - Bottom status bar is inspired by many terminal applications that use a similar setup. -## The Color Palette - -The palette is inspired by classic terminal emulators: - -- Background: `#0d0d0d` (near-black) -- Foreground: `#c0c0c0` (soft gray) -- Accent: `#d7af5f` (warm gold) -- Links: `#5fafff` (light blue) -- Cyan, magenta, red for semantic colors - -JetBrains Mono is the font throughout. It's readable and has great character distinction. +These characteristics make this website feel like the terminal applications that I'm in love with, while differentiating it to make it mine. ## Conclusion -Building this portfolio was a chance to combine two things I love: terminal aesthetics and modern web development. The result is something that feels personal: a site that reflects how I actually work, not just what I've worked on. +Building this portfolio was a chance for me to combine two things **I love**: terminal user interfaces and modern web development. The result is something that feels **personal**, a site that actually reflects how I actually work. -If you're thinking about building your own portfolio, my advice is simple: make it yours. Pick a style that resonates with you, add the features you'd actually want to use, and don't be afraid to over-engineer the parts you find interesting. That's where the best learning happens. +If you're thinking about building your own portfolio, my advice is simple: **make it yours**. Pick a style that exemplifies you and add the features you'd actually want to use. -The source code is available at [git.prime8.dev](https://git.prime8.dev/moncheeta/prime8dev). +The source code is available at [git.prime8.dev](https://git.prime8.dev/moncheeta/prime8dev)