[READ-ONLY] Mirror of https://github.com/metruzanca/metru.dev. The latest iteration of my personal website metru.dev
dioxus portfolio rust
0

Configure Feed

Select the types of activity you want to include in your feed.

Rust 95.6%
CSS 3.6%
Dockerfile 0.5%
Shell 0.3%
37 1 0

Clone this repository

https://tangled.org/metru.dev/metru.dev https://tangled.org/did:plc:6opwzdzf6vgybmocqvh3rjpe
git@tangled.org:metru.dev/metru.dev git@tangled.org:did:plc:6opwzdzf6vgybmocqvh3rjpe

For self-hosted knots, clone URLs may differ based on your setup.



README.md

metru.dev#

metru.dev landing page

Personal porfolio built with Dioxus 0.7 and with a Synthwave inspired design-system with Geist + Orbitron fonts and dark-only color scheme.

How it works#

The site is a Dioxus fullstack app — Rust on both client and server. At build time:

  • Blog posts are read from blog/*.md, code-generated into Rust constants via build.rs, and rendered with syntax-highlighted MDX.
  • GitHub data (pinned repos, all public repos, contribution graph) is fetched from the GitHub GraphQL API using octocrab and baked into the binary.
  • Last.fm data is fetched at request time via server functions using the Last.fm API. The /music page shows your currently playing track, recent scrobbles, total and daily play counts, and a waveform visualizer. The landing page includes a now-playing card with album art color extraction done server-side using the image crate.

At runtime the server renders pages via Dioxus SSR and hydrates them on the client.

Hosting#

Built into a single static binary via dx bundle --web --release and deployed as a Docker container on Railway. The Dockerfile uses cargo-chef for cached dependency builds and bundles the server + assets into a slim runtime image.

Development#

Set these environment variables in .envrc or .env before running:

export GITHUB_TOKEN="gh_your_token"     # or if authenticated via gh, this isn't needed
export LASTFM_API_KEY="your_api_key"    # from https://www.last.fm/api/account/create
export LASTFM_USERNAME="your_username"  # your Last.fm username
# Dioxus-CLI
dx serve