Files
netbird/docs/contribution.md
2022-06-22 17:21:36 +02:00

2.0 KiB

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)

Refer to architecture documentation 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 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 and 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