trails/openspec/changes/komoot-import/specs/komoot-import/spec.md
Ullrich Schäfer c7c1c275df
Add 8 proposed changes and old trails analysis
Proposed changes (all with proposal, design, specs, tasks):
- app-navigation (9 tasks) — nav bars for both apps
- planner-landing-page (7 tasks) — standalone landing page
- planner-multiplayer-awareness (13 tasks) — participants, cursors, names
- changelog (13 tasks) — public changelog with "what's new"
- transactional-emails (15 tasks) — magic link + welcome emails
- planner-features (18 tasks) — no-go areas, notes, recovery, rate limits
- komoot-import (23 tasks) — Komoot tour import
- route-features (37 tasks) — sharing, multi-day, spatial, photos

Also adds docs/old-trails-analysis.md with feature analysis from the
older trails project.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 03:57:20 +01:00

2.8 KiB

ADDED Requirements

Requirement: Connect Komoot account

Users SHALL be able to connect their Komoot account by providing email and password. Credentials are validated against the Komoot API and stored encrypted.

Scenario: Successful connection

  • WHEN user enters valid Komoot email and password on the integrations page
  • THEN the system validates credentials via api.komoot.de, stores them encrypted, and shows the connection as active

Scenario: Invalid credentials

  • WHEN user enters incorrect Komoot credentials
  • THEN the system shows an error message and does not store credentials

Scenario: Disconnect account

  • WHEN user disconnects their Komoot integration
  • THEN stored credentials are deleted and no further imports can occur

Requirement: Import Komoot tours

Users SHALL be able to import all their Komoot tours as Journal activities with linked routes.

Scenario: Import all tours

  • WHEN user clicks "Import" on the integrations page
  • THEN the system fetches all tours (paginated), creates an activity and route for each, and shows progress

Scenario: Tour with GPX geometry

  • WHEN a Komoot tour is imported
  • THEN the system fetches the tour's GPX/geometry and creates a route with the full track data

Scenario: Import progress

  • WHEN an import is running
  • THEN the UI shows: total tours found, imported so far, duplicates skipped, and current status

Requirement: Deduplication

The system SHALL NOT create duplicate activities when re-importing tours that were previously imported.

Scenario: Re-import skips existing tours

  • WHEN user runs import and a tour was already imported previously
  • THEN the tour is skipped and counted as a duplicate in the import summary

Requirement: Import batch tracking

Each import run SHALL be tracked as a batch with status and statistics.

Scenario: Batch lifecycle

  • WHEN an import starts
  • THEN a batch record is created with status "running", and updated to "completed" or "failed" when done

Scenario: Batch statistics

  • WHEN an import completes
  • THEN the batch shows: totalFound, importedCount, duplicateCount, and duration

Requirement: Credential encryption

Komoot credentials SHALL be encrypted at rest using AES-256-GCM.

Scenario: Credentials stored securely

  • WHEN a user connects their Komoot account
  • THEN the password is encrypted before storage and only decrypted when making API calls

Requirement: Privacy disclosure

The Komoot integration SHALL be documented in the privacy manifest.

Scenario: Privacy manifest updated

  • WHEN Komoot import is available
  • THEN the /privacy page documents: what credentials are stored, what data is imported, and that credentials are encrypted