https://github.com/brochin5671/statusfer
A real-time short-form blogging CRUD web-app where you can post and see other users' chats using a REST API, socket.io, and MongoDB.
https://github.com/brochin5671/statusfer
api chat crud expressjs mongodb nodejs real-time social-media socket-io statusfer webapp
Last synced: 2 months ago
JSON representation
A real-time short-form blogging CRUD web-app where you can post and see other users' chats using a REST API, socket.io, and MongoDB.
- Host: GitHub
- URL: https://github.com/brochin5671/statusfer
- Owner: Brochin5671
- Created: 2020-09-04T00:45:32.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-08-30T20:07:13.000Z (almost 3 years ago)
- Last Synced: 2025-02-17T15:51:59.974Z (over 1 year ago)
- Topics: api, chat, crud, expressjs, mongodb, nodejs, real-time, social-media, socket-io, statusfer, webapp
- Language: JavaScript
- Homepage: https://statusfer.fly.dev
- Size: 392 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Statusfer
## Overview
A real-time short-form blogging CRUD web-app where you can post and see other users' chats using a REST API, socket.io, and MongoDB.
## How to Use
- Go to [Statusfer](https://statusfer.fly.dev)
- Register an account
- Type your first status in the textbox and click _Post_
- Edit and delete your statuses using the buttons attached to them
- Like or dislike statuses with the feedback arrow icon buttons
- View a status by clicking the _View_ button
- View a user's profile by clicking on their username
- View your profile or choose to logout by clicking on Profile
- When on profile, click Settings if you want to change your username, email, password, or delete your account
- When logged out, go to Login to access your account again
## How It Works
### Client-side
- Fetch API is used to communicate with the server
- Uses the socket.io client to listen for events and update pages in real-time
### Server-side
- Uses Express.js as the back-end framework for the Node.js runtime to deliver resources to the client
- Mongoose API is used to communicate with the MongoDB database
- Bcryptjs hashes passwords so they can be securely stored in the database
- JWTs are used to authenticate users for user requests
- Uses socket.io to emit events for the client
- Filters profanity using the _obscenity_ package
## Why?
- To demonstrate my full-stack skills and not use any frameworks like React
- Wanted to learn about encryption and security for user data, REST API architecture for creating a CRUD web-app
- Test my ability to create and become a better developer
## How to Run It Locally
- Clone the repository:
```
git clone https://github.com/Brochin5671/statusfer.git
```
- Ensure to create a **.env** file with the following variables:
```
DB_CONNECTION=
ACCESS_TOKEN_SECRET=
REFRESH_TOKEN_SECRET=
```
- Run your application
- Ensure Node v18.x is installed
```
npm ci
npm start
```
- The application will be available at **localhost:3000**