Sticker peel overlay Foto de perfil de ponkis

Posted by ponkis

published on

Category: Development

the globe

Building a unique global asynchronous chat application from scratch - a journey through development, experimentation, and community.

The Beginning: Discord Integration

I started this project as a kind of external connection for a Discord server channel. You’d connect to a webpage, send messages, and they’d arrive on Discord, and vice versa—all with support for avatars, names, etc.

First Discord integration

Then I thought, hmm, I’m going to tune this up and turn it into a global asynchronous chat app, and well…

Early development

There it was going! I wanted this to be uniquenot your typical corporate messaging app that everyone makes. No, I started developing this from scratch, in Node.js, without templates, without ANYTHING. So I began. There were going to be registration options, login, profile editing, custom colored messages, etc.

Early Struggles and Bugs

At first, everything was very buggy. I had never done anything like this before, so I didn’t know how to start properly, but it worked (more or less).

Buggy early version

I had to implement many design policies and message handling to make everything look good. Here I moved the buttons around and made everything a bit cleaner, but I still needed to limit the size of message bubbles.

UI improvements

More refinements

Profile Editing Implementation

Here I already implemented profile editing—very simple but straight to the point.

Profile editing

Profile system

Testing the Core Features

Here I was already testing this seriously. The basics already worked—colors, profile pictures, names, etc. It was taking shape…

Testing phase

Core features working

But when reloading, everything would break. Eventually, I fixed it.

Reload issues

Message Management Features

Now you can delete messages, wow.

Delete functionality

Message deletion

UI Tweaks and Typing Indicators

More tweaks to the interface—I added an indicator when someone is typing.

Typing indicators

UI improvements

First Online Test

FIRST ONLINE TEST! I invited a few acquaintances to test the page. It seems to work perfectly!

First online test

Message Replies and Threads

I introduced message replies, also allowing threads.

Reply system

Authentication System

First looks at the login and registration windows.

Login screen

Registration design

Auth system

Robust Message Deletion

I made message deletion more robust to accommodate the new reply system.

Improved deletion

Notification System

Notification system!

Notifications

Emoji Implementation

Emojis! Taking into account old Facebook emojis because they’re cool (please don’t sue me).

Emoji system

Emoji picker

Old Facebook emojis

I implemented a rather invasive legal notice because I was afraid something might happen now that this was running publicly (even for testing, you have to protect yourself).

Legal notice

Reaction System Experiment

Reactions—I thought about this for a long time and added it, but it was too unsustainable to barely implement it, so I removed it instead. But it worked! Maybe I’ll implement it in the future…

Reactions experiment

Working reactions

User Profiles

Profiles! Very basic and buggy, but profiles were implemented, banners and all!

Basic profiles

Profile banners

Profile system

End-to-End Encryption Experiment

An experiment I did to implement private messages with end-to-end encryption—quite difficult to implement. It worked, but I discarded it. My philosophy with this project is that it should be totally public.

Encryption experiment

Profile Views

Preliminary views of the profiles—they already look good! I added more fields to better customize everything.

Profile preview

Custom fields

Enhanced profiles

Profile details

Clans System

Clans—I implemented clans to bring the community together a bit more in groups. I plan to add a chat for clans later, but PUBLIC.

Clan system

Clan features

Obviously, I also have to modify the profile view to show the clan. This is a very basic and ugly preliminary version.

Clan in profile

Here I already tuned it much more—it looks cleaner and simpler. I thought about removing the clan tag, but no…

Refined clan display

Image Cropper

I implemented a cropper for photos and banners to customize everything even more!

Image cropper

Themes System

Themes! Although I didn’t like that modal and finally changed it to this:

Theme system

Updated theme modal

Now yes, I put together some terms and conditions and privacy view to put the cards on the table at the globe. Pretty ugly, but I modified them later to look better haha.

Terms and conditions

Production Release

Release version MILESTONE 2.4.0 (I think? XD I don’t remember anymore). First production release!

Production release

More Clans

More clans arrive, and I improved their views :D

Clan improvements

Better clan UI

Enhanced clan views

Welcome Page

A proper welcome page—quite quirky, fun, and vintage! I love it lol.

Welcome page

The profiles are almost finished!

Nearly complete profiles

Temporary Images Experiment

An experiment with temporary images that the public will never see because it was too buggy, and I think it breaks the philosophy of the globe a bit.

Temporary images

Image system test

Failed experiment

Welcome Screen Tweaks

Tweaks to the welcome screen!

Welcome tweaks

Screen improvements

Refined welcome

Final welcome screen

Members View

Members view to see all registered users—very basic, horrible…

Members view

Badges System

More badges! I added a tester badge for 2 very special people in this project: NCubs and Topaz. Thanks!!

Tester badges

Admin Page

Admin page to check project performance (this was before a certain catastrophe happened, which I’ll talk about later).

Admin dashboard

Bots Are Coming

The bots are coming…

Bot system preview

The Apocalypse: When Everything Broke

While I was trying to create a script to automatically indent the code without my intervention (OCD, you know)… well, I completely screwed up the entire page. All the files got corrupted. It was imperceptible visually, but there were many invisible characters interfering with every part of the site, even with the ASCII art in the terminal! Everything was lost. The backup I had was very old, and I couldn’t redo all the progress I had made… So I got to work, and during a session of almost more than 8 hours, I recovered the entire project to 98% functionality, and it seems like nothing ever happened. But it did happen… it did happen, and it was very serious.

Corruption begins

Everything breaking

Recovery process

Restoration efforts

Rising from the Ashes

But well, after having recovered EVERYTHING, I made the page even more robust and pleasant to the eye, and for me in the backend. I improved the header links to be little buttons instead of plain text.

Improved header

This was after the apocalypse—even the code efficiency improved haha.

Post-apocalypse optimization

Dark Mode Implementation

Dark mode! I needed it, my eyes were screaming for it. Coding this late into the night is very visually exhausting…

Dark mode

Dark theme UI

Night coding friendly

Complete dark mode

Live and Running

Running 24/7

And… finally, it’s running! Without errors, 24/7!

Final Thoughts

This project is here for the long haul. It’s quite robust already. I never thought I could pull off a project of this caliber. I’m quite proud of all of this and of the people who have supported me.

Long live the globe! 🌍


Thank you for following this journey. The globe continues to evolve, and this is just the beginning.