Stats

2
Projects
18
Devlogs
20
Votes
1
Ships

Coding Time

All Time: 57h 16m
Today: 0h 0m

Member Since

June 16, 2025

Badges

1
🚢
Maiden Voyage
you shipped your first project! the journey begins...

Projects

2
DiaryTrove
6 devlogs 8 days ago
ShortView

ShortView

Shipped
12 devlogs about 2 months ago

Activity

Okay, this one part somehow got way harder than I expected!
So, I implemented the page for the user to create a new memory. On this page, you can give the memory a title, write come content, select your mood by picking an emoji, and you can also customize the lock time for the memory, or keep the default one you set in your preferences.
But the thing that got really complicated was the media upload part.
Basically, you can upload medias (images, videos, etc) with your memory, and these medias will be attached to the memory object, and the files themselves will be stored in a dedicated folder.
The first challenge here was with the frontend, because I had to use a lot of JavaScript to make all of this work, and here I honestly got a lot of help from AI and then built more stuff over the generated code, because I only know the basics in JavaScript.
The second challenge was to privately store those medias, because with the way Django medias work, those can be accessed by anyone who can find the correct URL, but those medias in my case are private.
So I had to create a custom media storage backend which stores medias in their own folder, and those medias can only be accessed internally by the server-side code, meaning that I can perform verification and then serve the media directly from the code, without it being directly exposed.
Now the next step would be to modify the media upload system a bit to improve it, and to build the memory preview page, which shouldn't be that hard (I hope) since I already have almost all the frontend and backend code.

Ilwân
Ilwân worked on DiaryTrove
3h 36m 3 days ago

I fully implemented the page to change user preferences.
I also made an empty home page, and coded a bit of JavaScript so that the user gets a warning before exiting on a page containing a form, and also to lock some preferences if the user decided to prevent himself from editing the memories lock time in the preferences.
I also made quite random changes here and there for styling and navigation mainly.
The next step would now be to implement all the memories system in itself.

Update attachment
Ilwân
Ilwân worked on DiaryTrove
2h 6m 5 days ago

I finished implementing the sign up page, and also added better cleaner logic in my code.
I modified some CSS again, and also made a terms and conditions page and a page explaining password security. I mainly took the text from these two pages from my previous project, but did some better formatting in HTML and CSS.

Ilwân
Ilwân worked on DiaryTrove
2h 22m 6 days ago

I finished the log in page and its backend.
I reused part of the code from my previous project where I also had a log in page, but this time I used Django forms instead of pure HTML forms, I also changed a bit the logic to avoid repetitions, I had way too much in my previous project.
Also I spent some time on the CSS again to try and make the page appealing and visually pleasing, that was quite the challenge to make everything look aligned but I managed to do it using a grid layout.

Update attachment
Ilwân
Ilwân worked on DiaryTrove
2h 20m 7 days ago

For the last project, I basically didn't use CSS, so this time I'm making sure the web page looks somewhat pretty!
I wrote a basic index page in HTML, but I mainly spent some time on the CSS to make the page look better.
The layout and styling is pretty basic, but since I have little to no experience in CSS I'm really satisfied with it, I might adjust it later but for now I'll keep it like that and move on to coding the app in itself!

Update attachment

For now I made the basic Django project and app configuration, and I mainly spent some time making some drawings of what I want the interface to look like, so that I know exactly what to do when coding the project.

Update attachment
Ilwân
Ilwân created a project
7d ago

DiaryTrove

A diary where you can write notes. Those memories will then be hidden and revealed again after a certain amount of time. "Because your memories are your most precious data". AI: I used just a bit of AI (way less than 30%, but I checked the box anyway) mainly for the JavaScript and to get help on some technical aspects, while reviewing and editing the output each time.

DiaryTrove
6 devlogs 0 followers
Ilwân
Ilwân worked on ShortView
1h 25m 10 days ago

I FINALLY managed to deploy the project!
So I did a few changes on some settings and config files, and then started deploying the website.
At first, I used Nest (The server provided by HackClub to host projects), but it broke my project because it uses a proxy, which masks the IP address from the request and causes some issues with parts of the app, so I had to host it myself.
So I made a small setup in my room with my raspberry pi, and configured it as a web server, opened the necessary ports on my router, and after a few very long days, I finally managed to properly deploy the website using an Nginx server with SSL security.
I just finished writing a little readme, and made a full deployment guide. I'm now currently making a little banner for the project, and then I'll be ready to ship a minimum viable product (I may have some beef with CSS but meh, who cares about styling anyway), YIPEEE!

Update attachment
Ilwân
Ilwân worked on ShortView
8h 6m 21 days ago

First, I spent quite some time reworking on the project's code in order to reorganize everything, create some helper functions to avoid repetitions, and stuff like that. This part is not directly visible by the user, but the code is now way easier to understand and to expend.

I also added dark mode, with a bit of styling for the page to be displayed according to the browser's color mode, which is great because that bright white page was starting to blind me a bit 😅

And the thing that took me the longest was to update the entire project for it to be translatable in other languages.
I went into each file to mark each and every string of displayed text as translatable with the gettext module from Django, this includes the python files, html files and js ones as well. And after spending way too long to figure out how all of this works, I generated the translation files, and manually wrote all the translations for the French language.
Now, if the browser is set to display pages in French, then the website will be displayed in French, else it will default to English.

Ilwân
Ilwân worked on ShortView
4h 6m 24 days ago

I mainly improved some things here and there, including the registration form, with some basic conditions to accept, I also fixed a few bugs with registration and preferences, I also improved the format for the emails, and the last thing is not visible in the interface but I added scheduling for some functions to periodically execute in the code, for stuff like deleting expired pixels for instance.

Update attachment

I improved a bit the way each link is listed on the home page, by adding the domain of their destination url as well as the number of times it has been clicked.
I also added a button to delete a link, with a confirmation popup, and added a bit of styling around the shortened link to make it more visible.
But most of all, I configured my subdomain to also turn it into a mail domain (using Zoho mail), and configured Zoho mail and Django to be able to send automated emails from the web platform in order to notify the user when his link has been clicked. The user can also set an account-wide preference or a link specific preference to choose whether to send an email on the first click, on each click, or to never send one. I will now continue by adding better styling and format the emails sent.

The interface is now fully fixed and adapted to create short links.
I also coded the tracking system, which now successfully logs each click on the short link, except if the person clicking it created it (if he's connected to the account owning this link).
For the person clicking the link, he will get instantly redirected to the destination url.

Update attachment

I finally managed to migrate everything and rename the whole django project after recreating it from scratch and copying relevant files and code blocks, and renaming every variable in the code to be relevant to the new app.
This project has now become ShortView! Monitor the shortened links you send!

Update attachment

I added the link to the webapp to directly get an image, which can be tracked since it does a request to the server.
HOWEVER, I need to change basically the whole system because I realized that when putting an image from a url in a google email, it automatically copies the resource to google's servers, which mean that the request to my server is never made, therefore not allowing to track when someone opens an email.
Since I already did quite some work on this project, I'll just change it a bit to something else.
So, now introducing ShortView! (I guess)
Instead of using an invisible pixel, you'll be able to create a shortened link to a webpage, and the webapp will register clicks on the link, so that you'll know if the person you sent the link to clicked it or not, with all the usual information.
As an attachment, I put a screenshot of the image displaying properly when requesting it from the url, but now I'm going to replace this with the webpage the shortened link points to.
So, time for some model changing, variable renaming and database struggle now 😭

Update attachment

I added a page to create a new pixel agent, on which the user can give its properties. The pixel will then be created and saved in the database, and the user will be redirected on the newly created pixel's page. The pixel will also be displayed in the home page.
I also properly set up the django site model, meaning that it can now create absolute urls.
So I changed the way that pixel's url works: before, each pixel would have its url saved in the database, but now it's not statically saved anymore, but created on the go using the pixel's id and the domain when needed. So now, on a pixel page, it is possible to copy properly its display url (which were placeholders before).

Update attachment

I added a registering system to create a new account.
It verifies that both the username and email address aren't already in use on the platform, and it checks for basic password requirements.
There's also hint texts when hovering above the fields which explains the requirements for the username and the password.
This is done with client side javascript first, then checked again with server side python.
Then, if everything is conform, it will create a new user account in the database, and attach a profile model with the default user preferences.
From there, the user will automatically get logged in, and will be able to log in later, and use his account normally.
I also fixed some bugs here and there.

Update attachment

I added a page which will display information about the selected pixel, displaying its image url which can be copied, as well as a history of each time the mail containing it has been opened, with the date, ip address and request header from the opener (for now this is manually entered placeholder data, but the display part is working).
I also added a page to modify user preferences, for now the only ones are whether or not to display expired pixels, and the default expiration time, with the ability to set it to never expire (in the future, when the pixel functionality will actually be implemented, an expired pixel won't register mail openings anymore, which is useful to avoid notifications from old pixels later on).

I started adding some CSS styling, to use different colors depending on whether the mail containing the pixel was opened or not, and to cross out expired pixels.
I also spend waaay too long figuring out how to reload the static css file after an edit before realizing the browser kept the old one in cache 😭.

Update attachment

Continuing the project that I started building before Summer of Making, but for now I'm on the early stages of it, so the largest part is still to be coded.

Ilwân
Ilwân created a project
57d ago

ShortView

A webapp that allows you to create a tracked shortened link and know when it's clicked. NOTE: You need to open the link on another device or in an incognito tab for it to register, as it won't register clicks from the link owner.   FOR TESTING: If you don't want to create an account, you can login into the testing account: username: test / password: test ; you can then check the mail notifications on yopmail.com with the email name 'shortview'

ShortView
12 devlogs 3 followers Shipped
Ilwân
Ilwân joined Summer of Making
58d ago

This was widely regarded as a great move by everyone.