decentralized social app prototype
Find a file
kento2 297226e6d1 .
2026-02-24 21:52:51 +01:00
.idea use jackson for de-/encoding + stuff 2026-02-24 16:53:44 +01:00
gradle/wrapper first commit 2026-02-22 01:50:55 +01:00
src/main/java/de/kentoj/socialprototype . 2026-02-24 21:52:51 +01:00
.gitignore first commit 2026-02-22 01:50:55 +01:00
build.gradle.kts stuff + fix serialization 2026-02-24 21:11:33 +01:00
gradlew first commit 2026-02-22 01:50:55 +01:00
gradlew.bat first commit 2026-02-22 01:50:55 +01:00
README.md use jackson for de-/encoding + stuff 2026-02-24 16:53:44 +01:00
settings.gradle.kts first commit 2026-02-22 01:50:55 +01:00

TODO

  • encryption for event data
  • Terminology

term definition
handle full username like u.alice@example.com
field-pair a key-value pair like localUsername=alice
  • Protocol decisions

    • field-names

      Fields are to be sorted alphabetically. The type-field, which is required at every event, must be the first field.

      To allow filtering messages(for example to ignore all messages by a specific user), some order is declared:

      • the type-field is the first field

      • the username-field(if used) is the second one

      • short names

        As type, username and content are used heavily and field-names are sent in the payload, we declare the shortname t for type, u for localUsername and c for content respectively.

    • Events

      Everything is an event. Like in the matrix protocol.

    • Payload

      Payload is a bytearray with length-prefixed field-pairs. The payload is terminated with a 0-byte Strings are generally UTF-8 encoded.

      e.g 1t3msg1u5alice7c12Hello World!\0:

      • type is "msg"
      • sender(localUsername) is "alice"
      • content is "Hello World!"

      (If you're confused, see the short names section)