Terrabuzz
Social media based on connecting users on the basis of interests, integrating a system of news-feed, following/followers, notifications, profile updates, and a basic settings page
Install / Use
/learn @Rubix982/TerrabuzzREADME
Terrabuzz - A Student Social Media Application
<p align="left"> <a href="#"> <img alt="React" src="https://img.shields.io/badge/React-React?&style=for-the-badge&logo=react&logoColor=000&color=61DAFB"/> <img alt="ReactStrap" src="https://img.shields.io/badge/ReactStrap-ReactStrap?&style=for-the-badge&logo=bootstrap&logoColor=000&color=7952B3"/> <img alt="React Router" src="https://img.shields.io/badge/React%20Router-React%20Router?&style=for-the-badge&logo=react%20router&logoColor=fff&color=CA4245"/> <img alt="JavaScript" src="https://img.shields.io/badge/Javascript-Javascript?&style=for-the-badge&logo=javascript&logoColor=fff&color=F7DF1E"/> <img alt="NodeJS" src="https://img.shields.io/badge/NodeJS-NodeJS?&style=for-the-badge&logo=node.js&logoColor=fff&color=339933"/> <img alt='ExpressJS' src="https://img.shields.io/badge/Express-Express?style=for-the-badge&logo=express&color=000000"/> <img alt='JSON Web Tokens' src="https://img.shields.io/badge/JSON%20Web%20Tokens-JSON%20Web%20Tokens?style=for-the-badge&logo=json%20web%20tokens&color=000000&logoColor=fff"/> <img alt="Nginx" src="https://img.shields.io/badge/nginx%20-%23009639.svg?&style=for-the-badge&logo=nginx&logoColor=white"/> <img alt="Vercel" src="https://img.shields.io/badge/Vercel-Vercel?&style=for-the-badge&logo=vercel&logoColor=fff&color=000"/> <img alt="Docker" src="https://img.shields.io/badge/Docker-Docker?&style=for-the-badge&logo=docker&logoColor=fff&color=2496ED"/> <img alt="Microsoft Azure" src="https://img.shields.io/badge/Microsoft%20Azure-Microsoft%20Azure?&style=for-the-badge&logo=microsoft%20azure&logoColor=fff&color=0089D6"/> <img alt='MySQL' src="https://img.shields.io/badge/MySQL-MySQL?style=for-the-badge&logo=mysql&color=4479A1&logoColor=fff"/> <img alt='Mongo DB' src="https://img.shields.io/badge/MongoDB-MongoDB?style=for-the-badge&logo=mongodb&logoColor=fff&color=47A248"/> <img alt='Redis' src="https://img.shields.io/badge/Redis-Redis?style=for-the-badge&logo=redis&logoColor=fff&color=DC382D"/> <img alt="Neo4j" src="https://img.shields.io/badge/Neo4j-Neo4j?&style=for-the-badge&logo=neo4j&logoColor=fff&color=008CC1"/> <img alt="Eslint" src="https://img.shields.io/badge/ESlint-ESlint?&style=for-the-badge&logo=eslint&logoColor=fff&color=4B32C3"/> <img alt="NPM" src="https://img.shields.io/badge/npm-npm?&style=for-the-badge&logo=npm&logoColor=fff&color=CB3837"/> <img alt="Github" src="https://img.shields.io/badge/Github-Github?&style=for-the-badge&logo=github&logoColor=fff&color=181717"/> <img alt="Github Actions" src="https://img.shields.io/badge/Github%20Actions-Github%20Actions?&style=for-the-badge&logo=github%20actions&logoColor=fff&color=2088FF"/> </a> </p>[![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url]
- Rubix982, Saif Ul Islam, [![LinkedIn - Rubix982][linkedin-shield]][linkedin-url-rubix982]
- Hassanzhd, Muhammad Hassan Zahid, [![LinkedIn - Hassanzhd][linkedin-shield]][linkedin-url-Hassanzhd]
- TashikMoin23, Tashik Moin Sheikh, [![LinkedIn - TashikMoin23][linkedin-shield]][linkedin-url-tashikMoin23]
- HasanBurney, Hasan Burney [![LinkedIn - HasanBurney][linkedin-shield]][linkedin-url-hasanburney]
<!-- TABLE OF CONTENTS --> <details open="open"> <summary>Table of Contents</summary> <ol> <li> <a href='#description'>Description</a> </li> <li> <a href="#about-the-project">About The Project</a> </li> <li> <a href='#screenshots'>Screenshots</a> </li> <li> <a href='#demos'>Demos</a> <ul> <li><a href="#using-demo">Run Demo</a></li> <li><a href="#workflow-explanation">Workflow Explanation</a></li> </ul> </li> <li> <a href="#file-structure">File Structure</a> <ul> <li><a href="#client">Client</a></li> <li><a href="#data">Data</a></li> <li><a href="#docs">Docs</a></li> <li><a href="#server">Server</a></li> <li><a href="#web-server">Web Server</a></li> </ul> </li> <li> <a href="#getting-started">Getting Started</a> <ul> <li><a href="#prerequisites">Prerequisites</a></li> <li><a href="#installation">Installation</a></li> </ul> </li> <li><a href="#roadmap">Roadmap</a></li> <li><a href="#contributing">Contributing</a></li> <li><a href="#license">License</a></li> <li><a href="#contact">Contact</a></li> <li><a href="#acknowledgements">Acknowledgements</a></li> </ol> </details>
<!-- Description-->
Description
Finding relations among people is one of the hardest things to do with social media these days, contrary to the word social media in the first place. More and more emphasis is put on driving a great amount of reactions, rather than focusing on helping people find more connections far more easily than others.
What does this mean? It means that there are lower chances or possibilities for artists, small business, startups, to more easily connect with their audience. Social media really should be about socializing and finding it easier to connect and find people similar to your interest, and finding relationships between what people like and what they post content about is the main purpose for this creation. Inspired by the research and idea carried forward by graph databases, the main motivation and idea for this was to enable people to connect to other people far more easily. Focusing on actual quality of content, and not just quantity of content.
<!-- ABOUT THE PROJECT -->
About The Project
Terrabuzz is just this, a social media website that emphasizes on building relations with people, and helping people figure out similar groups of communities.
It will focus on having a homepage - a feed view, a profile page for each user, and the ability to search for other users meant to find other connections.
Screenshots
- Home page when logged out <img src='./docs/screenshots/1.png' alt='' />
- Registration page <img src='./docs/screenshots/2.png' alt='' />
- Verification email <img src='./docs/screenshots/3.png' alt='' />
- Login page <img src='./docs/screenshots/4.png' alt='' />
- First login page <img src='./docs/screenshots/5.png' alt='' />
- Basic newsfeed <img src='./docs/screenshots/6.png' alt='' />
- Profile page <img src='./docs/screenshots/7.png' alt='' />
- Modal to change information <img src='./docs/screenshots/8.png' alt='' />
- Searching for profiles that have an interest <img src='./docs/screenshots/9.png' alt='' />
- Searching for profiles based on user handle <img src='./docs/screenshots/10.png' alt='' />
- Settings dropdown with the notification page in the background. No notifications generated, thus, no notifications displayed at the moment for this new account <img src='./docs/screenshots/11.png' alt='' />
- Individual post page <img src='./docs/screenshots/12.png' alt='' />
- Profile page of another user, who is being followed ( denoted by the red cross symbol ) <img src='./docs/screenshots/13.png' alt='' />
- Post shown after connecting with user <img src='./docs/screenshots/14.png' alt='' />
- Settings page <img src='./docs/screenshots/15.png' alt='' />
<!-- YOUTUBE DEMOS -->
Demos
<!-- Using The Application Demo -->Using Demo
YT link to video a video showing the project demo will be placed here
<!-- WORKFLOW EXPLANATION -->Workflow Explanation
YT link to video explaining the workflow of the project will be placed here
<!-- FILE STRUCTURE -->
File Structure
This sections explains the file structure for the whole project
<!-- ROOT -->Root Directory
<!-- CLIENT -->Client
The client directory contains the entirety of the frontend application. This means the ReactJS code with different sections designed, for example,
publicdirectory contains information for the basic React applicationsrccontains the pages, components, and the assets used for the pagesAPIcontains the API object, which can send GET and POST requests to the backend specified via a .env file located underclientassetscontains the individual pages as directories to segregate the different mutlimedia filescomponentsalso contains a segregation. Each folder insidecomponentsis marked with the page component that uses those component. Each folder must have aMainContent.jsthat arranges and organizes all the other components within the folder, if they exist. Errors thrown here render an error page on the web browser tabpagescontain single page views for a specified URLservicescontains the client side logic for dealing and handling the payloads. The error messages that occur here are displayed within the Chrome Dev Tool's console.stylesis also separated into folders, each folder contains individual files for each component used respectively undercomponents, and each file is suffixed with.module.cssto make sure that styling is only applied to the component it is used inApp.jscontains the routing f
Related Skills
bluebubbles
331.2kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
331.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
331.2kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
prose
331.2kOpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
