jm-shi / Mern Social Network
Licence: mit
Building a social network with MERN stack
Stars: ✭ 122
Programming Languages
javascript
184084 projects - #8 most used programming language
Labels
Projects that are alternatives of or similar to Mern Social Network
Onebody
private member portal for churches, built with Ruby on Rails
Stars: ✭ 1,408 (+1054.1%)
Mutual labels: social-network
Socialnetwork
Laravel and Vue.JS powerd social network
Stars: ✭ 101 (-17.21%)
Mutual labels: social-network
Firstcoursenetworkscience
Tutorials, datasets, and other material associated with textbook "A First Course in Network Science" by Menczer, Fortunato & Davis
Stars: ✭ 111 (-9.02%)
Mutual labels: social-network
Sharer.js
🔛 🔖 Create your own social share buttons. No jquery.
Stars: ✭ 1,624 (+1231.15%)
Mutual labels: social-network
Materialabout
It's a material-design about screen to use on your Android apps. A developer profile and application information easy to integrate. 🔖
Stars: ✭ 1,511 (+1138.52%)
Mutual labels: social-network
Microstatus
Lightweight Mastodon- and GNU social-compatible ActivityPub and OStatus server implementation
Stars: ✭ 96 (-21.31%)
Mutual labels: social-network
Laravel Social Network
Laravel 5.4 - location-based social network
Stars: ✭ 114 (-6.56%)
Mutual labels: social-network
App
free software application for social network analysis and visualization
Stars: ✭ 94 (-22.95%)
Mutual labels: social-network
Socialworth
A PHP library for determining the popularity of a URL across social networks.
Stars: ✭ 119 (-2.46%)
Mutual labels: social-network
Doesangue Core
Online platform that connects people interested in blood donation
Stars: ✭ 91 (-25.41%)
Mutual labels: social-network
Mixedfeed
A PHP library to rule social-feeds, to entangle them with magic, a PHP library to gather them and bind them in darkness
Stars: ✭ 105 (-13.93%)
Mutual labels: social-network
Comrad
A socialist network: encrypted, insurveillable, unmontizeable, and self-governing. App is written in Python. (Calling all socialist programmers for help!)
Stars: ✭ 122 (+0%)
Mutual labels: social-network
Concierge
Modular chat bot. (Karma + Sassy + Hubot) * (Discord + Facebook + Messenger + Slack + Skype + Telegram + Hipchat + ...) = Concierge
Stars: ✭ 121 (-0.82%)
Mutual labels: social-network
MERN Social Network
A MERN stack social network application with MVP features implemented: user authentication, profile viewing, posting, commenting, and following/unfollowing.
Demo
Signup | Feed |
---|---|
Comment | Discover |
---|---|
Profile | Edit |
---|---|
User Stories
- [x] As a user, I want to be able to create an account so that I can log in.
- [x] As a user, I want to be able to log in so that I can view my home feed.
- [x] As a user, I want to be able to view posts so that I know what people I’m following are up to.
- [x] As a user, I want to be able to create a post so that I can share my current status.
- [x] As a user, I want to be able to delete my posts so that people can no longer see them.
- [x] As a user, I want to be able to edit my posts so that I can correct or clarify my thoughts.
- [x] As a user, I want to be able to like/unlike a post so that I can approve posts I am fond of.
- [x] As a user, I want to be able to comment on a post so that I can share additional thoughts.
- [x] As a user, I want to be able to view other users' profiles so that I can learn more about them.
- [x] As a user, I want to be able to edit my own profile (i.e. change name, avatar color, or bio) so that I can add more style to my page.
Potential improvements:
- Add option for user to post images
- Add option for user to change their avatar/background to a custom image
- Add social media login options (e.g. Facebook, Google, Twitter)
- Implement find users feature (i.e. find users by typing their name into a search field)
- Improve code organization
- Write more tests
Setup instructions (tested on macOS 10.15 Catalina)
First install the dependencies:
- Clone the repository.
-
cd
into the directory and runnpm install
. - Run
cd client && npm install
.
Next, set up the database credentials:
- Log into or create an MongoDB Atlas account.
- Create a new MongoDB cluster. You can go with the default settings or customize them as you wish. Once the cluster is created, click "Connect."
- Whitelist a connection IP address and create a new MongoDB user.
- Once connection security is set up, choose "Connect Your Application."
- Replace the dbURI in
secrets.js
, located in backend folder, with the connection string. ReplacesomeUser
and<password>
with the user and password you created in step 2. -
cd
back into the main directory and runnpm start
. You can access the site atlocalhost:3000
.
Optional: If you want to also deploy the app to Heroku, first go through the aforementioned steps and then proceed as follows:
- Log into or create a Heroku account.
- Create a new app in Heroku.
- In the settings tab, add the config vars for REACT_APP_DB_URI and REACT_APP_JWT_KEY. The value for REACT_APP_DB_URI should be the same as the one you previously entered for dbURI in
secrets.js
. REACT_APP_JWT_KEY can be set to any random string. - In the deploy tab, choose any deployment method to deploy the application.
Built With
- Express.js - Backend web framework
- Heroku - Platform to deploy web applications
- JSON Web Token - A standard to securely authenticate HTTP requests
- Material-UI - UI library for React
- MongoDB - Database to store document-based data
- Mongoose - Object-modeling tool for Node.js
- Node.js - Runtime environment to help build fast server applications
- React - JavaScript library for building user interfaces
- Redux - JavaScript library to help better manage application state
Acknowledgments
- Design was inspired by preexisting projects like Qolzam's React Social Network and Shama Hoque's Mern Social.
- Authentication was implemented with the help of Krunal Lathiya's example, Brad Traversy's guide on building a login system, and Maximilian Schwarzmüller's guide on JWT (primarily episodes 11 and 12).
- Restful CRUD API builds on concepts explained in Andrew Mead's Node.js course.
- Material-UI, React, Redux, Mongoose documentation.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].