PikPak Classify Web is a Bun + ElysiaJS application for scanning PikPak files, generating folder suggestions with an LLM, classifying files, previewing move plans, and executing batch moves from a modern browser dashboard.
- Single-page step-flow dashboard for
Scan → Folder Suggestions → Classify → Dry Run → Move - Modern React + Vite + Tailwind UI with glass-style surfaces
- Light and dark theme toggle with local preference persistence
.env-based runtime configuration with in-browser editing- Proxy-aware outbound requests for both LLM and PikPak APIs
- Real-time job logs via SSE with heartbeat protection
- Prompt editing and category library editing from the browser
- Stop-current-job control for long-running classify or move tasks
- Bun test suite tracked in
tests/
src/- Elysia server, config, services, workflow logicui/- React + Vite + Tailwind source for the dashboardpublic/- generated frontend build output for production; not tracked in gittests/- Bun-based regression and behavior testsdata/- local prompt and category data files generated at runtimeoutput/- generated scan, classification, and move artifactsopenspec/- change proposals, specs, and implementation tasks
-
Install dependencies:
bun install
-
Copy the environment template:
cp .env.example .env
-
Fill in your credentials and paths in
.env.
PIKPAK_USERNAME- PikPak accountPIKPAK_PASSWORD- PikPak passwordPIKPAK_SOURCE_FOLDER- source folder to scanPIKPAK_TARGET_FOLDER- target root folder for categorized outputPIKPAK_DEVICE_ID- optional device ID, leave blank to auto-generateLLM_API_KEY- model provider API keyLLM_BASE_URL- model API base URLLLM_MODEL- model namePROXY_URL- optional proxy such ashttp://127.0.0.1:7890BATCH_SIZE- files per LLM batchMOVE_BATCH_SIZE- files per move batch
bun run devThis starts both the Bun API server and the Vite frontend dev server.
Open http://127.0.0.1:4173 for the UI.
The backend API stays on http://127.0.0.1:3000.
For the new frontend source and generated assets:
bun run build:uiThe generated dashboard is written into public/ and is served by the Elysia app.
The generated files in public/ are build artifacts and are not tracked in git.
- Scan files from the configured PikPak source folder
- Generate folder suggestions with the configured LLM
- Run classification for the scanned file set
- Review the move plan and category distribution with Dry Run
- Confirm the real move when the preview looks correct
- Stop the current job if you need to interrupt a long task
bun run dev- start the Bun API server and Vite frontend togetherbun run dev:server- start only the Bun API server in watch modebun run dev:ui- run the Vite frontend dev serverbun run start- start the server oncebun run build- build the frontend intopublic/bun run build:ui- build the frontend intopublic/bun run test- run all testsbun run fmt- format source, frontend, and test filesbun run check- run the verification suite
Current tests cover:
- config parsing and masked summaries
- proxy propagation into LLM requests
- job lifecycle events, including cancel flow
- settings persistence
- move-plan grouping logic
- dashboard view-model behavior for step states and theme preference