Project repository and structure reorganization draft
milestone: R0-pre
severity: high
state: pre-implementation
author: Anton Afanasyeu
date: 2026-06-18

The problem:
The project looks like monolith. For better and more atomic support we need to reorganize the whole project repo structure


The what:
Current project structure
Project                         | Placement                     | Repo                                              | State                       | Description
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AndroidCast all in one          | repo root                     | git://f0xx.org/android_cast                       | monolithic                  | all-in-one project, needs to be splitted
libvpx                          | third-party/libvpx            | https://chromium.googlesource.com/webm/libvpx     | 3rdparty exported submodule | VPx video codecs
opus                            | third-party/opus              | https://github.com/xiph/opus                      | 3rdparty exported submodule | Opus voice codec
speex                           | third-party/speex             | https://github.com/xiph/speex/                    | 3rdparty exported submodule | Speex voice codec
wireguard                       | third-party/wireguard-android | https://git.zx2c4.com/wireguard-android           | 3rdparty exported submodule | wireguard for android
url-shortener                   | backend/url-shortener         | git://f0xx.org/androidcast_project/url-shortener  | part of AndroidCast backend | url shortener standalone backend
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The how:
Next hope project structure

AndroidCast project - all in one  | git://f0xx.org/ac
  |-- AndroidCast - common        | @common
  |-- AndroidCast - mobile        | @mobile
  |-- AndroidCast - BE            | @backend
... TBD


AndroidCast project           | Placement (@ - submodule)     | Description                                   |  Repo
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AndroidCast - common          | @common                       | project all common                            | git://f0xx.org/ac/ac-common
  |-- AndroidCast - docs      | @docs                         | project docs, BE, MS, mobile, web, everything | git://f0xx.org/ac/ac-docs
  |-- AndroidCast - scripts   | @scripts                      | common project scripts                        | git://f0xx.org/ac/ac-scripts
AndroidCast - mobile          | @mobile                       | mobile app sources                            | git://f0xx.org/ac/ac-mobile
  |-- AndroidCast - common    | @common                       |                                               | git://f0xx.org/ac/ac-common
AndroidCast - Session Studio  | @session-studio               | offline analytic tools                        | git://f0xx.org/ac/ac-session-studio
  |-- AndroidCast - common    | @common                       |                                               | git://f0xx.org/ac/ac-common
AndroidCast - BE - MS         | @backend                      | backend microservices common base (UI)        | git://f0xx.org/ac/ac-be-microservice
  |-- AndroidCast - common    | @common                       |                                               | git://f0xx.org/ac/ac-common
AndroidCast - MS              | @microservices                | microservice commons                          | git://f0xx.org/ac/ac-microservice
  |-- AndroidCast - common    | @common                       |                                               | git://f0xx.org/ac/ac-common
... TBD


AndroidCast BE microservices and their derivatives (OpenAPI providers, any REST API services for web and mobile apps)
AndroidCast - MS - template <- AndroidCast - MS (@ means suibmodule)                                        |git://f0xx.org/ac/ac-microservice/ac-ms-template 
  | -- AndroidCast - common                     | @common           | project all common                    | git://f0xx.org/ac/ac-common
  | -- AndroidCast - MS - common                | @ms-common        | microservices common                  | git://f0xx.org/ac/ac-microservice/ac-ms-common
    |-- AndroidCast - MS - builder              | @ms-builder       | builder microservice                  | git://f0xx.org/ac/ac-microservice/ac-ms-builder
    |-- AndroidCast - MS - VPN                  | @ms-vpn           | VPN microservice                      | git://f0xx.org/ac/ac-microservice/ac-ms-vpn
      |-- AndroidCast - MS - VPN - RSSH         | @ms-vpn-rssh      | VPN RSSH microservice                 | git://f0xx.org/ac/ac-microservice/ac-ms-vpn-rssh
      |-- AndroidCast - MS - VPN - WireGuard    | @ms-vpn-wireguard | VPN WG microservice                   | git://f0xx.org/ac/ac-microservice/ac-ms-vpn-wireguard
    |-- AndroidCast - MS - VCS                  | @ms-vcs           | VCS  microservice (gitea)             | git://f0xx.org/ac/ac-microservice/ac-ms-vcs
    |-- AndroidCast - MS - URL shortener        | @ms-url-shortener | URL shortener microservice            | git://f0xx.org/ac/ac-microservice/ac-ms-url-shortener
    |-- AndroidCast - MS - analytics            | @ms-analytics     | analytics microservice                | git://f0xx.org/ac/ac-microservice/ac-ms-analytics
    |-- AndroidCast - MS - orchestration        | @ms-orchestration | orchestration microservice            | git://f0xx.org/ac/ac-microservice/ac-ms-orchestration
    |-- AndroidCast - MS - tracker              | @ms-tracker       | issues & tickets tracker microservice | git://f0xx.org/ac/ac-microservice/ac-ms-tracker
    |-- AndroidCast - MS - RBAC                 | @ms-rbac          | RBAC microservice                     | git://f0xx.org/ac/ac-microservice/ac-ms-rbac
... TBD


Sub-project of AndroidCast BE/MS, mostly Web UI stuff, but also should be OpenAPI-compatible and provide services to the mobile app (@ means suibmodule)
AndroidCast - BE - common <- AndroidCast - BE - MS              | git://f0xx.org/ac/ac-backend
  |-- AndroidCast - BE - vcs (UI)           | @be-vcs           | VCS frontend, former gitea, backend UI  | git://f0xx.org/ac/ac-backend/ac-be-vcs
    |-- AndroidCast - MS - vcs              | @ms-vcs           | VCS microservice (gitea)                | git://f0xx.org/ac/ac-microservice/ac-ms-vcs
  |-- AndroidCast - BE - console (UI)       | @be-console       | git://f0xx.org/ac/ac-backend/ac-be-console              | primary console, ./examples/build_console ? check if it is
    |-- AndroidCast - MS - common           | @ms-common        | git://f0xx.org/ac/ac-microservice/ac-ms-common          | microservice commons
  |-- AndroidCast - BE - landing (UI)       | @be-landing       | git://f0xx.org/ac/ac-backend/ac-be-landing              | landing page(s), now in ./examples/app_hub
    |-- AndroidCast - MS - common           | @ms-common        | git://f0xx.org/ac/ac-microservice/ac-ms-common          | microservice commons
  |-- AndroidCast - BE - issues (UI)        | @be-issues        | git://f0xx.org/ac/ac-backend/ac-be-issues               | issues tracker UI, now is in ./examples somewhere
    |-- AndroidCast - MS - tracker          | @ms-tracker       | git://f0xx.org/ac/ac-microservice/ac-ms-tracker         | issues tracker microservice shared base, now is in ./examples somewhere
  |-- AndroidCast - BE - tickets (UI)       | @be-tickets       | git://f0xx.org/ac/ac-backend/ac-be-tickets              | tickets UI, now is in ./examples somewhere
    |-- AndroidCast - MS - tracker          | @ms-tracker       | git://f0xx.org/ac/ac-microservice/ac-ms-tracker         | issues tracker microservice shared base, now is in ./examples somewhere
  |-- AndroidCast - BE - graphs (UI)        | @be-graphs        | git://f0xx.org/ac/ac-backend/ac-be-graphs               | graphs UI, now somewhere in ./examples
    |-- AndroidCast - MS - analytics        | @ms-analytics     | git://f0xx.org/ac/ac-microservice/ac-ms-analytics       | analytics base microservice
  |-- AndroidCast - BE - analytics (UI)     | @be-analytics     | git://f0xx.org/ac/ac-backend/ac-be-analytics            | analytics and statistics web UI
    |-- AndroidCast - MS - analytics        | @ms-analytics     | git://f0xx.org/ac/ac-microservice/ac-ms-analytics       | analytics base microservice
  |-- AndroidCast - BE - remote access (UI) | @be-remote-access | git://f0xx.org/ac/ac-backend/ac-be-remote-access        | remote access (now for vpn, somewhere in ./examples now) UI
    |-- AndroidCast - MS - common           | @ms-commmon       | git://f0xx.org/ac/ac-microservice/ac-ms-common          | microservice commons
    |-- AndroidCast - MS - VPN              | @ms-vpn           | git://f0xx.org/ac/ac-microservice/ac-ms-vpn             | VPN MS as a dependency
    |-- AndroidCast - MS - RBAC | @ms-rbac  | @ms-rbac          | git://f0xx.org/ac/ac-microservice/ac-ms-rbac            | RBAC MS as a dependency
  |-- AndroidCast - BE - URL shortener (UI) | @be-url-shortener | git://f0xx.org/ac/ac-backend/ac-be-url-shortener        | URL shortener UI, now is in separate submodule
    |-- AndroidCast - MS - URL shortener    | @ms-url-shortener | git://f0xx.org/ac/ac-microservice/ac-ms-url-shortener   | URL shortener microservice, now is in separate submodule
  |-- AndroidCast - BE - builder (UI)       | @be-builder       | git://f0xx.org/ac/ac-backend/ac-be-builder              | orchestration builder UI, now in ./orchestration
    |-- AndroidCast - MS - orchestration    | @ms-orchestration | git://f0xx.org/ac/ac-microservice/ac-ms-orchestration   | orchestration microservice, now in ./orchestration
  |-- AndroidCast - BE - RBAC (UI)          | @be-rbac          | git://f0xx.org/ac/ac-backend/ac-be-rbac                 | RBAC backend, now mixed within ./examples somewhere
    |-- AndroidCast - MS - common           | @ms-common        | git://f0xx.org/ac/ac-microservice/ac-ms-common          | microservice commons
    |-- AndroidCast - MS - RBAC             | @ms-rbac          | git://f0xx.org/ac/ac-microservice/ac-ms-rbac            | RBAC microservice
  |-- AndroidCast - BE - OTA                | @be-ota           | git://f0xx.org/ac/ac-backend/ac-be-ota                  | OTA BE UI
    |-- AndroidCast - MS - OTA              | @ms-ota           | git://f0xx.org/ac/ac-microservice/ac-ms-ota             | OTA microservice, now intermixed in examples/ota and other commons
... TBD

ms-common (microservices common) needs a sharp eye, it may share project sensitive parts, like common stuff such as shared web sessions, DB access (or should be separated to @be-db-service/@ac-db-service sort of)
