A personal portfolio website for danny.ink, built with Node.js and Express. Showcases projects, social links, and a live Plex music player widget powered by Tautulli.
- Runtime: Node.js 18
- Framework: Express
- HTTP Client: SuperAgent
- Integration: Tautulli API (Plex media activity)
- Containerization: Docker
- Static portfolio page with project showcases and social links
- Live "currently listening" music player that displays the active Plex track, album art, and playback progress
- Activity data fetched from a Tautulli instance and injected into the page at serve time
- REST endpoint (
/api/activity) for polling current listening activity - Automatic activity polling every 5 seconds
- Node.js 18+
- A running Tautulli instance connected to Plex
-
Clone the repository:
git clone <repo-url> cd portfolio -
Install dependencies:
npm install -
Create a
.envfile with the following variables:TAUTULLI_HOST=https://your-tautulli-instance TAUTULLI_KEY=your-tautulli-api-key PLEX_USERNAME=your-plex-username -
Start the server:
npm start
The site will be available at http://localhost:8080.
docker build -t portfolio .
docker run -p 8080:8080 --env-file .env portfolio
index.js # Express server, Tautulli polling, route handlers
public/
index.html # Main HTML template (activity data injected via {%%} token)
assets/
main.css # Stylesheet
main.js # Client-side JavaScript
icons/ # Social and platform icons
projects/ # Project thumbnail images