OSS Repository Structure
We have one repository for each program.
These repositories contain a lot of different parts and can initially seem to be overwhelming - so let's break the repository folder structure (and important files) down one by one on the example of our marketplace repository:
.github | parts for our CI/CD pipeline
clients | generated clients to interact with the program
anchor | only used for legacy clients, can be ignored
js | JavaScript client
src | source code of the client
generated | core part of the client, autogenerated with kinobi
accounts | on-chain accounts types
errors | error types and their corresponding error code
instructions | instructions, their arguments and functions to retrieve them
pdas | program derived addresses and the seeds used to derive them
programs | useful functionality for identifying instructions and accounts
shared | autogenerated helper functions, can be ignored
types | types defined by the program, mostly used for custom instruction arguments
hooked | custom helper functions, resolvers, types etc.
test | integration tests
rust | Rust client
src | source code of the client
generated | core part of the client, autogenerated with kinobi
accounts | on-chain accounts types
errors | error types and their corresponding error code
instructions | instructions, their arguments and functions to retrieve them
types | types defined by the program, mostly used for custom instruction arguments
cpitest | tests for cross program invocations
examples | exemplary usage of the clients
program | on-chain rust program source code
instructions | source code for instructions
- idl.json | contains the program's IDL
scripts | scripts to customize client generation, building, testing etc
client | client testing scripts
kinobi | together with
generate-clients.mjs
used for generating clients and adding custom logic into generated clients- generate-clients.mjs | main kinobi script, used to generate all clients and customize them
Updated about 2 months ago