A full-featured, enterprise-grade social networking platform inspired by Instagram. Built with a cloud-native architecture for high performance, scalability, and real-time interactivity.
Project Overview
This project replicates core social media functionality. Users can create profiles, post media, comment, like, and follow others. In addition, it includes enterprise-ready features such as secure authentication, AWS-powered geolocation suggestions, and a distributed event-driven backend architecture.
Tech Stack
Front-End
- React + SSR
- Redux
- TypeScript
- JavaScript
- HTML
- CSS
- styled-components
- Jest
- Facebook Lexical
Back-End
- Node.js
- Koa
- JWT
- Redis
- ElasticSearch
- JanusGraph
- AWS S3, SES, SNS
- AWS Location Services
- AWS SQS
- OpenAI integration
Infrastructure, DevOps & Tools
- Docker / Docker Compose
- GitHub
- Serverless Framework
- AWS EC2, Lambda, Cloudfront
- NGINX
- Jira
- Grafana
- Kibana
- Insomnia REST Client
Screenshots

User registration form with validation and backend integration via Koa + JWT

Confirmation email received as part of signup flow

The user's primary feed, displaying posts from the specific users they follow

The Explore page showing posts and includes the search popout with example search results

The final step in the create new post flow, showing adding captions, location, collaborators, and additional settings

Modal where a user can add, like, and reply to comments

The profile page showing a user's bio and additional information, as well as showing each of that user's posts

Page allowing the user to update their bio, profile picture, webpage, and additional information

Example Grafana visualizations based on metrics collected via statsd

The final step in the create post flow as seen on mobile

The main feed as it appears on mobile devices
Challenges & Solutions
The biggest challenge was infrastructure cost. Since this project is not intended to generate revenue, I had to design for cost-efficiency without sacrificing architecture quality.
The most notable tradeoff was with the graph database. The original plan was to develop locally using Gremlin in JanusGraph and then deploy to AWS Neptune. However, even a minimal Neptune database proved to be too expensive. The solution was to instead self host a JanusGraph install on an existing EC2 Instance.
On the other hand, I tested deploying the back-end REST Api to AWS Lambda instead of EC2. While it would certainly save money, AWS Lambda cold starts introduced unacceptable latency for user-facing APIs. In this case, a continuously running EC2 instance offered a better balance between performance and cost.
What's Next
The following are some of the current pending high priority Jira tickets for expanding functionality:
- LINSTA-130: Epic - Create notification and messaging systems
- LINSTA-127: Collect front end metrics and send to SQS / Lambdas for processing