Clean refactoring repository -- merge by file replacement later.
This repository has been archived on 2026-07-09. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Gleam 81.1%
  • CSS 10.4%
  • Just 5.1%
  • Nix 2.2%
  • JavaScript 0.8%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
MLC Bloeiman d012227b30
[refactor] Add some more places in which witness is called
Last week I helped out someone else to customise what is called upon
server start, today I figured I should use it on Lumina myself!

Also noticed the session janitor was too quiet, I couldn't tell if it
was still running or not and if it had done anything. But now, I've
added a message on (extra) wait and on finish of a janitor loop.


Signed-off-by: MLC Bloeiman <mar@strawmelonjuice.com>
2026-07-09 17:58:49 +02:00
db Implement cryptographical structure for both interinstance and user level communication. 2026-07-09 00:37:54 +02:00
docs Merge Lumina-kb into this repository 2026-07-09 00:36:52 +02:00
lumina [refactor] Add some more places in which witness is called 2026-07-09 17:58:49 +02:00
.editorconfig upped my flake game further 2026-07-05 16:07:11 +02:00
.envrc Dev database 2026-07-02 19:53:20 +02:00
.gitignore Re-add copyright 2026-07-04 23:09:45 +02:00
CONTRIBUTING.MD feat: CONTRIBUTING file got added! 2026-07-07 21:51:09 +02:00
deno.json Did a lot of little things, mostly on the way we bundle. 2026-06-30 00:37:47 +02:00
deno.lock Did a lot of little things, mostly on the way we bundle. 2026-06-30 00:37:47 +02:00
flake.lock Baby steps again. Itr3 2026-06-20 23:19:12 +02:00
flake.nix [chore] Switch to Erlang/OTP 29 2026-07-09 12:58:10 +02:00
justfile [build] Make target directory for Oat to download to if not exists 2026-07-09 12:58:10 +02:00
LICENCE fix: Correct Licence filename 2026-07-06 16:57:41 +02:00
README.md [docs] update README 2026-07-09 13:21:06 +02:00
robots.txt Re-add copyright 2026-07-04 23:09:45 +02:00

Lumina(/peonies) server

Notice: This project lives on Tangled, it is mirrored to Codeberg and a few other places, but the main development happens on Tangled. Please report issues and contribute on Tangled.

Lumina is a project in development, as the short description says "Just trying out an old concept.". It is not in any way ready for you to try. However, you are encouraged to contribute in any way!

Currently, as no stable is produced yet, code lives mainly in the development branch.

Developing info

Developing

Use flake.nix, either using direnv (there's an .envrc file to do this!) or with nix develop. This gets you all the dependencies, including Just. nix develop is still needed to also boot up a local database.

just dev # Prepares your enviroment and builds/runs the server with file watching.

Run just --list to see all possible recipes.

When running Lumina server in development mode, it automatically creates two accounts for you and one of those has an attached post on the global timeline.

Username Email Password
testuser1 test@lumina123.co MyTestPassw9292!
testuser2 test@lumina234.co MyTestPassw9292!

Package relationships (outdated)

---
config:
  layout: dagre
---
flowchart TB
 subgraph actors["🤹 Backend actors"]
        web{{"Webserver"}}
        iic{{"Interinstance communication"}}
        session[("Session Controller")]
        ssc(["Server Side Component"])
        storagecontroller{{"Storage controller"}}
  end
 subgraph Subgraph1["↙️ Server side"]
        backend["Lumina backend"]
        actors
  end
 subgraph Subgraph2["↗️ Client side"]
        spa(("SPA web client"))
  end
 subgraph Subgraph3["🌐 Interinstance"]
        instance[("External Lumina backend")]
  end
 subgraph Storage["💾 Storage"]
        pg["Postgres"]
        ets["ETS"]
  end
 subgraph Subgraph5["🧩 Packages"]
        package_backend["./lumina/backend"]
        package_components["./lumina/web/components"]
        package_spa["./lumina/web/initialiser"]
  end
    backend <--> web & iic & Storage
    web <--> session
    session <--> backend
    web -- serves --> spa
    spa -- loads --> ssc
    ssc <-- websocket --> session
    instance <--> iic
    ets <--> storagecontroller
    storagecontroller --> pg
    backend ==> package_backend
    ssc ==> package_components
    spa ==> package_spa

    pg@{ shape: disk}
    ets@{ shape: das}
    linkStyle 0 stroke:#00C853,fill:none
    linkStyle 1 stroke:#00C853,fill:none
    linkStyle 2 stroke:#00C853,fill:none
    linkStyle 3 stroke:#00C853,fill:none
    linkStyle 4 stroke:#00C853,fill:none
    linkStyle 5 stroke:#00C853,fill:none
    linkStyle 6 stroke:#00C853,fill:none
    linkStyle 8 stroke:#00C853,fill:none
    linkStyle 9 stroke:#00C853,fill:none
    linkStyle 10 stroke:#00C853
    linkStyle 11 stroke:#E1BEE7,fill:none
    linkStyle 12 stroke:#E1BEE7,fill:none
    linkStyle 13 stroke:#E1BEE7,fill:none