Reference implementation of the PLAN Data Model and core components

PLAN

         P.rivacy
         L.ogistics
         A.ccessibility
P  L  A  N.etworks

PLAN is a free and open platform for groups to securely communicate, collaborate, and coordinate projects and activities.

About

This repo contains PLAN's backend infrastructure that ultimately hosts plan-client-unity instances on client-facing devices. Since PLAN uses open standards, protocols, and data structures, other implementations may someday also exist, so plan-go is offered as the reference implementation.

The PLAN Design Docs lay out PLAN's architecture in detail.

Links

Team Lead Drew O'Meara
Design & Engineering Docs https://github.com/plan-systems/design-docs
PLAN Website http://plan-systems.org
License GPL-v3

Developer Setup

This library uses protobuf definitions found in the plan-protobufs repo. The *.pb.go source code files generated from those protobuf definitions has been vendored into this repository at the appropriate subpackage location. This means that if you are consuming this library for use in another application, you can simply:

go get github.com/plan-systems/plan-go

If you are contributing new features to plan-go, you may end up needing to update the generated *.pb.go source. To do that, you'll need to do the following:

  1. Set up Gprc.Tools:

    1. Download the latest Grpc.Tools nuget package

      curl -Lso "grpc.tools.1.22.0.nupkg" \
          "https://www.nuget.org/api/v2/package/Grpc.Tools/1.22.0"
      
    2. Unzip the nuget pkg zip file using unzip.

      Don't use macOS's default unarchiver since it does not restore .nupkg filenames properly. Instead:

      unzip grpc.tools.1.22.0.nupkg -d Grpc.Tools
      
    3. Copy the binary appropriate for your platform to somewhere on your $PATH and give it executable permissions:

      cp ./Grpc.Tools/tools/macosx_x64/protoc  /usr/local/bin
      cp ./Grpc.Tools/tools/linux_x64/protoc   /usr/local/bin
      cp ./Grpc.Tools/tools/windows_x64/protoc /usr/local/bin
      
      chmod +x /usr/local/bin/protoc
      
  2. Ensure your $PATH contains your $GOPATH's bin directory:

    # if you have GOPATH set:
    PATH="${PATH}:${GOPATH}/bin"
    
    # if you don't have GOPATH set:
    PATH="${PATH}:~/go/bin"
    
  3. Install gogo protobufs:

    go get -u github.com/gogo/protobuf/protoc-gen-gofast

  4. Install gRPC:

    go get -u google.golang.org/grpc

  5. Invoke the build scripts, giving it the path to the protobufs files and this repo. Then commit the changes:

    ./build-protobufs.sh --protos ../plan-protobufs/pkg --dest .
    git add .
    git commit -m "updated protobufs from v1.2.3"
    
  6. Pick up your lambo.

Similar Resources

An opinionated clean fork of v2fly/v2ray-core

v2ray-go An opinionated fork of v2fly/v2ray-core. Additional Features 📅 Add flag -suppressTimestamps to suppress timestamps in logs 🔌 Refine systemd

Nov 21, 2022

Courier Order Provider is a service that receives signals from core server in order to emit this orders to courier groups.

Courier Order Provider Courier Order Provider is a service that receives signals(messages) from core server in order to emit this orders to courier gr

Nov 4, 2021

Poseidon -- An Enhanced V2Ray(based on v2ray-core)

Poseidon -- An Enhanced V2Ray(based on v2ray-core) Support SSRPanel(VNetPanel), V2board, SSpanel-v3-Uim Features Sync user from your panel to v2ray Lo

Nov 14, 2021

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.

Project X Project X originates from XTLS protocol, provides a set of network tools such as Xray-core and Xray-flutter. License Mozilla Public License

Jan 7, 2023

Nid-core - nID Framework For Golang

nID Framework nID Framework The nID Framework is a reference architecture and co

Apr 19, 2022

POKTwatch pocket-core fork

POKTwatch pocket-core fork

Pocket Core Official golang implementation of the Pocket Network Protocol. Overview The Pocket Core application will allow anyone to spin up a Pocket

Jan 10, 2022

Dcfs-core - Dcfs Smart Chain With Golang

Dcfs Smart Chain The goal of Dcfs Smart Chain is to bring programmability and in

Jan 12, 2022

ULE - Rust-based minecraft server core

ULE - Minecraft's server core written in Rust This's server core fully written i

Jan 6, 2023

Build - The axelar-core app based on the Cosmos SDK is the main application of the axelar network

⚠️ ⚠️ ⚠️ THIS IS A WORK IN PROGRESS ⚠️ ⚠️ ⚠️ axelar-core The axelar-core app bas

Feb 15, 2022
Related tags
whatsup is the reference server implementation for the fmrl protocol

whatsup whatsup is the reference server implementation for the fmrl protocol. Currently whatsup has no web interface, but may gain one in the future.

Mar 25, 2022
Core is the next-generation digital data engine.
Core is the next-generation digital data engine.

tKeel-Core The digital engine of world ?? Core is the data centre of the tKeel IoT Open Platform, a high-performance, scalable and lightweight next-ge

Mar 28, 2022
Exposure Notification Reference Server | Covid-19 Exposure Notifications

Exposure Notification Reference Key Server COVID‑19 Exposure Notifications API Exposure Notification Reference Key Server Documentation In our continu

Jan 7, 2023
Super fault-tolerant gateway for HTTP clusters, written in Go. White paper for reference - https://github.com/gptankit/serviceq-paper
Super fault-tolerant gateway for HTTP clusters, written in Go. White paper for reference - https://github.com/gptankit/serviceq-paper

ServiceQ ServiceQ is a fault-tolerant gateway for HTTP clusters. It employs probabilistic routing to distribute load during partial cluster shutdown (

Jul 16, 2022
Kubernetes Custom Resource API Reference Docs generator

Kubernetes Custom Resource API Reference Docs generator If you have a project that is Custom Resource Definitions and wanted to generate API Reference

Dec 7, 2021
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
Baseledger core consensus for running validator, full and seed nodes

baseledger-core Baseledger core consensus client for running a validator, full or seed node. ⚠️ WARNING: this code has not been audited and is not rea

Jan 13, 2022
Go-libp2p-core. - Home to the interfaces and abstractions that make up go-libp2p

go-libp2p-core Home to the interfaces and abstractions that make up go-libp2p. I

Jan 17, 2022
Yet another SIP003 plugin for shadowsocks, based on Xray-core

Yet another SIP003 plugin for shadowsocks, based on Xray-core Build go build Usage See command line args for advanced usages.

Jan 8, 2023
Open source 5G core network base on 3GPP R15
Open source 5G core network base on 3GPP R15

What is free5GC The free5GC is an open-source project for 5th generation (5G) mobile core networks. The ultimate goal of this project is to implement

Jan 4, 2023