https://github.com/tom474/snapmate-website
[RMIT 2024B] COSC2769 - Full Stack Development - Group Assignment
https://github.com/tom474/snapmate-website
expressjs mongodb nodejs reactjs tailwindcss typescript web-development
Last synced: 4 months ago
JSON representation
[RMIT 2024B] COSC2769 - Full Stack Development - Group Assignment
- Host: GitHub
- URL: https://github.com/tom474/snapmate-website
- Owner: tom474
- Created: 2025-02-14T04:03:45.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-14T11:10:06.000Z (over 1 year ago)
- Last Synced: 2025-02-14T12:23:17.940Z (over 1 year ago)
- Topics: expressjs, mongodb, nodejs, reactjs, tailwindcss, typescript, web-development
- Language: TypeScript
- Homepage: https://youtu.be/-0PlkwV9u4A?si=HNdaxbalL7DUYv-t
- Size: 1.01 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SnapMate Website
A **social media platform** that allows users to connect, share content, and build communities. SnapMate enables users to create and interact with posts, join interest-based groups, and manage friendships, all within a secure and engaging environment.
## Tech Stack
- **Client:** React.js, Tailwind CSS
- **Server:** Node.js, Express.js
- **Database:** MongoDB
## Features
### User Management
- Register and log in to an account.
- Manage personal profiles, including avatars and personal information.
- Send, accept, and remove friend requests.
### Social Networking
- Create, edit, and delete posts (supports text and image uploads).
- Comment and react to posts with different reaction types (Like, Love, Haha, Angry).
- View and manage post history, including edited versions.
### Group Management
- Create and manage groups (admin approval required).
- Join or leave groups based on visibility settings (public/private).
- Group admins can approve/decline join requests and manage members.
### Notifications & Requests
- Real-time notifications for friend requests, post interactions, and group activities.
- Track pending friend and group join requests with status updates.
### Admin Controls
- Manage user accounts (suspend/reactivate users).
- Approve or reject group creation requests.
- Moderate posts and comments for rule enforcement.
### Performance & Security
- Role-based access control (RBAC) for user privileges.
- Password hashing and authentication using **bcrypt**.
- Pagination and infinite scrolling for efficient data loading.
## Quick Start
> Follow these steps to set up the project locally on your machine.
Clone the repository
```bash
git clone https://github.com/tom474/snapmate_website.git
```
Navigate to the project directory
```bash
cd snapmate_website
```
Create `.env` file in `server` and set up environment variables
```
MONGO_URI="your_mongo_uri"
```
### Server Setup
From the project's root directory, navigate to `server`
```bash
cd server
```
Install dependencies
```bash
npm install
```
Start the server
```bash
npm start
```
### Client Setup
From the project's root directory, navigate to `client`
```bash
cd client
```
Install dependencies
```bash
npm install
```
Start the client
```bash
npm start
```