Activity

Felix

Shipped this project!

You may know the app “I Am Sober”, the concept is great but the monetization and the amount of trackers bothers me. That’s why I decided to build my own version of it, it’s quite simple but does its job. I’m really happy with how it turned out! I plan on building a back-end so you can access your data from anywhere and don’t have to worry about accidentally loosing it.
Those progress bars were actually the most challenging part about this project probably, I initially wanted to make the borders slanted, similar to “I Am Sober”, but couldn’t figure out how to do so.

Felix

Making the final touches. Fixed a few bugs and made some small but noticable changes. If you look at the bottom you can see a gradient now, I moved the button to create new entries to the top right now, before the button would sometimes cover the actions for the entries, and the modal doesn’t cover the full viewport on mobile anymore, I don’t really know why I decided to do that before lol. Other than that I only did some small QOL tweaks and added a few more safeguards.

Attachment
Attachment
1

Comments

Felix
Felix 1 day ago

Oh, also deployed the project on Netlify!

Felix

Okay I figured out how to convert a JS Date object into a valid value string for an input element now and started to work on giving the user the ability to modify their attempts. It technically works but I find it really unintuitive and confusing, it also doesn’t seem like it’s possible to set a maximum and minimum time. I’ll discard the changes. But I do use the function to convert that Date object in one of my modals so it was worth it! I don’t think there’s much else to add so I’ll probably do some final touches and ship the project soon.

Attachment
0
Felix

Updated the alien theme, most noticeably the font. Made some other tiny changes too, like actually using the font variables. Next, I want to make it so you’re able to modify your attempts. Last time I tried to do this I failed because I couldn’t figure out how to set the default value with the data of a Date object. Is definitely possible, might ask people for help though because I’m feeling kinda lazy right now. I’ll need to figure that out anyways because there is no indication that there’s a date/time input element when using iOS w/ Safari as there is no default value set.

Attachment
Attachment
Attachment
0
Felix

Wrote a README with some guidance on how to add a new theme. Will most definitely add more images later on but for now it’s just the banner. The project is also licensed under MIT now!

Attachment
0
Felix

Settings!!
Added the ability to choose a theme, including popular color schemes like Catppuccin and Rosé Pine, and… Alien? heavysob
You can also Import/Export your entries now. In addition to that I fixed bugs and made some QOL changes like usual.

Why this took five hours you may ask? It didn’t - I tried to implement a backend with authentication and a database to store all the entries. I learned stuff, like how to encrypt passwords with bcrypt, make endpoints with Express.js, what the heck salts are and all of that. In the end I did eventually give up on implementing it though, I couldn’t really figure things out, but I’ll most likely give it a shot in the future again!

Attachment
Attachment
0
Felix

Cleaned up some code (button are actually wrapped HTML button elements now…) and fixed small bugs. I spent most of the time trying to make it possible to edit the single attempts later on. I had an idea but ended up failing to set the default value & min/max value of a datetime-local input element using a JS Date object. I’ll try to figure that out in the future but right now I’m trying to implement authentication, it seems a simpler than I imagined, maybe I’m missing something though so ima have to see how it goes… I hope this works! Will share more details about that in the next devlog ofc, I only practiced auth outside of this project so it didn’t even count the time lol.

Attachment
0
Felix

Cooked a banner in Figma, pretty happy with how it turned out. I used this really cool QR-Code generator called Mini QR (https://github.com/lyqht/mini-qr) which allowed me to create this cute QR-Code!
Not too sure about the URL, it might change later, haven’t deployed it anywhere yet.

Attachment
0
Felix

Made an editing modal. Changing the name of the entry and permanently deleting it is possible now.
I also save the entries in an Array now. When I began working on this project, I saved them in an Object with the name as the key, then I decided to use id’s instead which resulted in a JSON structure like this:

{
    "0": {
        "name":"Haiii!",
        "attempts":[1769431804269]
    },
    "1": {
        "name":"Blub 🐟",
        "attempts":[1769431803548]
    }
}

Yea, that was stupid, it’s literally an inefficient Array lmao.

0
Felix

Made a confirmation component! Before starting a new attempt you have to confirm that you actually want to do that before any action is taken.

Attachment
0
Felix

Pretty happy how the Modal turned out. Just need to add an exit button for mobile users/small screens but that should be done pretty easily. I really like this backdrop blur filter when the modal is open, never thought about that before seeing that Flavortown does it like that.
I also made a reusable Checkbox component which fits way better than anything I could do by customizing HTML’s checkbox element using CSS.

Attachment
Attachment
Attachment
1

Comments

Felix
Felix 7 days ago

I didn’t mean to upload the first image, ignore that one…

Felix

Worked on the Dashboard’s styling and added a proper button to add new entries now, it opens a modal which allows you to enter basic information. I want to add the option to enter previous attempts in the future.
Trying to implement a modal in Typescript was a little different compared to how I used to do it in Javascript so I struggled with that a bit.

Attachment
Attachment
0
Felix

The Entry Details site is mostly done now. Everything works and it’s a bit more structured than before. It also works on mobile. The only thing I struggled with was the fact that the browser renders:

element {
   overflow-x: hidden;
   overflow-y: visible;
}

as

element {
   overflow-x: hidden;
   overflow-y: auto;
}

for some weird reason. This caused a scrollbar to appear for the header. Didn’t know how I’d properly use text-overflow without only hiding the overflow on the x-axis (so the bottom wouldn’t be cut off) so I ended up looking at how YouTube did it and it turns out they just hid all the overflow and increased the line-height. Copied that and it works like a charm!

Attachment
Attachment
0
Felix

Okay the detailed information page is taking its form. That’s about what I imagined. Of course I still need to change some stuff regarding styling but the functionality is mostly done! Displaying the time in the correct format was definitely the hardest thing here.

Attachment
0
Felix

7 hours… wtf 😭
Welp, it was a lot of pain. I was trying to implement the design for the progress bars in CSS and I just couldn’t figure out how to do so. It’s still not looking how I want it to look but it’s getting closer and one of my friends managed to recreate that in CSS so I’ll take a look at that and try to implement it too. I also made some other small changes of course but most of the time I was just trying to figure out how to do that design. I messed around a lot with the mix-blend-mode property in particular, it did NOT go well…

It renders a maximum of three progress bars so the site doesn’t get filled with those ^^

0
Felix

Entries are now stored with the help of id’s. I also started working on the detailed view where you can see all of your attempts and progress bars showing how long you’ve been sober. I showcased the design of that in my first devlog.

0
Felix

Styling makes a big difference! (obviously…)
Apart from that I save the attempts in an Array now so you can view all of your attempts later on.

Attachment
0
Felix

You can actually view your progress now! If you want to understand the logic behind it you can check out the source code of the Entry component in the Repository. It basically subtracts the current time with the creation date of the entry and works with that to tell you how much time has passed.

Attachment
0
Felix

You can add and remove entries now! First time using Typescript, I can see why one would prefer that over Javascript. I still need to get used to it though!
Currently saving the entries in the localStorage.
I’ll always give the user the option to do so but for this project I’m gonna try to implement a login system so you can retrieve your entries from everywhere and don’t have to worry about your data getting deleted.

Attachment
0
Felix

Tried out a few designs and am pretty happy with this one. Quite simple, I don’t know how I’m at three hours already lmao (lemme be slow :p). Went for a mobile-first design because everyone says you should, so why not give it a shot ig.
The design is inspired by the Sobriety App and I obviously copied those progress bars from the “I am Sober” app.

Attachment
0
Felix

Shipped this project!

Hours: 41.1
Cookies: 🍪 1117
Multiplier: 27.18 cookies/hr

The Shonks are coming for you!!!!

Was very fun to make. Learned some new stuff and am pretty happy with the end result!
Mostly struggled with the logic behind colorizing the Shonk as my math skills aren’t the best…

Anyways, I hope you can make good use of it!

Felix

Added a README, made a banner in Figma, fixed bugs and made some QOL changes. Also worked on an issue template for GitHub so you can easily suggest new flags. Spent two hours trying to rework that colorization algorithm for better results but failed horrendously and discarded all the changes.
Oh, there’s also a favicon now! Got it from the pixel safari

Attachment
Attachment
0
Felix

YURI!!!!
You can insert custom ASCII-Art now (or whatever you want to colorize). Adding the custom variant wasn’t that hard to implement and didn’t take long, but fixing all the issues that were caused by selecting a preset color combination with an amount of colors that was greater than the amount of lines your custom ASCII-Art had was… painful (T_T). I figured it out eventually but it always feels so weird thinking about it for an hour and then only committing like 10 lines of code lmao.
Also did some other smol bug fixes and changes like usual.

Would say that I’m mostly done now, will just have to add a favicon, maybe a few more presets, a banner, a proper README aaaaaaand then I’m ready to ship I think!

0
Felix

You can export your Shonk into a bash script now!!
Thanks for the suggestion MeBadDev!
Took quite some time cuz I needed to figure out how to properly display rgb colors in bash. Also did a smol bug fix regarding the z-index of an element :3

0
Felix

Happy New Year!!!

Added a maximum of colors you can select based on the amount of lines the Shonk has.
And I fixed the font rendering finally!! Turns out it only worked on my Desktop and not on my mobile devices because I actually had the font installed on my pc and it didn’t get overridden because I made a typo in the FontFace (T_T)
Also fixed some other bugs, you can check out the commit history on GitHub if you’re interested!

Oh, and I’m using VSCodium instead of VSC now :3

1

Comments

æra
æra about 1 month ago

Yayay

Felix

I added credits for the ASCII-Art and worked with React Router for the first time! Was actually way easier than I imagined it to be. Also changed the default font because the old one was hardly readable. Not too sure if I’ll stick with that one though. There’s also a link to the repository in the footer now!

Oh and the year is almost over, or maybe it is already for you. Hope you’re havin’ a great start into 2026!!

0
Felix

Okay the colors are distributed more evenly now! Tried out a lot of different ways to do that and ended up in LibreOffice Calc to find out what the heck I needed to do. Finally figured it out after like 2.5 hours of pain… On the Screenshot you can see the old version on the right side and the new one on the left side (the one with the border around it!)

Also some smol changes/bug fixes, you can check out the commits on GitHub if ya wanna know more :3

Aaaaand, I just noticed that I didn’t even listen to music the whole time?! 😭

Attachment
0
Felix

Added different shonk variants and some more presets!!
Why this took so long? I dunno (T_T)

0
Felix

Trying to make the site mobile responsive is pain… It’s better than before but the text in the HTML canvas is somehow thinner on mobile than on Desktop?? I’m guessing that it has something to do with the pixel density but I don’t know how to fix it (if you have any idea then please tell me 😭😭)
In addition to the site being a bit more responsive, I also added preset color combinations, I’ll probably add a few more in the future! Apart from that I tweaked some small stuff.
Overall I feel like I’m pretty darn slow. The seemingly simple project is about to hit 24 hours of logged time…
I’m almost there though, I’ll just make some minor QOL changes, add different Shonk variants (and maybe an option to insert your own) and… cry while trying to make the site mobile compatible and make the color distribution more even when… it can’t properly distribute them evenly (T_T)

0
Felix

Added download options. You can now change the scale and the background color of the PNG!!
I struggled a lot trying to export the canvas scaled and am still confused about that but it works now!
I also noticed that the JetBrains Mono font had ligatures by default so I disabled that, should look better now :3

0
Felix

You can download your Shonk now!!
I achieved this by transforming the preview from simple elements into a HTML canvas which I can easily transform into an image you can download. This took a while but it finally works! I’ll also try to add the option to either download it with a transparent background or the with the background my site uses (or a custom one, idk yet).

2

Comments

MeBadDev
MeBadDev about 1 month ago

This is so cool! Can I export it to a bash script? Would be fun to put into my .bashrc lol

Felix
Felix about 1 month ago

Ooo, that’s a great idea. Gonna try to implement that, ty!!

Felix

You can now remove colors either with middle or right click!! Also changed some stuff regarding how I store the selected colors but that took a lil while cuz I don’t have that many braincells :P

0
Felix

Also replaced HTML’s checkbox element with my own custom component now so I can style it properly. Also added pointer cursors to make the UX a bit more intuitive. Next I’m probably gonna add the ability to remove colors (and reorder them maybe? :3

0
Felix

Merry Christmas!!
Didn’t do all too much today. I made my own component as a replacement for HTML’s color input element tho, so I can implement the ability to delete colors more easily in the future.
I’m gonna do that for the “Loop” checkbox too so I can properly style that one.

And I didn’t even know that you can upload multiple attachments, I added one where you can see the colored Shonk with the “Loop” setting toggled on ^w^

Attachment
Attachment
1

Comments

wojtek
wojtek about 1 month ago

This is so peak. Can u please let me know when u ship :3

Felix

It’s getting somewhere!
You can add as many colors as you want now!! (I should add a limit tho, that shouldn’t be too hard).
I still need to add the option to remove colors but I dunno how well I can do that with the default HTML input element I am using… Same goes for the Loop setting, I dunno how much I can actually customize it using CSS.
Yeaaaa and I still have to add the Download, the presets, the Shonk variant switcher and a lovely footer :3

Attachment
0
Felix

This took wayyyy to loong but the basic functionality is done now. Just gotta let the user add any amount of colors themselves, add more Shonk variants, make preset color combinations (forgot about that in the Figma design) and make the customized Shonk downloadable!
Oh, and I actually have to implement the design I made in Figma, but that shouldn’t be too hard!

Attachment
0