May 2024
Mini-Instagram
A complex, feature-filled photo-sharing social media platform, inspired by Meta’s Instagram. Supports standard user functions (like, comment, post, message, search), plus more!
Tech Stack: TypeScript, React, CSS, Spark Java, mySQL, AWS services (RDS, EC2), Apache Kafka, ChromaDB, ChatGPT API
01.
Key Application Pages.
User Registration
Users are prompted with a page to login/sign up. New users input a slew of information, including their birthday, affiliations, and authorization credentials.
User Profile
On a user’s profile page, they can see their user information, posts, friends, recommendations, and an ability to edit their profile. Notice the bio of this user. Each user is linked to an actor* (using image vector databases) in this rendition of Instagram!
Chats
Users can message other users. Any accepted chat requests will filter into this interface, and users can select any corresponding chat and interact with other group chat members. From here, users can invite new friends to the chat as well. These chats persist between login attempts.
Home Screen
Upon logging in, users are presented with their running feed, including relevant posts & their corresponding textual & visual content, likes, and comments. Users have the ability to interact with these posts. On the right side, we’re provided with potential friend recommendations.
Notifications
This page serves to notify users of incoming friend/chat requests. Users have the ability to accept/deny this request as they see fit. Accepted friends should show up in their friends list (viewable from profile) and get removed from their friend recommendations list (viewable from home screen & profile).
Search page
This page serves to notify users of incoming friend/chat requests. Users have the ability to accept/deny this request as they see fit. Accepted friends should show up in their friends list (viewable from profile) and get removed from their friend recommendations list (viewable from home screen & profile).
02.
Frontend Technologies
React
Javascript library
Component-based architecture: encourage reusable UI elements across pages.
State & Hooks: active & dynamic rendering of content.
TypeScript
STATIC TYPED JAVASCRIPT
Development Bulk: All frontend pages/ components written in TypeScript.
Static Typing: Catches type errors at compile time, rather than runtime.
CSS
CASCADING STYLE SHEETS
Styling Components: uniquely designed UI elements.
Layout Control: fine grained control of UI positioning.
Bootstrap: built-in classes.
03.
Backend Technologies
mySQL Database
data storage & management
Modular Tables: encouraged compartmentalized & customized data storage.
Made table for users, posts, comments, likes, friends, recommendations, requests, & hashtags.
Node.js & Express
backend server hosting
RESTful API: allows for straightforward CRUD (Create, Read, Update, Delete) database operations.
Event-driven Architecture: handles large number of simultaneous connections.
Spark Java
scalable compute algorithms
Friend & feed recommendation algorithms, to customize user experiences, were computed in Spark java to allow for faster & more scalable computation.
AWS
cloud hosting
Elastic Compute (EC2): Virtual server to run and deploy web application.
Relational DB (RDS): Store application data with enhanced security & management.
Amazon S3: Image hosting.
04.
Advanced Features
Face Matching
Stored a large database of actor images as vectors in ChromaDB (a vector database), and for a given user, determined top 5 “closest-looking” actors via cosine similarity between user profile picture vector and database vectors.
Recommendations
Determine mutual friend relationships between pairs of users, and their corresponding strengths. For given user X, we return the HIGHEST social rank users (i.e. most “connected” users) from all the users that X has a mutual friend with.
Apache Kafka
Subscribe to Twitter-API topic, accept an incoming stream of “tweets” daily, and store them in our post content databases. Have these tweets displayed on users’ feed when relevant/consistent with their interests.