move contribution docs to the official docs repo

This commit is contained in:
shatoboar
2022-06-28 13:46:11 +02:00
parent 841fa44072
commit 2ddf24c7eb

View File

@@ -1,83 +0,0 @@
# Contribution
### To start developing Netbird
**You have a working Go environment**
Clone the project into your preferred path. We recommend just cloning into the GOPATH.
```
mkdir -p $GOPATH/src/github.com/netbirdio
cd $GOPATH/src/github.com/netbirdio
git clone git@github.com:netbirdio/netbird.git
cd netbird
go build ./...
```
**_Sidenote_** _`libayatana-appindicator3-dev` might be needed for developing on debian based distros._
**To run the tests execute:**
```
go test -exec sudo ./...
```
The tests need to be executed by a superuser,
because to run the integration tests we need to create network interfaces.
### Code Structure
The codebase is structured in 3 big components:
* Client
* Server
* Signal
* Dashboard (separate [repository](https://github.com/netbirdio/dashboard))
Refer to [architecture documentation](https://netbird.io/docs/overview/architecture) for more information.
---
### CLIENT
The Client consists of three different components.
##### Daemon
```
client/server # daemon server that runs in the background
client/proto # grpc daemon server listening to either the CLI or UI for requests
management/client # grpc client that connects to the management server
```
The Daemon runs in the background, and keeps the connection running.
##### CLI
We use [Cobra](https://github.com/spf13/cobra) as our CLI framework
```
client/cmd # All CLI commands are defined and implemented here
client/cmd/root.go # All commands are registered in root.go
```
##### UI-App
We use [systray](https://github.com/getlantern/systray) and [fyne](https://github.com/fyne-io/fyne) to write a UI application for the Systemtray.
```
client/ui # All UI elements implemented here
```
---
### MANAGEMENT
```
management/cmd # These are the CLI commands for starting the management server
management/proto # Management proto server for client
management/server # This is the actual management server, responsible for IDP and managing
```
---
### SIGNAL
```
signal/server
```
---
### DASHBOARD