Work
03 Full-Stack Social Media Platform · Personal Project

ULink

A personal showcase of the systems behind a modern social platform: multimedia publishing, relationships and privacy, stories and reels, and realtime messaging, built on a vanilla-JS frontend rather than a framework.

Role

Independent Design & Full-Stack Development

Type

Personal Showcase Project

Status

Functional Prototype

Primary Stack

Node.js · Express · WebSockets

Social Model

Privacy as a first-class relationship state

Public and private accounts, followers and follow requests, blocking, muting, restricting and close-friend tagging.

Every relationship state feeds directly into what a viewer can see: the feed, discovery and messaging all respect it rather than treating privacy as a single global toggle.

ULink login screen with username/email and password fields
Sign in: ULink · Connect. Share. Inspire.

Publishing

Posts, reels and stories

Posts

Up to 10 images/videos per post with captions, location, carousel behavior, filters, likes, comments, replies and saves.

Reels

A vertical, viewport-based browsing experience with play/pause, looping, likes and comments; no algorithmic recommendation engine.

Stories

Image/video with text overlays, 24-hour expiry, navigation, deletion and highlights.

ULink home feed with a story tray and a post from a followed creator
Home feed & stories tray
ULink create-post modal with an upload step for up to 10 photos or videos
Create post: carousel upload

Realtime Messaging

The strongest technical piece of ULink

One-to-one and group conversations with persistent history, delivered over an authenticated WebSocket connection layered on SQLite persistence.

Client
Authenticated WebSocketws
Messaging Layer
SQLite Persistence
TextImage / Video AttachmentsVoice MessagesTyping IndicatorsUnread CountsRead / Seen StateMessage Reactions
ULink messages panel with an empty state prompting the user to send private photos, videos and voice notes
Messages: one-to-one & group conversations

Discovery

Chronological, relationship-aware, not algorithmic

The feed is chronological and respects each viewer's relationship and privacy state.

Discovery covers an explore grid, account search, post search, caption/location search and hashtag-style caption search: simple creator discovery, not algorithmic ranking. Persistent, realtime notifications cover likes, comments and follows; messaging has its own separate unread/live behavior.

ULink explore page with trending creators and an explore content grid
Explore: trending creators & content grid
ULink search results showing a matched creator
Search: people, posts, reels & locations

Profile

Posts, reels and account control in one place

ULink profile page showing a creator's post grid
Profile: posts grid
ULink profile page showing the same creator's reels tab
Profile: reels tab

Account settings cover profile details, privacy, password and account deletion from a single settings panel.

Stack

Technology

Frontend

HTML5CSS3Vanilla JavaScriptCustom SPA / Hash Navigation

Backend

Node.jsExpress

Database & Realtime

SQLiteNative WebSockets (ws)

Auth & Media

JWTHTTP-Only CookiebcryptjsMulterLocal Upload Storage