Skip to main content

Features

Authentication

Users can create an account and log in using email and password credentials.

FeatureDescription
RegistrationCreates a new user account with hashed password
LoginValidates credentials and issues access + refresh tokens
Token refreshExchanges a valid refresh token for a new access token
LogoutInvalidates the refresh token server-side

Token lifecycle:

  • Access token: short-lived (e.g., 15 minutes), sent in every API request header.
  • Refresh token: longer-lived, used only to obtain a new access token.

Posts

Users can create short-form text posts similar to Threads.

FeatureDescription
Create postAuthenticated user submits a text post
View postFetch a single post with its metadata
Delete postOwner-only action to remove a post
List posts by userView all posts authored by a specific user

Replies

Posts can have nested replies, enabling threaded conversations.

FeatureDescription
Create replyAuthenticated user replies to a post
List repliesFetch all replies for a given post

Likes

Users can express appreciation for posts.

FeatureDescription
Like a postIncrements the like counter; records the user-post relationship
Unlike a postRemoves the like; decrements the counter
Like count displayVisible on each post card

Optimistic UI updates are applied on the client side so the like toggle feels instant.


Following system

Users can follow other accounts to build a personalized feed.

FeatureDescription
Follow a userCreates a directed follow relationship
Unfollow a userRemoves the follow relationship
Following listLists accounts a user follows
Follower countDisplayed on profile pages

Following feed

The home feed shows posts only from accounts the authenticated user follows.

FeatureDescription
Feed retrievalGET /feed/following — cursor-paginated
Sort orderReverse chronological (newest first)
ScopeLimited to followed users

Implementation notes:

  • The query finds all userIds in the user's following list, then fetches recent posts where authorId is in that set.
  • Cursor-based pagination avoids the performance pitfalls of offset pagination on large datasets.

User profiles

Each user has a public profile page.

FeatureDescription
View public profileUsername, bio, post count, follower/following counts
My profileSame as public, but with edit controls
Profile postsLists all posts by the user

Planned features

The following features are designed but not yet implemented:

FeatureNotes
Real-time notificationsPlanned via Socket.IO or WebSocket
In-app notification centerUI for likes, replies, new followers
Push notificationsFuture work
Full-text searchSearch posts and users
Content moderationReport / block users