SnapShare is a live-hosted social media backend web application built using NestJS and Express, inspired by Instagram but with enhanced functionalities. The project focuses on providing a seamless social networking experience by implementing custom algorithms that prioritize user interactions in unique ways.
- Authentication System
Secure login and sign-up processes using JWT (JSON Web Tokens) for authentication, ensuring robust user verification and session management.
- User Profiles
Manage personal information and privacy settings, and view others’ profiles. Profiles can be either private or public. For private profiles, users must be part of the owner’s network to view their posts and stories.
- Posts and Stories
Create and interact with posts and stories, including liking and commenting. SnapShare also provides APIs for retrieving post data, with options to archive posts to remove them from your public profile layout. Most GET methods implement pagination to handle large data sets efficiently.
- Feed
The user feed is personalized using a custom algorithm that prioritizes key aspects of user interaction. Factors include the user’s personal engagement with posts/stories, the total engagement with the wider SnapShare community and the content's recency. The feed is paginated to ensure smooth performance and better user experience.
- User Networking
Request, accept, or reject friend requests. Manage your network by following/unfollowing users or removing friends from your network.
- Search and Discover
Search for users and posts using an optimized search bar, ensuring fast and accurate results. Search results are paginated for efficient data handling.
- Comments and Likes
SnapShare provides APIs for liking and commenting on various types of content, enabling seamless interaction with posts and stories. Comment and like data retrieval is also paginated.
- Notification System
An API that tracks and returns the count of unseen notifications. Another API delivers notifications related to engagement with the user’s content and interactions within their friends' network.
- Database: PostgreSQL
- Backend Framework: NestJS / Express
- Authentication: JWT (JSON Web Tokens)
- API Documentation: Swagger
- ORM/Database Interaction: TypeORM
- Caching: CacheManager
- Deployment: Render
- Version Control: Git / GitHub
- Task Runner: npm
The public domain name for the SnapShare application is: https://snapshare-zw9v.onrender.com
All project APIs are documented using Swagger. You can access the complete API documentation by visiting: https://snapshare-zw9v.onrender.com/api
Below is a flowchart that illustrates the complete algorithm for the post feed in SnapShare application. This visual representation provides a clear understanding of the processes involved in generating a personalized feed for users.
To use the SnapShare APIs, the Swagger API documentation is available at:
SnapShare Documentation
You can access the live-hosted web application at:
SnapShare
To set up SnapShare locally, follow these commands:
- Clone the repository from the development branch:
git clone -b development https://github.com/rigelHadushiDev/SnapShare.git
- Run npm Install:
npm install
- Run the Application:
npm run start:dev
This project was developed by Rigel Hadushi as part of a personal initiative.
- GitHub: rigelHadushiDev
- LinkedIn: rigelhadushi
- Email: rigelhadushi4@gmail.com