diff --git a/.env.example b/.env.example
index aca5757..3bddbd4 100644
--- a/.env.example
+++ b/.env.example
@@ -4,41 +4,30 @@
# ─────────────────────────────────────────────────────────────────────────────
# ── Database ─────────────────────────────────────────────────────────────────
-# PostgreSQL connection string.
-# When using docker compose the default works out of the box.
DATABASE_URL=postgres://clicktrack:clicktrack@localhost:5432/clicktrack
-
-# Password used by the postgres service in docker-compose.yml.
-# Change this before deploying to production.
POSTGRES_PASSWORD=clicktrack
# ── Redis ────────────────────────────────────────────────────────────────────
-# Redis connection URL.
REDIS_URL=redis://localhost:6379
# ── Community registry ───────────────────────────────────────────────────────
-# Public GitHub repository containing community CTP files.
-# Example: https://github.com/your-org/clicktrack-registry
-# Leave blank to disable registry sync.
REGISTRY_REPO=
-
-# Branch to pull from (default: main).
REGISTRY_BRANCH=main
-
-# Interval in seconds between registry syncs (default: 3600 = 1 hour).
REGISTRY_SYNC_INTERVAL=3600
+# ── AI Tempo Analysis ────────────────────────────────────────────────────────
+# Required for the /analyze feature (AI tempo map generation).
+# Get a key at https://console.anthropic.com
+# BPM detection is client-side and works without this key.
+ANTHROPIC_API_KEY=
+
# ── App ──────────────────────────────────────────────────────────────────────
-# Display name shown in the UI and page title.
NEXT_PUBLIC_APP_NAME=ClickTrack
# ── MusicBrainz ──────────────────────────────────────────────────────────────
-# User-Agent string sent to MusicBrainz. Must identify your application and
-# provide a contact URL or email per their usage policy:
-# https://musicbrainz.org/doc/MusicBrainz_API/Rate_Limiting
+# Must identify your instance per MB rate-limit policy.
MUSICBRAINZ_USER_AGENT=ClickTrack/0.1 (https://your-instance-url)
# ── Ports (docker-compose.yml) ───────────────────────────────────────────────
-# Host ports for the nginx reverse proxy.
HTTP_PORT=80
HTTPS_PORT=443
diff --git a/app/(web)/analyze/page.tsx b/app/(web)/analyze/page.tsx
new file mode 100644
index 0000000..b8fe717
--- /dev/null
+++ b/app/(web)/analyze/page.tsx
@@ -0,0 +1,50 @@
+import type { Metadata } from "next";
+import TempoAnalyzer from "@/components/TempoAnalyzer";
+
+export const metadata: Metadata = {
+ title: "Analyze Audio",
+ description:
+ "Upload an audio file, detect the tempo, and generate a CTP tempo map with AI assistance.",
+};
+
+export default function AnalyzePage() {
+ return (
+
+
+
+ Tempo Analysis
+
+
Generate a Tempo Map
+
+ Upload your audio file. The app detects the BPM in your browser, then
+ uses AI to generate a complete{" "}
+ CTP tempo map — including
+ sections, time signatures, and any tempo changes.
+
+
+
+
+
+ How it works:
+
+
+
Drop or select any audio file — MP3, WAV, AAC, OGG, FLAC, M4A.
+
+ BPM is detected locally in your browser using the Web Audio API.
+ Your audio is never uploaded.
+
+
+ Only the detected BPM, duration, and any metadata you provide are
+ sent to the server for AI generation.
+
+
+ Claude analyses the song structure and returns a draft CTP document.
+ Always verify it against the recording.
+