Portfolio

LIRHZA

@ Code by Azhril

Software Engineer passionate about crafting high-performance web and mobile applications, with an active learning journey exploring SOC analysis and cybersecurity fundamentals.

Fullstack & Real-Time Communications•2024•Collaborative Team Platform

Winzee Web Chat application

Ultra-low latency real-time messaging application with persistent channel rooms and resilient WebSocket connections.

Winzee Web Chat application
Message Latency

< 35ms

Instantaneous two-way communication between peers

Connection Uptime

99.9%

Heartbeat pinging ensures uninterrupted presence

Active Channels

Unlimited

Scalable room isolation with Socket.io namespaces

Memory Footprint

< 45MB

Virtualized DOM rendering preserves client CPU resources

Role

Fullstack Architect & Developer

Timeline

2024

Category

Fullstack & Real-Time Communications

Context

Collaborative Team Platform

01 / Background

Project Overview & Purpose

Winzee adalah platform perpesanan instan berbasis browser yang memungkinkan kolaborasi tim tanpa hambatan. Dilengkapi dengan komunikasi real-time dua arah, ruang percakapan privat dan publik, indikator pengetikan langsung, status kehadiran aktif, serta pratinjau media instan.

Primary Objective

Menjawab kebutuhan tim pengembang yang menginginkan platform obrolan internal yang ringan, privat, dan dapat diakses langsung dari browser tanpa perlu menginstal aplikasi native berat seperti Slack atau Discord yang menguras memori RAM.

02 / Stack

Technologies & Architecture

Core Technologies
ReactNode.jsSocket.ioExpressMongoDBTailwind CSSTypeScript

Bi-directional WebSocket Pipeline

Desain arsitektur event-driven yang menghubungkan client React ke backend Node.js dan cluster MongoDB secara real-time.

Step 01

JWT Handshake & Authentication

Koneksi WebSocket divalidasi menggunakan token JWT pada tahap handshake sebelum mengizinkan bergabung ke channel.

Step 02

Event-Driven Room Multiplexing

Socket.io mendistribusikan payload pesan hanya ke client yang terdaftar di room ID tertentu dengan zero broadcast leakage.

Step 03

Asynchronous Persistence

Pesan disimpan ke database MongoDB secara non-blocking di latar belakang sehingga tidak menghambat kecepatan pengiriman pesan.

03 / Engineering

Challenges & Technical Solutions

Challenge #1: Fluktuasi Jaringan dan Putusnya Koneksi

Saat koneksi internet pengguna terputus sesaat, pesan yang dikirim saat offline bisa hilang dan status online pengguna menjadi tidak akurat.

Impact: Pengguna kehilangan riwayat pesan dan mengira pesan mereka telah terkirim padahal belum sampai ke server.

Applied Solution: Client-Side Message Queue & Auto-Reconnect

Membangun antrean pesan lokal (message buffer) di client yang secara otomatis mencoba mengirim kembali pesan saat koneksi WebSocket pulih.

Result: Zero message loss meskipun pengguna mengalami gangguan sinyal internet sesaat.

Challenge #2: DOM Overload pada Ribuan Pesan

Merender ribuan elemen pesan obrolan dalam satu halaman membuat browser lambat, memicu lag scrolling dan konsumsi RAM yang tinggi.

Impact: Aplikasi menjadi tidak responsif saat pengguna membuka riwayat obrolan yang sudah berjalan lama.

Applied Solution: Windowing Virtual List Rendering

Mengimplementasikan virtual scrolling yang hanya merender elemen pesan yang terlihat di layar pengguna ditambah sedikit buffer atas-bawah.

Result: Aplikasi tetap mulus dengan konsumsi memori stabil meskipun terdapat 10.000+ pesan.

Challenge #3: Pencegahan Kerentanan XSS pada Pesan Pengguna

Menampilkan pesan teks berformat, link eksternal, dan lampiran file yang berpotensi disisipi skrip berbahaya oleh pihak tak bertanggung jawab.

Impact: Risiko pencurian sesi login atau eksekusi skrip berbahaya di browser pengguna lain.

Applied Solution: Strict Sanitization & Transport Encryption

Penyaringan ketat menggunakan library sanitasi HTML pada sisi server dan client serta penerapan Content Security Policy ketat.

Result: Perlindungan maksimal terhadap serangan XSS dan injeksi payload.

04 / Features

Key Features & Highlights

Zero-Latency Real-Time Chat

Pertukaran pesan dua arah berkecepatan tinggi dengan konfirmasi status terkirim dan terbaca.

Live Typing & User Presence

Melihat siapa saja yang sedang online dan siapa yang sedang mengetik pesan secara real-time.

Custom Channel Rooms

Pembuatan ruang obrolan topik spesifik dengan kontrol akses dan moderasi anggota.

Inline Media Sharing

Berbagi gambar dan file langsung dengan pratinjau visual tanpa perlu meninggalkan jendela chat.

05 / Reflection

Lessons Learned & Retrospective

Key Takeaways for Future Iterations

Koneksi WebSocket wajib dilengkapi mekanisme Heartbeat ping/pong untuk mendeteksi 'ghost connection' yang terputus tanpa sinyal penutup.

Penyimpanan sementara pesan di client (offline queue) memberikan pengalaman pengguna yang jauh lebih terpercaya.

Virtualisasi daftar pesan adalah kewajiban mutlak untuk aplikasi chat skala produksi.

That's all for now.

Got a project in mind?
Let's talk

Location:

Bogor, Indonesia

Socials:

your friendly chaos creator

Azhril