Cardstack App Suite
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
cards is distributed as a standalone NPM package under the
@cardstack NPM namespace.
More information is available in the
README.md within each
Developing and Testing within this Repo
Local host names
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.
Hub environment variables
See the README in the hub package for environment variables that you'll need to setup.
In development, we use
lerna to manage the inter-dependencies of all the packages. To get started:
- Install node and yarn via volta.
yarn global add lerna(use >= 2.0.0 for yarn workspaces integration)
- Launch the typescript compiler with
yarn compile --watch
- Start ember-cli and the hub node server with
yarn startand/or run tests with
Understanding the respositories under the Cardstack organization
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.)
- The Layer 2 contracts for the card protocol live here including
- PrepaidCardManager contract
- RevenuePool contract
- L2 Token contract
- SPEND token contract
- BridgeUtilities contract (facilitates token bridge contract)
- The home bridge and foreign bridge token contracts
- our gnosis relay service, forked to provide additional prepaid card manager API's that support gasless interactions with our PrepaidCardManager contract
- our gnosis transaction service, this was forked to provide transaction service for Sokol (xDai uses the gnosis hosted transaction service)
- this one! It is our monorepo that contains our CardPay Dapp (as well as eventually cardstack hub runtime). Work on the "card compiler" is also occurring in PRs of this repository. A proof-of-concept for the dapp was developed here: https://github.com/cardstack/card-pay/tree/update-UI-depot
- our rainbow wallet fork that supplies our mobile client experience. Currently it is focused around interacting with Layer 1 contracts, eventually we see it as interacting with the Layer2 protocol as well. A proof-of-concept was developed here: https://github.com/cardstack/rainbow/branches
- Holds our terraform scripts to provision AWS and cloudflare (and eventually GCP) services for our infrastructure.
- our web UI component library
- proof of concept for an animation library that works well with Ember and meets Boxel's motion needs
Project-wide Policy and Community Governance
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.