Skip to content

Repository Structure

amirsadraabdollahi edited this page Jul 28, 2026 · 6 revisions

Repository Folder Structure

  • Image build/push and cluster deploy are handled by GitHub Actions (.github/workflows/build-and-deploy.yml), which builds to GHCR and deploys to the k3s rodan namespace. (The old DockerHub autobuild hooks are no longer used.)
  • the scripts folder (/scripts) holds miscellaneous files and scripts, like the default environment variables file for Rodan and cronjobs scripts
  • Each folder houses their own container needed to run the Rodan service (except: hooks, redis, scripts)

Docker Container/Services Folder Structure

Each service has its own folder, and they all hold the same folder structure.

  • The code folders (eg: rodan-main/code, rodan-client/code) are submodules for their respective repositories.
  • The config folders (eg: nginx/config, rodan-client/config) houses configuration files for the container.
  • The scripts folder (eg: rodan-client/scripts) point to start scripts and docker entry points for their respective containers. These scripts exist to help you for that specific container. There can also be scripts to help build the service outside of the dockerfile.
  • The maintenance folder (eg: postgres/maintenance) is a collection of database maintenance scripts. These are vital to backups, do not change them unless you know what you are doing.

The Makefile

The Makefile is meant to make your life easier. Prepend each of the following commands with make to run them from the root of the project directory (e.g. make run).

Most useful commands

  • run — bring up all containers for local development (docker compose up, with DOCKER_TAG=nightly set for you). Every container auto-starts its service; just open http://localhost. See Working on Rodan.
  • run_client — bring up only the Rodan-Client container to work on the front end.
  • remote_jobs — fetch the external job packages (Pixel.js / Neon wrappers) onto your machine.
  • stop — stop all containers.
  • clean — delete all stopped services, images, and volumes (dangerous!).
  • clean_git — git-reset this repository and pull the latest changes.
  • health — show container health.
  • build — build all images locally (Rodan, the Celery workers, Postgres with PL/Python, etc.). Slow (hours); normally CI builds images, so you rarely need this.

Deployment is no longer driven by the Makefile. Image build/push and cluster rollout are handled by GitHub Actions (.github/workflows/build-and-deploy.yml): images are built and pushed to GHCR (ghcr.io/ddmal/*) and deployed to the k3s rodan namespace via kubectl set image. See k8s/README.md. (The old Docker-Swarm / DockerHub targets — deploy_staging, deploy_production, update, push, pull, clean_swarm — have been removed.)

Clone this wiki locally