Skip to content

πŸƒ Open-source toolkit for structured workout data. Unified JSON format (.krd) with conversion tools for FIT, TCX, PWX. Built for Kiroween Hackathon πŸ‘»

License

Notifications You must be signed in to change notification settings

pablo-albaladejo/kaiord

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⏱️ Kaiord β€” Structured Workout Data Toolkit

Kiroween Hackathon Built with Kiro License: MIT TypeScript

CI codecov npm version npm version

πŸ‘» Built for Kiroween Hackathon - Showcasing AI-assisted development with Kiro

Kaiord is an open-source toolkit for structured workout data.

It provides:

  • @kaiord/core: a TypeScript library to read/write .fit, .tcx, .zwo and .krd (Kaiord) files.
  • @kaiord/cli: a command-line tool to convert between formats.
  • Workout SPA Editor: a web application to create and edit workout files visually.

✨ Features

  • Visual Workout Editor - Create and edit workouts in your browser
  • Unified JSON-based format .krd (Kaiord Representation Definition)
  • Schema validation (AJV)
  • Spec-driven development with Kiro
  • Round-trip safe conversions between FIT / TCX / ZWO / KRD
  • Clean architecture & fully typed API

Supported FIT Fields

Workout Metadata

  • Sub-sport categorization: Detailed sport types (trail running, indoor cycling, lap swimming, etc.)
  • Pool dimensions: Pool length and unit for swimming workouts

Workout Steps

  • Coaching notes: Instructional text for each step (max 256 characters)
  • Swimming equipment: Fins, kickboard, paddles, pull buoy, snorkel

Duration Types

  • Time & distance: Standard interval durations
  • Calorie-based: Steps ending after burning specified calories
  • Power-based: Steps ending based on power thresholds (watts)
  • Heart rate conditionals: Steps ending based on HR thresholds (bpm)
  • Repeat conditionals: Repeat blocks until time/distance/calories/HR/power targets reached

Known Limitations

  • Training Stress Score (TSS): The training_peaks_tss duration type is not yet implemented in the FIT converter. This is a TrainingPeaks-specific metric that requires additional mapping logic. Contributions welcome!

πŸ“š Documentation

Comprehensive documentation is available in the /docs directory:

  • Getting Started - Installation, basic usage, and quick examples for both library and CLI
  • Architecture - Hexagonal architecture, ports & adapters pattern, and design principles
  • Testing - Testing strategy, TDD workflow, and coverage requirements
  • Deployment - CI/CD pipeline, GitHub Pages deployment, and npm publishing
  • Contributing - Contribution guidelines, development workflow, and code standards
  • KRD Format - Complete specification of the Kaiord Representation Definition format
  • AI Agents - Guidance for AI-assisted development with Kiro and other tools

🧩 Tech Stack

Layer Tooling
Core TypeScript, tsup, AJV
CLI yargs
Testing Vitest
Specs & hooks Kiro
Package manager pnpm

πŸ— Monorepo Layout

kaiord/
β”œβ”€ packages/
β”‚  β”œβ”€ core/                β†’ library (schema + converters)
β”‚  β”œβ”€ cli/                 β†’ command-line interface
β”‚  └─ workout-spa-editor/  β†’ web application (https://pablo-albaladejo.github.io/kaiord)
β”œβ”€ .kiro/   β†’ steering docs, specs, hooks
β”œβ”€ LICENSE
β”œβ”€ README.md
└─ pnpm-workspace.yaml

πŸš€ Quick Start

Try the Web App

Launch Workout Editor β†’

Create and edit workouts visually in your browser. No installation required.

Use the Library

pnpm install
pnpm -r build
pnpm -r test

# Example usage
pnpm kaiord --help

For detailed installation instructions and usage examples, see the Getting Started Guide.


πŸš€ CI/CD Pipeline

Kaiord uses GitHub Actions for continuous integration and deployment:

  • Automated Testing: Multi-version testing on Node.js 20.x and 22.x
  • Code Quality: ESLint, Prettier, and TypeScript strict mode validation
  • Release Automation: Changesets for version management and npm publishing
  • Security: Weekly dependency vulnerability audits

For complete CI/CD documentation, deployment guides, and npm publishing instructions, see Deployment.

Contributing

To contribute to Kaiord:

  1. Fork and clone the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Make your changes following the code style guidelines
  4. Add a changeset: pnpm exec changeset (for version-worthy changes)
  5. Test locally: pnpm -r test and pnpm -r build
  6. Submit a PR: All checks must pass before merging

For detailed contribution guidelines, development workflow, and code standards, see Contributing.


πŸ“š References & Resources

Format Specifications

Related Projects

  • Kiro - AI-powered development environment

πŸ“œ License

MIT Β© 2025 Pablo Albaladejo
See LICENSE for details.


🧭 About Kiro Integration

This project is built using Kiro for:

  • Vibe coding β†’ collaborative code generation with AI.
  • Steering docs β†’ maintain clean-code and testing principles.
  • Specs β†’ spec-driven implementation flow.
  • Hooks β†’ local automated validations (.kiro/hooks/*).
  • GitHub MCP β†’ direct GitHub integration for PR/issue management.

All configuration lives under .kiro/ and is version-controlled for reproducibility.

GitHub MCP Setup

Kaiord uses the GitHub MCP server to enable direct GitHub interactions from Kiro:

# Run the automated setup script
./scripts/setup-github-mcp.sh

This configures:

  • GitHub Personal Access Token authentication
  • Docker-based MCP server
  • Automatic PR/issue management capabilities

See GitHub MCP Integration for complete documentation.

About

πŸƒ Open-source toolkit for structured workout data. Unified JSON format (.krd) with conversion tools for FIT, TCX, PWX. Built for Kiroween Hackathon πŸ‘»

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages