This is the main repo for Cardstack, an open source application architecture for building cohesive experiences, including payments, on open, decentralized infrastructure.
Join the discussion around developing on the Cardstack framework on Discord, and read our documentation on docs.cardstack.com. (Note: documentation refers to Cardstack v2. The main branch of this respository has in-progress work on v3 of Cardstack.)
This is a monorepo. Each directory under packages
and cards
is distributed as a standalone NPM package under the @cardstack
NPM namespace.
More information is available in the README.md
within each package
.
Set up app.cardstack.test
and app-assets.cardstack.test
to resolve to localhost (127.0.0.1). There are a variety of ways to accomplish this, with the most direct being to edit your /etc/hosts file.
See the README in the hub package for environment variables that you'll need to setup.
To retrieve environment variables for waypoint in a more readable way as an alternative to waypoint config get
, you can use the convenience script yarn waypoint-vars
.
// prints a table of variables, with values truncated for readability
yarn waypoint-vars
// prints JSON of variables that contain any of the strings provided (case-insensitive), full values
yarn waypoint-vars VAR_NAME1 VAR_NAME2
We use volta
to manage our global javascript dependencies. In this case, specifically, we use it to manage node and yarn. To use it simply install it following the instructions here: https://docs.volta.sh/guide/getting-started
In development, we use lerna
to manage the inter-dependencies of all the packages. To get started:
yarn global add lerna
(use >= 2.0.0 for yarn workspaces integration)lerna bootstrap
yarn compile --watch
yarn start
and/or run tests with yarn test
If you use Visual Studio Code and work on the boxel, web-client or ssr-web packages, we recommend the following extensions to make working with glint and gts files better:
Note that you will see TypeScript errors shown twice if you have the built-in VS Code TypeScript extension running as well as the Glint extension. You may also see some spurious errors from the built-in extension, because it does not understand the template
tag. It can be beneficial to turn off the built-in TS extension when working purely in a workspace that is configured for glint, since glint is performing a super set of TS validation. To find the built-in extension in the extensions list to disable it, you will need to search for "@builtin typescript".
The following summary offers an overview of where development is currently ongoing at Cardstack. (Note: any projects linked below that are not currently public will become public soon.)
cardstack/tokenbridge-contracts
https://github.com/cardstack/card-protocol-relay-service
cardstack/safe-transaction-service
cardstack/animations-experiment
Cardstack follows semantic versioning. As a young, pre-1.0 project, this means you can continue to expect breaking changes in minor releases. Each package should endeavor to include a CHANGELOG.md once it begins to have a non-trivial number of external users.
We intend to adopt a community RFC governance process for public API changes, based on the Rust and Ember projects. At this pre-1.0 stage, RFCs are optional and changes may still be fast and furious.
Cardstack follows the Ember Community Guidelines, both because we are a proper subset of the existing Ember community and because we wholeheartedly endorse the same values.
Generated using TypeDoc