The most time for this devlog was invested on the layout of users who liked a post. I just wanted the users to be displayed in collumns and rows. They should be exactly underneath each other, so the like-icon aligns perfectly. Also the names shouldn’t break, because then one row is larger then the others. It was such a pain getting that “simple” thing to work. I asked multiple AIs, after I had no idea anymore and all gave me trash. The Claude used JS and not only CSS and it finally worked!! It was such a pain but in the end I am very happy with the result.
LIKES!!!!!! Finally!!!! Again only the db held me back. I hate databases! But it has a fun little animation if you click it and it is pretty spam proof (hope so).
Create quotes now works!!! It was a bit of pain modifing the db. I just wanted plain timestamps in milliseconds but Exposed and SQLite don’t want that, so I setteled on just using long type.
The Server now autmoaticly migrates the DB 🎉🎉🎉🎉🎉🎉 It was not that easy, because Exposed (DB lib for Kotlin) doesn’t automaticly apply migrations. I can generate migration scripts with it but the execution and check if it was already executed I have to do on my own. But I learned a lot in the process.
Now Woodpecker builds the server and client docker-image and releases it on codeberg.org docker registry! Yay!
I’ve added a form for admins to create invites so you don’t have to interact with the DB or the API manually ;-) Also the first user, that registers doesn’t need an invitation Code and automaticly is an admin. I also started creating the form to create quotes, but it has no functionality at the moment.
My next steps that are planed at the moment:
New design for the quotes. Now it’s not a boring list but cards that look a lot better.
I’ve added two new themes. Also the theme is now loaded via js, so at a later point the js could read the cookies and load a theme dynamicly.
I’ve now added a logout api endpoint and an option to logout via web client. The difficult part is, that I can’t access the GREX_SESSION cookie via JS, so I have to set another cookie, to know, if the user is logged in. But now it works fine. I hope, that I’m not finding as many bugs if I’m testing the login/logout/register functions.
Not much to say for this devlog, I only created the register form and designed it and the login form.
I improved the navbar and designed an icon as a placeholder for the moment: At a later point the icon should be changable by admins and I think, I will also improve the default icon.
The navigation now works…. But I’m not really happy about it. But for now I started styling a bit (also that I’m not getting flashbanged).
The server now returns the same index.html file for every page and js loads the page-content. This lags sometimes and is not very performant…
I’ve started styling. All the colors and also some other properties are specified in a theme-css file, so later you could have your own theme as a css file with only vars or if you want to style even more, you can add custom styles for specifc components, thats the plan for theming.
Started building the real client (at least a concept). I’m currently trying to figure client-side navigation out. I think I have to watch some tutorials…
And today again: Fiddeling around with the wierd quirks of VCards:
And again: I HATE VCards! I think they don’t deserve to be called a “standard”, or the platforms that use it shouldn’t call it VCards… I think this feature will take a long time. Hope it’s worth it in the end…
I’ve started trying out the Nextcloud Sync/CardDAV Sync/VCard import/export in a seperate test env.
I HATE CardDAV and VCards!
I have a very specific structure for the contacts. So for example instead of just a string for the extended address I specified every single thing you could add there like apartmentNumber, suitNumber, roomNumber, …. But in VCards it’s very loose, so I just have a string…
Now I have to think about what I should do: Should I just drop it? Should I edit the whole app to match the vCards Standart better and loose some of the specificity (does that word even exist?)???
I don’t know yet. Have to sleep about it and maybe talk about it with my friends/family.
I now added the contact permission request thing to the settings, as described in the dialog of my last devlog. If you tap on the card, the dialog opens again and you can allow the permissions.
I improved the permission request system. It was not that well designed and also some humans had problems knowing what to do directly, so now I hope that the UX and UI are better. Also I redesigned the delete-confirm dialog, with the same theme, that the permission dialog has.
The main thing, that cost me much time was rewriting my components, so I can use them with the dialog and also making the dialog itself.
I think, there could be some edge cases, where the new permission request doesn’t work. If someone finds one, I would appreciate, if you report it on Codeberg as an issue or via Slack Benkralex/Mail ([email protected])
I fixed, that if you are already logged in, it still showed the login-form. Also I added a createQuote function (not in the UI yet) and tried fixing the cookie, that don’t want to be saved because of security. I have not comittet the code, because it is at the moment just for me testing, until it can do the most part of the API and is a bit better designed.
I started with a very simple UI (without CSS) to test if the API would work. At the moment you can only login and get all quotes.