Project: Cyclops (App Definition and Development / Application Definition & Image Build)
File: CONTRIBUTING.md

Welcome, glad to see you here! If you are up to the challenge of contributing to Cyclops, this document will help guide you on your journey. And if you want to talk to us directly, join our where we have a `looking-to-contribute` channel. Please note we have a ; follow it in all your interactions with the project. Cyclops is a mono-repo that contains both the frontend (`UI`) and the backend (`controller`) of the platform, as well as the code for our website and documentation (`web`). controller `/cyclops-ctrl` REST API serving data about Cyclops modules (modules CRUD) listens for module changes and creates all needed resources from the template Go, UI `/cyclops-ui` shows info about modules renders form based on the module template Typescript, React, docs `/web` website with the Cyclops documentation If you are new to the project, please check out the label. If you are looking for something to work on, check out our open issues. If you have an idea for a new feature, please open an issue, and we can discuss it. If you think the documentation on our website was unclear or you found a broken link, please feel free to fix it We are also happy to help you find something to work on. Just reach out to us on . Before you start contributing, getting a feel of the project and trying it out locally is a good idea. The next chapter will go through how to run each mentioned component. But before you can start running the components, you need to set up your dev environment. If you already have a Kubernetes cluster you can use, you can skip this step. If not, don't worry, this won't take long. To run the controller, you will need a Kubernetes cluster to connect it to. For the sake of development, you can use

You can install minikube and run it using `minikube start`. It will set up a Kubernetes cluster locally and configure your kubeconfig file to point to the minikube cluster. You will need to create a new namespace for Cyclops resources ```zsh kubectl create namespace cyclops ``` Cyclops has its own which you need to install into your cluster before trying to run Cyclops. You can install it using the command below: ```zsh kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/main/install/chart/crds/cyclops-module.yaml \ -f https://raw.githubusercontent.com/cyclops-ui/cyclops/main/install/chart/crds/template-auth-rule.yaml \ -f https://raw.githubusercontent.com/cyclops-ui/cyclops/main/install/chart/crds/template-store.yaml ``` You can run the controller inside the cluster deployed as a Kubernetes deployment, described , or you can run it outside of the cluster. After you have your cluster up and running and you have installed the CRD into it, position yourself in `cyclops-ctrl` and run the command below from the terminal to start the controller. ```zsh make start ``` _NOTE_ The default port of the REST API is 8080. If you would like to change the port of the REST API, you can do it by setting the env var in the file in the `/cyclops-ctrl` UI depends on the controller API. Again, you can run inside the cluster as well as outside. To run it, position yourself in `cyclops-ui`. After that, you will need to install all the dependencies using ```zsh yarn install ``` Once dependencies are installed, you can run the UI ```zsh yarn start ``` _NOTE_ If you changed the port of the REST API, you will need to update it in the UI as well. You can run our page locally by installing the dependencies ```zsh npm i -f ``` and running the app ```zsh npm start ``` and clone it locally Create a new branch Make your changes Create a pull request back to the upstream repository (Please make sure that your PR is up-to-date with the latest changes in main) Wait for a review and address any comments