We propose a quick guide to learn how to contribute.
## Project structure
The main structure of the code base is as follows:
-`charts`: helm chart
-`cmds`: includes the project Golang entrypoints
-`docs`: project documentation
-`internal`: contains the explorer API logic and the cert manager implementation, this where most of the feature work will be done
-`pkg`: contains client implementation and shared libs
-`tests`: integration tests
-`tools`: DB tools to prepare the Postgres DB for testing and development
-`rootfs`: ZOS root endpoint that will be mounted in the docker image
### Internal
-`explorer`: contains the explorer server logic:
-`db`: the db connection and operations
-`mw`: defines the generic action mount that will be be used as http handler
-`certmanager`: logic to ensure certificates are available and up to date
`server.go` includes the logic for all the API operations.
### Pkg
-`client`: client implementation
-`types`: defines all the API objects
## Writing tests
Adding a new endpoint should be accompanied with a corresponding test. Ideally every change or bug fix should include a test to ensure the new behavior/fix is working as intended.
Since these are integration tests, you need to first make sure that your local db is already seeded with the ncessary data. See tools [doc](db_testing.md) for more information about how to prepare your db.