Competency Exchange & Interoperability Tool
A modern 1EdTech CASE v1.1 compatible server for publishing competency frameworks via REST API. Aiming to serve as a competency reference endpoint for platforms such as Open Badge Factory (OB v3) and TAO Testing (QTI v3.0) in the future.
"compeito" is also the Japanese word for konpeitō (金平糖), a traditional Japanese sugar candy.
- CASE v1.1 compatible — All required REST API endpoints (CFPackages, CFDocuments, CFItems, CFAssociations, and more)
- Multi-tenant — Serve multiple organizations from a single instance, each with their own UUID namespace
- Tree view UI — Browse competency frameworks with an interactive HTMX-powered tree view
- CSV import/export — Import from custom CSV or OpenSALT-compatible formats; export for editing and re-import with UUID-based upsert
- External CASE import — Import frameworks directly from OpenSALT or any CASE-compatible server
- Docker-ready — Run locally or deploy anywhere with Docker and PostgreSQL
| Layer | Technology |
|---|---|
| API | Python 3.12, FastAPI |
| ORM | SQLAlchemy 2.x (async) |
| Migration | Alembic |
| Database | PostgreSQL |
| Web UI | Jinja2, HTMX, Tailwind CSS |
| CLI | Click, Rich |
| Package Manager | uv |
# Clone the repository
git clone https://github.com/infosign/compeito.git
cd compeito
# Start with Docker
docker compose up -d
# Run database migrations
docker compose exec app alembic upgrade headFor local development without running the app inside Docker (e.g., DB in Docker + app on the host with uv), see docs/dev/local-setup.md.
# Tenant management
docker compose exec app uv run python cli.py tenant create --name "University A"
docker compose exec app uv run python cli.py tenant list --with-docs
# Import a framework from CSV
docker compose exec app uv run python cli.py import csv --tenant {uuid} --file framework.csv
# Import from an external CASE server (e.g., OpenSALT)
docker compose exec app uv run python cli.py import case-url --tenant {uuid} --url https://opensalt.net/ims/case/v1p0/CFPackages/{id}
# Export for editing
docker compose exec app uv run python cli.py export csv --tenant {uuid} --doc {doc-uuid} --file output.csvAll endpoints follow the CASE v1.1 REST/JSON Binding specification.
GET /{tenant}/ims/case/v1p1/CFPackages/{id}
GET /{tenant}/ims/case/v1p1/CFDocuments
GET /{tenant}/ims/case/v1p1/CFDocuments/{id}
GET /{tenant}/ims/case/v1p1/CFItems/{id}
GET /{tenant}/ims/case/v1p1/CFItems/{id}/associations
GET /{tenant}/ims/case/v1p1/CFAssociations/{id}
GET /{tenant}/ims/case/v1p1/CFAssociationGroupings
GET /{tenant}/ims/case/v1p1/CFAssociationGroupings/{id}
GET /{tenant}/ims/case/v1p1/CFConcepts
GET /{tenant}/ims/case/v1p1/CFConcepts/{id}
GET /{tenant}/ims/case/v1p1/CFItemTypes
GET /{tenant}/ims/case/v1p1/CFItemTypes/{id}
GET /{tenant}/ims/case/v1p1/CFLicenses
GET /{tenant}/ims/case/v1p1/CFLicenses/{id}
GET /{tenant}/ims/case/v1p1/CFSubjects
GET /{tenant}/ims/case/v1p1/CFSubjects/{id}
Legacy /ims/case/v1p0/ paths are redirected (301) to /ims/case/v1p1/.
The current de facto CASE implementation is OpenSALT (by PCG Education). Its latest stable release (3.2.0, September 2023) targets CASE v1.0, with v1.1 work actively underway on the develop branch but not yet released as of mid-2026. OpenSALT is a full-featured framework editor.
COMPEITO takes a complementary approach: a lightweight Python / FastAPI API distribution server with CASE v1.1 conformance shipping today, multi-tenancy, and bilingual (English / Japanese) UI, CLI, and documentation. It is designed to serve as a competency reference endpoint for systems such as Open Badge Factory and QTI Testing. Importing frameworks published in OpenSALT instances is a first-class capability.
- Phase 1 (Done) — Docker development, all CASE v1.1 API endpoints, CSV/CASE import & export, Web UI, CLI, i18n
- Phase 2 (Done) — OpenSALT CSV export format, CASE v1.0 import support, CFRubric API, CI
- Phase 3 — Non-tree association management, OAuth 2.0, semantic search, cross-framework mapping
Infosign, Inc. (株式会社インフォザイン)
Competency Exchange & Interoperability Tool
1EdTech CASE v1.1 対応のコンピテンシーフレームワーク配信サーバーです。将来的に Open Badge Factory (OB v3) や TAO Testing (QTI v3.0) のコンピテンシー参照先として連携することを目指しています。
"compeito" は日本語の「金平糖(こんぺいとう)」にも由来しています。
- CASE v1.1 対応 — 必須の REST API エンドポイントをすべて実装(CFPackages, CFDocuments, CFItems, CFAssociations 等)
- マルチテナント — 1つのインスタンスで複数の組織をホスト。各テナントは独自の UUID 名前空間を持つ
- ツリービュー UI — HTMX によるインタラクティブなツリービューでコンピテンシーフレームワークを閲覧
- CSV インポート/エクスポート — 独自CSV・OpenSALT互換形式に対応。エクスポートして編集後、UUID ベースの upsert で再インポート可能
- 外部 CASE インポート — OpenSALT 等の CASE 対応サーバーからフレームワークを直接インポート
- Docker 対応 — Docker と PostgreSQL でローカル実行、またはどこにでもデプロイ可能
| レイヤー | 技術 |
|---|---|
| API | Python 3.12, FastAPI |
| ORM | SQLAlchemy 2.x (async) |
| マイグレーション | Alembic |
| データベース | PostgreSQL |
| Web UI | Jinja2, HTMX, Tailwind CSS |
| CLI | Click, Rich |
| パッケージマネージャ | uv |
# リポジトリをクローン
git clone https://github.com/infosign/compeito.git
cd compeito
# Docker で起動
docker compose up -d
# データベースマイグレーションを実行
docker compose exec app alembic upgrade headアプリ自体を Docker の外(ホスト上で uv で直接)走らせるハイブリッド構成については docs/dev/local-setup.md を参照してください。
# テナント管理
docker compose exec app uv run python cli.py tenant create --name "大学A"
docker compose exec app uv run python cli.py tenant list --with-docs
# CSV からフレームワークをインポート
docker compose exec app uv run python cli.py import csv --tenant {uuid} --file framework.csv
# 外部 CASE サーバー(OpenSALT 等)からインポート
docker compose exec app uv run python cli.py import case-url --tenant {uuid} --url https://opensalt.net/ims/case/v1p0/CFPackages/{id}
# 編集用にエクスポート
docker compose exec app uv run python cli.py export csv --tenant {uuid} --doc {doc-uuid} --file output.csvすべてのエンドポイントは CASE v1.1 REST/JSON Binding 仕様に基づいています。
GET /{tenant}/ims/case/v1p1/CFPackages/{id}
GET /{tenant}/ims/case/v1p1/CFDocuments
GET /{tenant}/ims/case/v1p1/CFDocuments/{id}
GET /{tenant}/ims/case/v1p1/CFItems/{id}
GET /{tenant}/ims/case/v1p1/CFItems/{id}/associations
GET /{tenant}/ims/case/v1p1/CFAssociations/{id}
GET /{tenant}/ims/case/v1p1/CFAssociationGroupings
GET /{tenant}/ims/case/v1p1/CFAssociationGroupings/{id}
GET /{tenant}/ims/case/v1p1/CFConcepts
GET /{tenant}/ims/case/v1p1/CFConcepts/{id}
GET /{tenant}/ims/case/v1p1/CFItemTypes
GET /{tenant}/ims/case/v1p1/CFItemTypes/{id}
GET /{tenant}/ims/case/v1p1/CFLicenses
GET /{tenant}/ims/case/v1p1/CFLicenses/{id}
GET /{tenant}/ims/case/v1p1/CFSubjects
GET /{tenant}/ims/case/v1p1/CFSubjects/{id}
レガシーパス /ims/case/v1p0/ は /ims/case/v1p1/ にリダイレクト(301)されます。
CASE 実装のデファクトスタンダードは OpenSALT(PCG Education 開発)です。現行の安定リリース(3.2.0、2023年9月)は CASE v1.0 対応で、develop ブランチで CASE v1.1 対応の作業が進行中(2026 年中盤時点で未リリース)です。OpenSALT はフレームワーク編集機能を備えたフル機能ツールです。
COMPEITO は補完的な位置づけです: 軽量な Python / FastAPI ベースの API 配信サーバーとして CASE v1.1 を正式リリースで提供し、マルチテナント、英日両対応の UI / CLI / ドキュメントを備えます。Open Badge Factory や QTI Testing 等のコンピテンシー参照先として連携することを目指しています。OpenSALT インスタンスで公開されたフレームワークをインポートできることも重要な価値です。
- Phase 1(完了)— Docker によるローカル開発、CASE v1.1 API 全エンドポイント、CSV/CASE インポート&エクスポート、Web UI、CLI、i18n
- Phase 2(完了)— OpenSALT CSV エクスポート形式、CASE v1.0 インポート対応、CFRubric API、CI
- Phase 3 — ツリー外アソシエーション管理、OAuth 2.0、セマンティック検索、フレームワーク間マッピング
株式会社インフォザイン (Infosign, Inc.)