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.

**Note: This is not meant for public use nor is it in any way affilated with Meta.**

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

Sign up form

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

Sign up confirmation

Confirmation email received as part of signup flow

Main feed

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

Explore with search

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

Create post

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

Comment modal

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

Profile

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

Edit profile

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

Metrics

Example Grafana visualizations based on metrics collected via statsd

Create post on mobile

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

Main feed 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