{"id":41995873,"url":"https://github.com/coronanet/go-coronanet","last_synced_at":"2026-02-04T23:00:45.618Z","repository":{"id":123580941,"uuid":"247754235","full_name":"coronanet/go-coronanet","owner":"coronanet","description":"Go implementation of the Corona Network","archived":false,"fork":false,"pushed_at":"2020-04-16T08:17:33.000Z","size":1240,"stargazers_count":36,"open_issues_count":7,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-06-20T15:39:43.506Z","etag":null,"topics":["corona","distance","golang","network","p2p","social","virus"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coronanet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-03-16T15:54:36.000Z","updated_at":"2024-01-18T12:32:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"320fc36f-11b0-40cf-af07-e28ed0d1f07a","html_url":"https://github.com/coronanet/go-coronanet","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/coronanet/go-coronanet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coronanet%2Fgo-coronanet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coronanet%2Fgo-coronanet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coronanet%2Fgo-coronanet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coronanet%2Fgo-coronanet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coronanet","download_url":"https://codeload.github.com/coronanet/go-coronanet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coronanet%2Fgo-coronanet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29098812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T22:44:52.815Z","status":"ssl_error","status_checked_at":"2026-02-04T22:44:16.428Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["corona","distance","golang","network","p2p","social","virus"],"created_at":"2026-01-26T01:00:27.864Z","updated_at":"2026-02-04T23:00:45.611Z","avatar_url":"https://github.com/coronanet.png","language":"Go","funding_links":[],"categories":["Languages"],"sub_categories":["Go"],"readme":":exclamation: *This project is currently in the phase of figuring out the absolute minimum requirements to be useful; and creating a feasibility study (live networking code) to support those requirements. When the networking seems usable, we'll go for a interfaceable proof-of-concept, but not before. There's a concurrent mock UI experiment in [`rn-coronanet`](https://github.com/coronanet/rn-coronanet) for the frontend side of things, which also blocks the PoC work to avoid wasting time.* :exclamation:\n\n---\n\n## Interfacing\n\nThe Corona Network is a decentralized peer-to-peer social network. Instead of a cloud or backend server, this library itself is providing the APIs that thin clients (i.e. mobile user interfaces) rely on. This is done via hosting a local HTTP server that substitutes *\"the cloud\"*, in reality being a gateway into a distributed world.\n\nFor a long rundown behind the model with regard to rationales, privacy concerns and security concerns, please see the [`go-ghostbridge`](https://github.com/ipsn/go-ghostbridge) project. As a quick TL;DR:\n\n* *Emulating* a cloud through a REST API permits us to naturally build a React Native interface on top (see [`rn-coronanet`](https://github.com/coronanet/rn-coronanet)). Crossing over from React Native to Java to C to Go via language bindings is not sustainable.\n* Securing the data traffic between the React Native user interface and the REST API server is done through HTTPS via ephemeral server side SSL certificates injected directly into the client on startup.\n* Securing the API server from unauthenticated access is done through ephemeral API tokens injected directly into the client on startup.\n\nYou can check the latest version of the API spec [through Swagger](https://editor.swagger.io/?url=https://raw.githubusercontent.com/coronanet/go-coronanet/master/spec/api.yaml).\n\n## How to build\n\nThe Corona Network protocol is written in [Go](https://golang.org/). If you want to contribute to this part of the code, you need to have a valid Go installation. We are also using [Go modules](https://blog.golang.org/using-go-modules), please familiarize yourself with them if they are new to you. You will also need a C compiler as certain dependencies of this project are in C.\n\nIf you can run `go install` in the repo root successfully, you're halfway there!\n\nGo is one prerequisite, but it's not the only one. The main platform we are aiming for are mobile phones, so this project also needs to compile to them. We use [`gomobile`](https://github.com/golang/mobile/) to create the library archives that can be imported into mobile projects. You do not need to be familiar with `gomobile`, but you need to be able to run it.\n\nYou can install `gomobile` via:\n\n```\n$ go get -u golang.org/x/mobile/cmd/gomobile\n$ go get -u golang.org/x/mobile/cmd/gobind\n```\n\n### Android\n\nTo build the Android library archive (`.aar`), you need to have an Android SDK and NDK installed and the `ANDROID_HOME` environment variable correctly set. Please consult the Android docs if you're stuck. You might want to do it through [Android Studio](https://developer.android.com/studio). We're not going to use the Android Studio at all, but it's an easy way to manage your SDKs and Android emulators.\n\nOnce Android is configured, you can build `go-coronanet` via:\n\n```\n$ gomobile bind --target android --javapkg xyz.coronanet -v -x -o coronanet.aar github.com/coronanet/go-coronanet/bridge\n```\n\nThe first time you do the above, it will take a **LOT** of time. I'm not kidding, on the order of **30 minutes**, as it needs to build some humongous C dependencies for 4 different architectures (x86, x86_64, arm, arm64). The good news is that subsequent builds will be fast(er).\n\n```\n$ ls -al | grep coronanet\n\n-rw-r--r-- 1 karalabe karalabe 46961891 Mar 16 19:19 coronanet.aar\n-rw-r--r-- 1 karalabe karalabe     6383 Mar 16 19:19 coronanet-sources.jar\n```\n\nWhoa, that final binary size is insane. Yes it is, but it does contain 4 architectures + debug symbols. Long term a proper build system could make things a bit more pleasant. Optimizing app size is not relevant at this phase, simplicity and portability are more useful.\n\n### iOS\n\niOS is not planned for the initial MVP to keep the scope smaller. A lot of prerequisite work needs to be done on supporting infra first ([`go-libtor`](https://github.com/ipsn/go-libtor), [`go-ghostbridge`](https://github.com/ipsn/go-ghostbridge), etc), which is wasted time until it's proven to be worth it.\n\n## Contributing\n\nThis project is an experiment.\n\nI'm very grateful for any and all contributions, but you must be aware that there are yet-unsolved challenges around running a decentralized social network. There's a fair probability that the project will flop, invest your time accordingly.\n\nThe goal of the Corona Network is to be a tiny, *use-case specific decentralized social network with privacy and security* above all else. If it cannot be done within these constraints, it won't be done. **No cloud, no server, no tracking.**\n\n## License\n\nI don't know. This project contains a lot of my free time and a lot of my past ideas and work distilled down. I'm happy to give it all away for making the world a nicer place, but I am not willing to accept anyone making money off of it. Open to suggestions.\n\nUntil the above is figured out, contributors agree to grant their code to me ([@karalabe](https://github.com/karalabe)).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoronanet%2Fgo-coronanet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoronanet%2Fgo-coronanet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoronanet%2Fgo-coronanet/lists"}