You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/TECHNICAL_ANALYSIS.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,12 @@ This document explains how CuePoint works under the hood. It is written for tech
4
4
5
5
## High-level architecture
6
6
7
-
CuePoint is a shared core pipeline surfaced through two interfaces:
7
+
CuePoint exposes **two tools** from the start screen:
8
8
9
-
-**Core pipeline**: parsing, query generation, search, scoring, and export.
10
-
-**Interfaces**: GUI and CLI both call the same services (`ProcessorService`).
9
+
-**inKey** — Rekordbox playlist → Beatport metadata enrichment. Shared core pipeline (parsing, query generation, search, scoring, export) surfaced through GUI and CLI. Both call the same services (`ProcessorService`).
10
+
-**inCrate** — Inventory from full Rekordbox collection, discovery (Beatport genre charts from library artists, new releases from labels), and Beatport playlist creation. Orchestration: `InventoryService`, `IncrateDiscoveryService`, and `src/cuepoint/incrate/` (inventory DB, discovery, playlist writer, enrichment).
11
11
12
-
Primary orchestration happens in `src/cuepoint/services/processor_service.py`, which:
12
+
Primary orchestration for **inKey**happens in `src/cuepoint/services/processor_service.py`, which:
13
13
14
14
1. Normalizes track inputs.
15
15
2. Generates search queries.
@@ -174,7 +174,7 @@ Settings are mapped from nested YAML into a flat `SETTINGS` dict and are read by
174
174
175
175
**CLI**
176
176
177
-
- Entry point in `main.py`, with CLI logic in `src/cuepoint/cli/cli_processor.py`.
177
+
- Entry point: run from project root as `python main.py` (root `main.py` delegates to `src/main.py`). CLI logic in `src/cuepoint/cli/cli_processor.py`.
178
178
- Accepts `--xml`, `--playlist`, `--out`, and other flags.
179
179
- Writes outputs to the configured output directory.
4. For Beatport data flow: `beatport_service.fetch_track_data()` → `data/beatport.parse_track_page()`
63
+
1.**Entry points**: CLI is run from **project root** as `python main.py` (root `main.py` delegates to `src/main.py`). GUI: `src/gui_app.py` or `run_gui.bat` / `run_gui.command` / `run_gui.sh` from root.
64
+
2. Start at `src/main.py` (CLI) or `src/gui_app.py` (GUI).
65
+
3. Follow `CLIProcessor` or GUI controller into `ProcessorService`.
5. For Beatport data flow: `BeatportService` (in `services/beatport_service.py`) uses `data/beatport.py` and `data/beatport_search.py`; `beatport_service.fetch_track_data()` → `data/beatport.parse_track_page()`.
inCrate is CuePoint’s second tool: a music-digging workflow that uses your Rekordbox collection to discover new music on Beatport and build a Beatport playlist.
4
+
5
+
## What inCrate does
6
+
7
+
1.**Inventory** — Build a queryable index from your full Rekordbox collection (artist, title, remix/version, label). Optionally enrich missing labels using the same Beatport matching flow as inKey.
8
+
2.**Charts** — Discover Beatport genre charts published in the past month where the chart author is one of your library artists, and add whole charts to a playlist.
9
+
3.**New releases** — For each label in your inventory, find releases from the last 30 days on Beatport and add them to the same playlist.
10
+
4.**Beatport playlist** — Create or use a Beatport playlist per run (e.g. date-based name like `feb26` or `2025-02-26`) and add discovered tracks to it.
11
+
12
+
## Where it lives in the app
13
+
14
+
From the CuePoint start screen you can choose **inKey** (metadata enrichment) or **inCrate** (inventory and discovery). inCrate uses its own UI flow: inventory, discovery (charts + new releases), and playlist creation.
15
+
16
+
## Implementation and design
17
+
18
+
-**Requirements and decisions:**[inCrate spec](../incrate-spec.md)
19
+
-**Implementation order and detailed design:**[Feature implementation designs (inCrate)](../feature/README.md) — phases 1–5 (inventory, Beatport API, discovery, playlist/auth, UI).
20
+
21
+
Core code areas: `src/cuepoint/incrate/` (inventory, discovery, playlist writer, enrichment), `InventoryService`, `IncrateDiscoveryService`, Beatport API client and playlist auth as described in the spec and feature docs.
0 commit comments