⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣤⠶⠶⠿⠛⠛⠛⠉⠉⠉⠛⠛⠶⠶⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣤⣶⡾⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠿⣷⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡾⠿⠛⠉⠉⠉⠙⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣰⡶⢶⣤⣀⠀⠀⠀⠀⣰⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢾⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢿⣇⠸⣎⣻⡷⠶⠶⠶⠿⣄⣀⣀⣀⣀⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠈⠻⣷⣬⣿⡿⠂⠀⠀⠀⢀⣼⣯⡷⣶⡀⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⢠⡞⠁⠀⠀⢠⡇⠀⠀⠀⠉⠀⠀⣿⣧⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀ ⠀⢸⡇⠀⠀⢠⣿⡇⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠿⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀ ⠀⢸⡇⢀⠀⣾⡟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⠿⢿⣧⠀⠀⠀⠀⠀ ⠀⠈⣿⢾⡆⣿⠁⢀⣴⣇⣀⠀⠀⣀⡀⠀⠀⠀⠀⠀⢹⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡟⠉⠉⢀⡈⣿⣇⠀⠀⠀⠀ ⠀⠀⢿⣷⣿⡟⠀⣼⣏⣛⣿⣿⣿⣿⣿⣶⣦⣤⣰⣴⠾⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⠟⠀⣰⣶⣾⣿⣿⣿⡆⠀⠀⠀ ⠀⠀⡾⠋⠀⠃⠀⠀⠉⠉⠉⠉⠉⠹⠃⣴⣽⠯⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣺⣿⣶⣾⡿⠟⠉⠉⠉⠹⣿⡆⠀⠀ ⠀⠀⣧⢀⣠⣀⠀⠀⠀⠀⠀⠀⢀⣠⣾⡯⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣭⣿⣿⣿⠯⣠⣶⣶⣾⣿⣿⣿⣿⡄⠀ ⠀⠀⢿⣿⣛⣻⡧⣀⣀⣤⡴⠾⣿⣯⣁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⠟⠉⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠋⠀⢹⣧⣰⣿⡿⠏⠀⠁⠀⠉⠙⢧⠀ ⠀⠀⠀⠉⠉⠉⠉⠉⠉⣷⡀⠀⠀⠉⢻⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⣿⠿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⢿⣿⣏⣠⣴⣶⣾⣿⣶⣦⣸⡇ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡇⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⣿⠇⠉⠻⢷⣦⡀⠀⠀⠀⠀⠀⠀⢻⡆⠀⠀⣸⣿⣿⢿⠋⠉⠀⠉⠙⢿⣿⡇ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⢠⣤⣴⣾⠿⠶⠾⠟⢀⣠⣶⠾⠉⠉⠀⠀⠀⠀⠀⢠⣿⠃⠀⢠⣿⣭⣾⣿⣶⣾⣧⣄⡀⠈⣿⡇ ⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⠃⠀⠀⠀⢀⣿⡇⠀⠀⠀⠀⠀⠀⢀⠘⣿⠀⠀⠀⣀⣶⠾⡛⠉⠁⠀⠀⠀⠀⢀⣠⣴⠾⠟⠁⠀⣠⣿⡿⢿⡟⠛⠻⠿⠿⣿⣷⣀⣿⠁ ⠀⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⣠⡿⣿⡇⠀⠀⠀⡀⠀⠀⣼⣷⣿⠀⠀⣾⣿⣷⣿⣉⣀⣀⠀⣀⣤⣾⠿⠋⠁⠀⠀⠀⣴⣿⣿⣶⣾⣼⣤⡀⠀⠀⠈⢿⣿⡇⠀ ⠀⠀⢀⣀⣠⡤⣤⣴⡏⠀⠀⢀⣴⡿⠁⣼⠃⠀⠀⠀⣷⣈⣷⡟⠛⠉⠀⠀⠀⠀⠿⠛⣿⣾⣥⣾⠿⠛⠁⠀⠀⠀⠀⢀⣾⡿⠿⠿⠿⠿⢿⣿⣿⣶⣦⠀⣸⡿⠁⠀ ⠀⠀⢺⣿⣷⢶⣺⡧⢀⣴⢄⣾⠟⠀⢀⣿⠀⠀⠀⢰⡿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⣾⡿⠄⠀⠀⠀⠀⠀⠘⠛⢿⣿⣿⡿⠁⠀⠀ ⠀⠀⠈⠉⠹⡿⠿⠶⠿⣿⠟⠉⣀⣤⣿⠋⠀⠀⢀⣿⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣦⣀⠀⡀⠀⠀⠀⢸⣿⠟⠁⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡾⢋⡉⠁⠀⠀⠀⣾⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣶⣴⣠⡿⠋⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣗⣩⣶⠂⣠⣶⡄⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⡿⠿⠋⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⢻⡾⠟⠉⠙⢿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠋⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
_ _ _ _ __ __ _ ___ ___ ___ ___ _ __ | |__ _ _| |_| |_ ___ ___ _ __ ___ | '__/ _` |/ __/ __/ _ \ / _ \| '_ \| '_ \| | | | __| __| / __/ _ \| '_ ` _ \ | | | (_| | (_| (_| (_) | (_) | | | | |_) | |_| | |_| |_ | (_| (_) | | | | | | |_| \__,_|\___\___\___/ \___/|_| |_|_.__/ \__,_|\__|\__(_)___\___/|_| |_| |_|
[02/28/2025] ze.wtf rewrite

In the last week or so I have picked up working on one of my older projects again.

That project is a URL shortener with a surprising amount of history behind it, all of which is sort of irrelevant to this post so I won't get deep into it. I made it circa... 2019, I think? The original website was made with PHP and MySQL as that was my stack of choice at the time and has been working well for a while until I took it offline about half a year ago. The reason being that I moved from using a third party host to self-hosting, and I didn't want to have to set up a PHP VM in Proxmox. I figured I could also practice programming again and rewrite it in Python but I kinda felt burnt out so I shelved it.

Now I have finally gotten it to a working stage, where it has good, invite-based auth, and almost all of the basic features it had before, with the small exception being an API endpoint. The invite system is a new addition, which happened because of a few reasons, chiefly the sheer amount of abuse that URL shorteners receive online, and also to prepare it for other things I have in mind for it in the future. I expect to publish the demo soon, but I'd like to run a few more tests to ensure security and database parity. I'm also hoping to move some of the data from the old DB into the new one eventually.

I'll make a post here with invite codes once I am ready for others to begin testing. I'm writing this at 4 AM so I hope at least some of it makes sense, lol.

Anyway, deuces.