You are browsing as a guest. Sign up (or log in) to start making projects!

luminal

  • 34 Devlogs
  • 273 Total hours

A decentralized chat app, written in rust.

Ship #1 Pending review

This is luminal, my decentralized, open-source, end-to-end encrypted messenger. It was challenging to make the UI (I don’t do frontend usually) and to get the webtransport communication running (I was too stupid). For testing, read the main repo’s readme. It still has some bugs and missing features (for example the messages not being persistent (which is a bug that will be fixed))

  • 34 devlogs
  • 273h
Try project → See source code →
Open comments for this post

5h 29m 57s logged

what has changed

  • I AM SO HAPPY I JUST FIXED A BUG THAT ALMOST MADE ME GO INSANE :yay-trans: :yay-trans: :yay-trans: :yay-trans: :yay-trans: :yay-trans: :yay-trans: :yay-trans:
  • soo, the bug was that writes were sometimes “colliding” with each other, resulting in incomplete data. I fixed it by using read_exact instead of read for my connections :yay-trans: :yay-trans: :yay-trans:
  • yeah, I fixed some bugs but mostly worked on this weird issue.
    (read the messages in the image)
0
0
9
Open comments for this post

10h 21m 27s logged

I hate postgreSQL

what has changed

  • i switched back to sqlite because postgresql was behaving like a weird piece of garbage
  • rewrote the messagestorage
  • i fixed some bugs
  • I spent most of the time trying to get postgresql working, until eventually giving up

YOU THERE, LIKE THIS DEVLOG OR I WILL DO NOTHING pwease~ :pleadey:

0
0
13
Open comments for this post

12h 8m 29s logged

And again

what has changed :comrade:

  • i migrated the ui to material 3 because it looks good :3
  • I found many bugs and fixed them (I tried to implement iced subscriptions for a long time until i noticed that I left out the port when configuring my instance ;-;)
  • there’s still some bugs that I wanted to fix but the stupid 10hr rule stopped me from doing that in one devlog (i lost 2hrs again ;-;)
0
0
38
Open comments for this post

9h 41m 21s logged

NOT THIS TIME

what has changed :comrade:

  • I didn’t forget to devlog yay!
  • i’m now using aes + rsa, since stackexchange said that it’s more efficient (mainly network and memory-wise)
    and it works like this: message gets encrypted with aes256 -> aes-key gets encrypted with rsa for every user -> both the encrypted aes-key and the encrypted message get sent to the instance and then redirected to the respective clients
  • I removed maaaaaany things from lcp and renamed it to lcp-sdk-rs (because it isn’t really a protocol, it’s just an implementation of a protocol in rust)
  • I switched from SQLite to PostgreSQL because PostgreSQL is better for backends, according to the internet

like this devlog or you’ll step into water while wearing socks :pf:

0
0
15
Open comments for this post

13h 49m 15s logged

what has changed :pensive-wobble: :comrade:

  • I FORGOT TO DEVLOG I’M SO ANNOYED (I lost 3hrs 45mins)
  • I noticed that the lcp crate is not really a protocol sooo, yeah. I’m gonna transfer the database and stuff to the instance and messagestorage
  • I noticed that using SQLite on the server-side isn’t the smartest thing to do :pensive-hole: so I’m currently switching to postgresql
  • I added a fancy loading screen to the client
  • I finished implementing registration
  • I stopped using Identifier on the server-side (because it’s just a wrapper struct for a String and I don’t wanna split strings on the server-side) and replaced it with a tuple (Url, RsaPublicKey)
  • I implemented receive_and_deliver() for EncryptedMessageSet instead of EncryptedMessage
  • I replaced id: Option<String> with id: String because I can simply check if id.is_empty()
  • I started using iced::Tasks instead of Tokio threads because iced tasks are way easier and you can properly use the loading screen with them

soo yeah, pretty long devlog, right? Pwease give me a like :pleadey:

0
0
13
Open comments for this post

11h 25m 18s logged

What has changed :yay-trans:

  • I forgot to devlog (again) and I lost 1hr 21m :noooo:
  • I started working on registration (yey)
  • I removed the login screen because it was a stupid concept because the identifiers are long as helllllll and they can be loaded from a file
  • I added a registration screen that currently only shows that you can go to the list of public instances or host your own instance (with a link to the docs which don’t exist yet)
0
0
5
Open comments for this post

10h 33m 58s logged

What has changed:

  • I (once again) forgot to devlog in time so I lost about 33m :pleading:
  • I deleted the client because I hate css and html (making an iced ui in rust now)
  • added more stuff to lcp (functions, yey)
  • refined the login (I have no idea if I did it right, but I´ll see.)
0
0
4
Open comments for this post

11h 9m 28s logged

what has changed

  • I forgor to devlog so i lost 1h and 9m.
  • I deleted major parts of lcp, instance and msgstorage, which I am rebuilding right now.
  • I just installed another distro (guix system) so building doesn’t work right now
0
0
2
Open comments for this post

10h 56m 46s logged

What has changed:

  • not much, I had to get better at tauri and yew and had weird ownership errors
  • i made a component that fetches the conversations (yay)
  • i destroyed my table because I slammed on it too hard (not yay)
0
0
16
Open comments for this post

6h 6m 20s logged

What has changed:

  • I have stopped developing the tui and I´m focusing on a gui now. I
    also tried making a web-app but that didn´t really work :<
0
0
9
Open comments for this post

8h 38m 5s logged

What has changed

  • I changed the logo (someone on reddit drew it for me, big shoutout to them <3)
  • I added a instance field to the Message struct so you can figure out what instance the Message was sent from (that´s useful for texting between instances (you send a Message to your instance, it sends it to your friend´s instance))
  • I fixed some bugs, but in its current state, the application won´t compile
0
0
21
Open comments for this post

10h 8m 47s logged

What has changed

  • I finally fixed a stupid bug by using DER instead of PEM
  • I cleaned up a bit and added custom errors using thiserror
  • I started implementing Communities and Groups
0
0
16
Open comments for this post

9h 32m 17s logged

What has changed

  • basically nothing, had multiple problems that I couldn´t fix, so I just used certbot to get the certs
  • did some config system fixes for the instance
  • wrote some comments/docs
0
0
23
Open comments for this post

8h 57m 21s logged

What has changed:

  • I made the TUI better and also made one for the instance
  • I had multiple mental breakdowns trying to understand TLS
  • I started implementing Let´s encrypt certs instead of self-signed ones for usability.

Right now, I cannot show a screenshot of the stuff because it´s not compiling (yet)

0
0
42
Open comments for this post

3h 39m 27s logged

What has changed:

  • I added more customization options to the messagestorage, it was pretty hard to do that with ratatui
  • I wrote some comments in the code
  • I found a bug where the font is the same colour as the background, so the font is unreadable. I gotta fix that bug now.
0
0
7
Open comments for this post

4h 26m 16s logged

What has changed:

  • I continued making the TUI and it now has color schemes, stats and settings. I will continue making the TUI for the instance later.
  • I migrated the project to an organization to get luminal.codeberg.page as the domain of the website
0
0
11
Open comments for this post

5h 59m 55s logged

What has changed:

  • tried implementing a resource monitoring widget on the messagestorage dashboard and failed to do so, so I deleted it again (there were bugs I was unable to fix)
0
0
11
Open comments for this post

8h 20m 36s logged

What has changed:

  • continued making the TUI to a point where it was usable until I put a bug somewhere in the code. I will have to fix that soon
  • updated the messagestorage
  • replaced some .unwrap()s
0
0
10
Open comments for this post

5h 52m 2s logged

What has changed:

  • I started making a TUI using ratatui, focusing on minimalism and simplicity
  • fixed some bugs
0
0
13
Open comments for this post

5h 47m 51s logged

What has changed:

  • I implemented and tested encryption (it still has some minor bugs, but it works)
  • I stopped using userids and started using RSA keys for identification since that´s way more efficient
0
0
6
Open comments for this post

9h 1m logged

What has changed:

  • I lost my mind trying to use the wtransport crate (it will work, trust (cope))
  • continued working on the messaging part
  • refined the authentication stuff
0
0
9
Open comments for this post

8h 26m 58s logged

What has changed:

  • created a SQLite database for users and messages
  • “offloaded” more code to LCP (Luminal Communication Protocol)
  • started making the messaging part
0
0
7
Open comments for this post

7h 17m 24s logged

What has changed:

  • Made a basic session-based authentication system (harder than I thought) using JWT
  • Fixed and created some bugs
  • Created unnecessary debug messages before I noticed that the hex decoding fails because I put something like ¨adasdasd¨ into my config instead of a hex string
0
0
9
Open comments for this post

7h 11m 58s logged

What changed:

  • continued making lcp (took longer as expected because the wtransport crate is poorly documented)
  • started making messagestorage use lcp
  • everything has become a mess, I gotta clean up next time I work on luminal

Sidenote: I cannot commit to codeberg as I am writing this, they reported that they have an outage. I will push the code when codeberg is back up.

0
0
11
Open comments for this post

8h 40m 28s logged

What has changed

Structure

  • Started making libs and mods for the separate parts (luminal communication protocol, etc.)
  • changed the architecture from: Client <-> Messagestorage <-> Instance to: Messagestorage <- Client <-> Instance

Bugfixes

  • Fixed various bugs, but the compiler throws errors right now, so I cannot show a working version in the screenshot.
0
0
10
Open comments for this post

8h 30m 32s logged

What changed

  • started making a bash-like shell for managing and controlling the instance
  • rewrote the config system to use the toml crate instead of config
  • fixed multiple bugs
  • started making cert verification

smol sidenote: I cannot work as fast as the last weeks right now because I’m on vacation and only have a dual-core ThinkPad with me.

0
0
9
Open comments for this post

8h 45m 13s logged

What changed

  • added automatic port fetching for better ux
  • fixed multiple bugs
  • made the code very messy (gonna clean everything up tomorrow)
0
0
3
Open comments for this post

7h 15m 45s logged

What changed:

  • Took out ml-kem for now because it was causing rust-analyzer to be slow as hell
  • Switched to RSA encryption because I was stupid
  • fixed many bugs (not running right now - gotta fix that now)

And a small information at the bottom: I am making this project to learn cryptography and get a Framework 12

0
0
6
Open comments for this post

5h 11m 25s logged

Things that changed:

  • I went back to BiStreams because I was dumb and didn’t realize that what I wanted to do was way easier with BiStreams.
  • I started working on the backend, which can receive BiStreams from the selfhost-server as of now.
0
0
5
Open comments for this post

4h 21m 23s logged

Things that changed:

Used multiple UniStreams instead of a single BiStream because its easier, made the functions more usable, removed unused dependencies.

0
0
6
Open comments for this post

5h 53m 31s logged

Started cleaning up and structuring the project. I also made a basic account system which will need some tuning later.

0
0
8
Open comments for this post

10h 50m 27s logged

After trying different protocols for literal hours, I finally settled on WebTransport. Its safer than WebSocket, I believe. I now have to make it send the json instead of “HELLO”.

0
0
7
Open comments for this post

1h 27m 30s logged

This is my first devlog of this project. I’ve always wanted to make a chat app since they are one of the most used tools today. Every attempt of making one failed and I was really frustrated. Now, I have motivation to make it and get something for free.

0
0
59

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…