Skip to content

Contributing & Versioning Guide

Thank you for your interest in the Kryptofolio project!

Kryptofolio is open-source software licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).


Kryptofolio is currently in active early-stage development as a personal project and learning endeavor.

At this stage:

  • Direct external Pull Requests are not being accepted into the primary branch.
  • You are wholeheartedly encouraged to fork the repository, inspect the architecture, experiment with new features, and use it for your personal needs.

Even though direct PRs are temporarily on hold, community engagement and architectural feedback are warmly welcomed:

If you find a calculation flaw, an exchange CSV parsing edge case, or a UI bug:

  1. Check the existing GitHub Issues.
  2. Open a new issue including:
    • Clear title and detailed reproduction steps.
    • Anonymized sample CSV lines illustrating the parsing issue.
    • Expected vs. actual numerical behavior.
    • Your local environment details (OS, Node version, browser).

2. Suggesting Features & Exchange Profiles

Section titled “2. Suggesting Features & Exchange Profiles”

If you would like support for a new exchange or tax jurisdiction:

  1. Check open issues to see if a similar proposal exists.
  2. Open an issue detailing:
    • The exchange name and sample CSV header formats.
    • Any quirks in how the exchange exports fee amounts or trade legs.

When the repository opens to community PRs, the following standards will be enforced:

All contributors will be asked to agree to the Contributor License Agreement (CLA.md) to maintain the legal integrity of the codebase.

  • Domain logic must remain 100% pure: zero framework or database imports in packages/core-domain.
  • Financial calculations must strictly preserve precision using PreciseAmount.
  • All code must pass pnpm test and pnpm typecheck (vue-tsc --noEmit) with zero any bypasses.
  • Use Conventional Commits (e.g. feat(fiscal): add bitvavo staking parser).
  • Run pnpm changeset before pushing changes to declare semantic version impacts under the “Frontend is King” philosophy.

The documentation portal lives in its own repository and follows the application release train:

  • Tags mirror the app. Every application release vX.Y.Z produces the same tag vX.Y.Z in kryptofolio-documents, created automatically by the app’s release workflow. The tag marks the exact documentation that matches that release.
  • main is “latest”. The published site always builds from main, which documents the most recent release plus anything merged ahead of the next one.
  • Pin a version. To read the docs for an older release, check out its tag: git checkout v1.16.14 && npm ci && npm run build.
  • package.json version. It records the application version the docs were last aligned with. The tag is the source of truth if the two ever differ.
  • New features are badged. Pages that document a feature not yet in a stable release carry a New sidebar badge (sidebar.badge in the frontmatter). Remove the badge once the feature has shipped in a tagged release.