Next.jsReactPortfolioBlogCorporate Website

liner-notes — Next.js Portfolio Template

By hycccc

A personal-site template for musicians, featuring an album creation workshop, cross-page music player, travel map, Markdown blog, and in-browser JSON admin panel, built on Next.js App Router and Tailwind.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

1 previews
Author preview
Author-provided previewTop of page

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

The album page records each track's status from Idea → Demo → Done, with a demo player and creation notes

02

A persistent bottom music player with playlists, cover art, and tags continues playback across tabs

03

An interactive world map marks where songs were written, with the location array maintained inside the component

04

The blog reads Markdown under posts/, and AI-generated articles are marked aiGenerated

05

The /admin panel edits JSON in the browser, with the password provided via the ADMIN_PASSWORD environment variable

06

Optional scripts support playlist sync, agent-written blog posts, and SSH key-based deployment

Template Details

liner-notes is a musician personal website template extracted from the author's own site, built with Next.js App Router and Tailwind. Personal content is concentrated in a few JSON files, and the rest of the code can be kept or removed as needed.

The site is organized by tabs: Home displays an avatar, badges, a timeline, a tech and instrument stack, and project cards, with data from the content/ directory; Album is a "creation workshop" rather than a catalog of works, recording Idea → Demo → Done status per track, an embedded demo player, writing notes, and the story behind each song; Music provides a persistent bottom player with playlists, cover art, and tags, continuing playback when switching tabs; Travel uses an interactive world map to mark where songs were written; Blog reads Markdown articles under posts/, and AI-generated articles are marked aiGenerated; the /admin panel allows editing the JSON for home, album, and projects in the browser, with the password provided via the ADMIN_PASSWORD environment variable.

The template includes several optional mechanisms: scripts/sync-playlist.js syncs streaming playlists through a self-hosted API instance (the repository contains no credentials); skills/auto-blog/ is an agent skill that scrapes trending topics and calls a specified LLM CLI to generate daily articles, writing them to posts/ and marking them aiGenerated: true; scripts/deploy.sh performs SSH key deployment using the DEPLOY_HOST / DEPLOY_PATH environment variables and does not handle passwords.

By design, the album page deliberately shows unfinished works; the demo persona June Holiday (Nightjar Records) is fictional, and the assets under public/ are all synthesized audio or hand-drawn SVG. The admin panel writes directly to the same JSON files as manual editing, without a database or CMS.

Limitations to note: the three tracks included in the repository are CC0 placeholder synth audio; replacing them with your own audio requires modifying public/music/ and data/index.tsx; the travel map's location array is in components/SimpleTravelMap.tsx; playlist sync and auto-blogging depend on external services or an LLM CLI that you must provide; the MIT license covers only this version's code, while third-party assets such as demo images, fonts, and icons require separate license verification, and external services such as domains, hosting, databases, payments, or AI may incur additional fees.

Next.jsPortfolioBlogCorporate website

Is it right for your project?

Use Cases

  • Musicians building a personal site with a creation workshop, player, and travel map
  • Publicly documenting and continuously updating demos in progress, lyric fragments, and song stories
  • Writing a blog in Markdown and generating daily articles marked as AI via an agent skill
  • Maintaining home, album, and project data directly in the browser without introducing a database or CMS

Suitable For

  • Musicians who need to show the creative process rather than only a catalog of finished works
  • Developers comfortable managing content with JSON and Markdown who are willing to deploy it themselves
  • Users who want to retain code control and can remove bundled template features as needed
  • Users who can provide external services such as a streaming API instance or an LLM CLI themselves

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After cloning the repository, run npm install and npm run dev to start the development environment

  2. 2

    First edit content/site.json (name, tagline, badges, location, social links), which drives the header, about page, and metadata

  3. 3

    Then edit content/home.json, content/album.json, content/projects.json, and the Markdown under posts/

  4. 4

    Replace the placeholder tracks in public/music/ and data/index.tsx, and fill in the location array in components/SimpleTravelMap.tsx

  5. 5

    /admin requires the ADMIN_PASSWORD environment variable; the deployment script requires DEPLOY_HOST and DEPLOY_PATH

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version under the MIT license in the public repository; the free scope is that version's code and does not mean external services or third-party assets are free.

Must comply with when using

  • You may use, modify, commercialize, and distribute this version's code for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and liability limitations are governed by the original license and applicable law.

Additional costs & items to verify

  • The playlist sync feature depends on a self-hosted streaming API instance; the repository provides no credentials, so users must set it up themselves and bear the related service costs.
  • The auto-blog feature requires you to provide and configure an LLM CLI, which is an external service dependency and may incur additional fees.
  • The deployment script depends on an SSH key and the DEPLOY_HOST and DEPLOY_PATH environment variables, so you must prepare a server and key yourself.
  • The /admin panel requires the ADMIN_PASSWORD environment variable as the access password.
  • The repository includes three CC0 placeholder synth tracks; replacing them with your own audio requires modifying public/music/ and data/index.tsx.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional fees.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

keeps the player in sync with a streaming-service playlist via a self-hosted API instance (bring your own; no credentials ship in this repo)

Original README

an agent skill that fetches trending topics and drafts daily posts through whatever LLM CLI you point it at

Original README

SSH-key deploy driven by `DEPLOY_HOST` / `DEPLOY_PATH` env vars

Original README

password via `ADMIN_PASSWORD` env

Original README

replace the three synthesized demo tracks with your own audio

Original README
https://github.com/hycccc/liner-notes/blob/main/LICENSEhttps://github.com/hycccc/liner-notes/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
Partly documented · 73 / 100
Technologies
Next.js · React
Website type
Portfolio · Blog · Corporate Website
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-08-18
Screenshot last checked
2026-10-02

No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 20d10b8bc1749d5b3aeb61b0343af366463d1f2ecfdb12bd4403a379dd3a55fb

2026-10-02T07:25:16.679Z

Source file / repository
# liner-notes

[![License: MIT](https://img.shields.io/badge/license-MIT-1fa88c.svg)](LICENSE)

**A personal-site template for musicians** — music player, album *workshop* (not a discography: demos, half-finished lyrics, and the story of each song while it's still growing), travel map, blog with an optional agent-written daily pipeline, and a small admin panel. Next.js App Router + Tailwind.

Extracted from my own site, which has run this code in production since early 2026. Everything personal lives in a handful of JSON files; everything else is yours to keep or delete.

![screenshot](docs/screenshot.png)

The album workshop, mid-song:

![album workshop](docs/screenshot-album.png)

## What's in the box

| Tab | What it does |
|---|---|
| **Home** | avatar, badges, timeline, tech & instrument stacks, projects — all from `content/` |
| **Album** | the workshop: per-track status (`Idea → Demo → Done`), inline demo player, writing notes, the story behind each song |
| **Music** | a persistent bottom player with playlist, covers, and tags — keeps playing across tabs |
| **Travel** | an interactive world map of everywhere the songs were written |
| **Blog** | markdown posts from `posts/`; AI-written posts are labeled `aiGenerated` — readers deserve to know |
| **/admin** | edit home/album/projects JSON from the browser (password via `ADMIN_PASSWORD` env) |

## Make it yours

```bash
git clone https://github.com/hycccc/liner-notes && cd liner-notes
npm install && npm run dev
```

Then edit, in order of impact:

1. **`content/site.json`** — your name, tagline, badges, location, socials. This single file drives the header, the about tab, and all metadata.
2. **`content/home.json` / `content/album.json` / `content/projects.json`** — timeline, the album workshop, project cards.
3. **`public/music/` + `data/index.tsx`** — replace the three synthesized demo tracks with your own audio (the shipped ones are CC0 placeholder synths, so the template carries zero rights questions).
4. **`components/SimpleTravelMap.tsx`** — the `locations` array is your travel history.
5. **`posts/`** — your writing, as markdown with frontmatter.

## Optional machinery

- **`scripts/sync-playlist.js`** — keeps the player in sync with a streaming-service playlist via a self-hosted API instance (bring your own; no credentials ship in this repo).
- **`skills/auto-blog/`** — an agent skill that fetches trending topics and drafts daily posts through whatever LLM CLI you point it at. Posts land in `posts/` stamped `aiGenerated: true`.
- **`scripts/deploy.sh`** — SSH-key deploy driven by `DEPLOY_HOST` / `DEPLOY_PATH` env vars. This script takes no passwords, ever.

## Design notes

- The album page is a **workshop, not a museum** — showing unfinished work is the feature, not a compromise.
- The demo persona (June Holiday, of Nightjar Records) is fictional and shared with my other projects; every asset under `public/` is synthesized or hand-drawn SVG, so a fork starts from a legally clean slate.
- The admin panel writes the same JSON files you'd edit by hand — no database, no CMS, rsync-able.

## License

MIT
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.