NexShare — Full-Stack Social Sharing App
A social space built for people who make things — a clean feed, a discovery grid that adapts to your interests, and an interface tuned so every interaction lands immediately. Next.js and MongoDB, end to end.

A full-stack social product built from the data model up: authentication, a content feed, and the create-and-share loop, with Next.js serving both the interface and the API routes over MongoDB.
Case study
How this was built, in the order I'd walk someone through it.
- 01
Problem
Social feeds optimise for time spent, which is why they feel noisy to the people posting real work into them. NexShare was an attempt at the opposite premise — a feed ordered around what someone actually follows and cares about, with an interface that stays out of the way of the thing being shared.
- 02
Users
Creators posting workPeople following and discovering it - 03
Architecture
Next.js for both the frontend and the API routes, with MongoDB as the data store and authentication gating the feed. One deployment, one codebase, no separate API service.
- 04
My responsibility
Solo — every layer, from schema through interface to deploy.
- 05
One important feature
Interactions that resolve immediately
Likes, comments and follows land without a spinner between the user and the action, and transitions are tuned to around 200ms with a touch of overshoot. On a feed, perceived latency is the product — a like that takes half a second to confirm makes the whole app feel broken regardless of what the server did.
- 06
How it works internally
Discovery is a filterable grid that reshuffles around the topics a user engages with, rather than a single global ranking. Accessibility was treated as a build requirement rather than a pass at the end: keyboard paths, visible focus rings, reduced-motion support and semantic markup throughout.
Screens
Landing
The pitch in one screen — the feed card previewed live alongside it, so the product is visible before sign-up.
What it's built around
The four commitments the app is designed against: instant interactions, adaptive discovery, motion with intent, and accessibility by default.
Sign in
Split layout carrying the positioning through to auth, with a return path back to whatever the visitor was trying to reach.