mirror of
https://github.com/narrrl/pl8list-rewind.git
synced 2026-11-03 16:41:26 +01:00
The front end moves to web/ (Vite, TypeScript, no framework) and is built into web/dist, which the server embeds. hls.js is bundled from npm and loaded on demand instead of vendored. The feed is a custom pager instead of CSS scroll snapping: drag and flick with a spring that keeps the finger's speed, a rubber band at the ends, one page per wheel or trackpad gesture, and only three cards in the DOM. Playback uses two decks. The next track is buffered shortly after the current one starts and tracks crossfade through a Web Audio graph; on iOS, where that would break lock-screen playback, they switch with a cut. An analyser drives a bass pulse of the artwork and its glow, and each card takes its accent colour from the artist image. Styles start from design tokens and respect reduced motion. Docker gets a Node build stage; legal pages use their own small stylesheet.
12 lines
585 B
Rust
12 lines
585 B
Rust
// The front end is built separately (`cd web && npm ci && npm run build`) and
|
|
// embedded from web/dist. Create the folder if it is missing so the backend still
|
|
// compiles (and its tests run) without Node; the pages are then empty.
|
|
fn main() {
|
|
let dist = std::path::Path::new("../web/dist");
|
|
println!("cargo:rerun-if-changed=../web/dist");
|
|
if !dist.join("index.html").exists() {
|
|
std::fs::create_dir_all(dist).expect("create ../web/dist");
|
|
println!("cargo:warning=web/dist has no index.html; run `npm run build` in web/ to include the front end");
|
|
}
|
|
}
|