It's a new social network. But it's not gonna be just regular social network like TikTok or Reddit. It will have reputation system, and it's gonna be very dynamic. There will be two types of it. Static and dynamic. Static will remain after time (like karma in Reddit), and dynamic will slowly always go to the zero every 12h (like -0.5 points every time). Likes and dislikes will affect to your reputation! I'm also planning on other unique features but they are in secret. I also spent a lot of time on color generation and themes. Hope you like it! :D
I couldn't finish everything to the end of SoM, too many things to do. ;(
Solar
Check their projects out: ConvertBox, Cascade Browser, BitRender, Solar's Magnificent Pizza Collecting Game!, Spanky's (SoM Scene 74), Wavepoint, ExplainThat!, WordGuessr, ConvertThat, ExplainThat! Discord Edition, EsoHype, Orb Browser
Emma
Check their project out: Blueprint Framework
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
Change Its Beta! message. I really need to rest and I can't work more now. SoM was pretty good, I love it! I will be still working on this project later, hopefully I will finish it soon. I wna make DMs next, when I finish small critical UX things like Forgot Password?, username changes, etc.
Email changing dialog, when you change email it will have pending status, so you can cancel changing before email was changed
Added social activity thingy in user profile, now it has followers/following counter but later will have more things, like reputation and maybe other things
Added moderation dialog (that was a lot of work ngl), so now moderators will get assigned posts and so that means all moderators will have different posts/comments/resources even if they click at the same time. Also it has grace period (1 sec) so you can't click Approve right after you got assigned to resource, just for cases if you click accidentally. Later I will also add reject/approve appellations, but now it shows only posts/comments with reposts and no appellations
Wrong screenshot :sob:
And I cannot delete the devlog cause I earned sticker, that’s crazy…
Fixed text in notifications by adding unescape, also many other small improvements and fixes for push notifications
Added rate limiting and added rate limits to each endpoint. It uses Redis and Lua for limiting
Improved UX. Now when you click on reply in notifications it opens reply to reply, and not replies of the comment it was replied to. So person will get notification when you write a new reply
Removed NSFW tag from posts. Maybe later when I will moderation, and better settings so I will be able to add option show NSFW content and age verification I will return it back
Starting second beta test. Configured everything and fixed everything. Added reports, logout button and many other small things
Made video player. Also made that when you upload files for posts you have to choose between Video and Image cause now I added type to files table, and so before uploading it creates file context with type post_image or post_video, it's made like that so different types has different limits. postimage's limits are 1 file and 15 mb, postvideo's limits are 5 files and 10 mb for each file. Also posts' fields has now media_type so frontend understands what to use, carousel or video player
So I made scheduler for tasks like file deletion or posts deletion. I store posts for 3 days in database before hard deletion so yea. I used @dataclass for class Scheduled cause why not. I also improved some things, added deletedat to posts table in database, and added trigger to isdeleted to update deleted_at
Now it's possible to upload files for posts. Almost the same as uploading avatars and banners (uses the same table in database) but with higher count of max uses and higher max file size. Also deleted media TEXT[] from posts table and now it gets media from files.objects. First time for me using drag & drop thingy btw.
Finally!!! So now it works, banners and avatars. Gotta fix some bugs in R2 Worker. Also I didn't know how to use vue-advanced-cropper, so I had to use docs. Imma test how deleting images with 0 references works. And I'mma maybe make that client can't set filename for banners and avatars so I will use <snowflake_id>.webp on them
Made clean up function, I didn't use Redis lock or something like that. I made everything fully async and each worker deletes its own batch without any collisions
Made avatars and banners uploading. So now it creates context every time you upload file. It's stored in files table in db. Files table has references count, and the same user profile has avatarcontextid and bannercontextid. Later I will make that when references count goes to 0, files deletion from R2 will be queued
Made Cloudflare R2 Worker. It's the first time for me doing something like that. I decided to make my own worker instead of using S3-like api cause I need content size limit. Made tests to test uploading. Now API creates token with signed JSON that contains maxsize (mb), expires (unix timestamp), allowedoperations (List with something like GET:path/to/object). I think it's good enough. I'm planning on making contexts, like for example you're making post and you can make post context and upload only 5 files to one context, and context deletes automatically if it wasn't linked to any resource (post, user, comment, message or anything else)
Yea I was doing that all day today, I'm crazy. But who cares!? It looks so cool, and it's memory to my cat (he was gray :3). I think it turned out very cool and cute. It's an easter egg so I will post it only here and nowhere else.
Made tag dialog. Now thinking how to make it look less boring and how to improve it. Also from last changes in API: I made that tags will be sanitized and normalized before creating/linking, so Tag1 yee! will be tag1-yee cause it endpoint it's used like /tags/tag1-yee/posts so I had to do it like that
Added endpoints for tag info and tag posts. Tomorrow going to finish the fronted part and everything will be finished. Tag has posts_count.
I made tables for post tags. Now on get_post you get tags and ctags, ctags are basically clickable tags, and tags are not-clickable tags like is-nsfw or ai-generated or legacy tags from the old beta test. Adding tags to post automatically creates tag in database
Made dialog background white on light theme cause it looks better than dark
I was working on improving color generation system again. I was testing some random staff. And Math.sqrt actually fixed my problem... So on screenshot you can see green color that is finally looking good
So media server of SoM was down yesterday. So I have to make 1 big devlog. I can upload one file per devlog tho so I will upload the screenshot of comment replies.
2h 25m:
I made comment replies! I love how easy it was compared to what I thought. On server there aren't even endpoints for replies. Cause replies and comments are the same. Just reply has parentcommentid so in REST Api I can just do ?parent_id=... or provide it in data if it's POST request. I think it's very cool.
45m:
Now it will close last dialog on back button. On phones in really helps :P. .hide() returns false if the dialog is already closed.
Rest of the time:
I was improving color generation system. And instead of map of saturation I decided to make auto saturation depends on lightness. So if lightness go down too much (like on green) I make less saturation and try again until target luminance = luminance, it makes the same green and yellow look much better.
Ran it on tauri instead of electron. Cool experiment but maybe I will try it later. Cause I have IPC only on Electron and tray icon on it as well. But it was fun
Added updates! It's like pinned comments but separated from comments. And only author can write things there
Made a function for opening dialogs. So I don't have to import dialogs and use quasar.dialog in components
Improved color generation. Saturation and lightness were incorrect on light theme (checked by tools). I also had to change palettes and test them.
Added icons to Register and Login page (I can only add 1 picture to the devlog, but they're pretty similar)
A lot of small changed, I thought it'd be better if everything will be in one devlog cause changes aren't really big
Made a big work on improving UX for CloseableContent component (this component is for touchscreens, it's used in every dialog and it makes it possible to close with just swipe)
Just made it more touch-friendly, before only post and profile dialogs had swipe to close. Now all dialogs have that feature.
Made read notification event on WS, I will also make endpoint for it as well just for the future
Made that requests are canceled when you're changing page, it's not only on main page but also in profiles or favorites. So no race conditions now :3.
Requests like follow, unfollow, like, dislike, etc. aren't canceled when components are destroyed
Made some refactoring and changed where files are (I don't like the structure I made half year ago)
After last project I decided to back to my social network. Now it looks like that. Today I made CardSecondary color (you can see it on selected items).
Changed*