MCPcopy Index your code
hub / github.com/bcgov/traction

github.com/bcgov/traction @v1.4.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.4.1 ↗ · + Follow
1,427 symbols 3,502 edges 235 files 435 documented · 30%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Traction

Traction Logo

License Lifecycle:Maturing Maintainability

Table of Contents

What is Traction?

Traction is a digital wallet solution comprised of plugins layered on top of OpenWallet Foundation ACA-Py and streamlines the process of sending and receiving digital credentials for governments and organizations.

Its open-source foundation makes it easy to integrate digital trust technology into existing lines of business applications, without having to stand up, maintain and manage an instance of ACA-Py themselves. Future functionality could include machine-readable governance and more.

Arch Diagram

Play in the Traction Sandbox

Establish your own Traction tenant in a B.C. Government sandbox to issue, hold, present, and verify digital credentials using these setup instructions.

Disclaimer: On the 1st and 15th of each month, the entire sandbox gets reset and all your work will be gone.

Start using Traction

Running Traction: to run a local instance of traction, see the documentation in scripts.

Deploying Traction: Helm charts for deploying Traction to Kubernetes: charts.

What are the benefits of using Traction?

Traction makes it easier to integrate digital trust technology into existing line of business applications.

  • API-first Architecture: Traction is designed with an API-first architecture, this RESTful API allows for integration into existing line-of-business applications already being used by organizations, the Tenant user interface is built on this API to enable adoption prior to integration and for low-use functions.
  • Enhanced Interoperability: OWF ACA-Py makes Traction more broadly compatible with existing technologies used by governments and organizations around the world.
  • Multi-tenancy: Rather than having multiple digital tools to integrate with organizations, one scalable instance of Traction can be used to participate in the digital trust ecosystem, control all connections, and more easily share data.
  • Higher Scalability: Traction is open-source technology, encouraging collaborative refinement, faster release, and higher scalability.

What is Traction comprised of?

Start contributing to Traction

Traction is an open-source technology project that welcomes collaboration.

If you would like to contribute to Traction, please review the following:

Developers: devcontainers

To aid in developers, there are 2 devcontainers: plugins and tenant-ui.

The devcontainers and associated vscode launch files are for convenience only, they are not mandatory for developing and debugging. Please feel free to develop anyway you choose.

  1. In VS code, open plugins.
  2. Follow all prompts to open the devcontainer.
  3. In a second VS Code window, open services/tenant-ui
  4. Follow all prompts to open the devcontainer.
  5. in plugins, start up the ACA-Py / Traction instance: Run and Debug view, "Run/Debug Plugin", start/F5
  6. in services/tenant-ui, start up the backend api: Run and Debug view, "backend - run dev", start/F5
  7. in services/tenant-ui, start up the frontend api: Run and Debug view, "frontend - run dev", start/F5
  8. in services/tenant-ui, load a Chrome browser for debugging frontend: Run and Debug view, "frontend - chrome", start/F5

If all starts up without a hitch, then you should be able to breakpoint the tenant-ui frontend (Vue/Chrome), tenant-ui backend api (Node.js) and traction plugins (Python) for local debugging.

Out of the box, the above will use the following ports:

  • ACA-Py/Traction Plugins: 3000, 3001 (admin)
  • Tenant Proxy: 8032
  • Traction DB: 5432
  • Tenant UI backend server: 8080
  • Tenant UI frontend server: 5173

Note that Tenant Proxy and Traction DB are started via docker compose when starting ACA-Py/Traction Plugins

Repository workflow

Currently authorized users can create a branch and run a pull request to merge in changes. Unauthorized can always create a fork.

Rebasing of a branch

git fetch --all
git pull

git rebase origin/main
git push --force

How is Traction licensed?

Traction is licensed under Apache License 2.0 which can be reviewed here.

Engage with the community

Connect with others - for ACA-Py discussion see the OWF ACA-Py Github for links to discussion forums

Extension points exported contracts — how you extend this code

LoginParameters (Interface)
* The format of the token request is:
services/tenant-ui/frontend/src/store/innkeeper/innkeeperTokenStore.ts
paths (Interface)
(no doc)
services/tenant-ui/frontend/schema.ts
components (Interface)
(no doc)
services/tenant-ui/frontend/schema.ts
operations (Interface)
(no doc)
services/tenant-ui/frontend/schema.ts
Props (Interface)
(no doc)
services/tenant-ui/frontend/test/components/common/LoadingLabel.test.ts

Core symbols most depended-on inside this repo

fullPathWithProxyTenant
called by 98
services/tenant-ui/frontend/test/__mocks__/api/routes/utils/utils.ts
testSuccessResponse
called by 41
services/tenant-ui/frontend/test/commonTests.ts
testErrorResponse
called by 37
services/tenant-ui/frontend/test/commonTests.ts
serialize
called by 27
plugins/traction_innkeeper/traction_innkeeper/v1_0/innkeeper/config.py
filter
called by 17
plugins/traction_innkeeper/traction_innkeeper/v1_0/tenant/__init__.py
query_by_wallet_id
called by 14
plugins/traction_innkeeper/traction_innkeeper/v1_0/innkeeper/models.py
fetchItem
called by 13
services/tenant-ui/frontend/src/store/utils/fetchItem.ts
fetchList
called by 12
services/tenant-ui/frontend/src/store/utils/fetchList.ts

Shape

Function 684
Interface 449
Route 112
Method 107
Class 75

Languages

Python53%
TypeScript47%

Modules by API surface

services/tenant-ui/frontend/src/types/acapyApi/acapyInterface.ts423 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_innkeeper_routes.py57 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/innkeeper/routes.py52 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_tenant_manager.py49 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_schema_storage_service.py40 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_tenant_routes.py37 symbols
scripts/webvh-e2e/traction_client.py33 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_schema_storage_routes.py33 symbols
services/tenant-ui/frontend/src/store/tenantStore.ts31 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/innkeeper/models.py31 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_endorser_connection_service.py30 symbols
plugins/traction_innkeeper/traction_innkeeper/v1_0/tests/test_creddef_storage_service.py30 symbols

For agents

$ claude mcp add traction \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact