Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sandesh300/reddit-clone-backend

Reddit-Clone uses Spring Boot for backend, Spring Security with JWT, Spring Data JPA, Angular for UI, MySQL for data, and Spring MVC.
https://github.com/sandesh300/reddit-clone-backend

angular java javascript jwt-authentication mysql rest-api spring-boot spring-data-jpa spring-mvc spring-security

Last synced: about 1 month ago
JSON representation

Reddit-Clone uses Spring Boot for backend, Spring Security with JWT, Spring Data JPA, Angular for UI, MySQL for data, and Spring MVC.

Awesome Lists containing this project

README

        

# Reddit-Clone-Backend

## Introduction -
This project is a Reddit-Clone web application developed using Spring Boot. It provides users with functionalities similar to Reddit, allowing them to create posts, comment on posts, upvote/downvote posts and comments, and more. The application also incorporates Spring Security with JWT Authentication for secure user authentication and authorization.

## Technologies -
- Spring Boot: Framework for building Java-based web applications.
- Spring Security: Provides authentication, authorization, and other security features.
- Spring Data JPA: Simplifies data access and manipulation by providing repositories and entity management.
- Angular: To build a beautiful user interface.
- MySQL: Relational database management system for storing application data.
- Spring MVC: Architecture for building web applications based on the Model-View-Controller pattern.

## Features -
- User Registration: Allows users to create new accounts with unique usernames and passwords.
- User Authentication: Secure authentication using JWT tokens.
- Post Creation: Users can create new posts with titles, content, and categories.
- Commenting: Users can comment on posts and reply to existing comments.
- Voting System: Users can upvote or downvote posts and comments.
- Search Functionality: Enables users to search for posts by title or category.
- Pagination: Efficiently handles large amounts of content by dividing it into pages.

## Architectures -
The application follows a standard MVC architecture:

- Model: Represents the data and business logic of the application. Entities and repositories are managed using Spring Data JPA.
- View: Defines the presentation layer of the application. Thymeleaf templates or frontend frameworks can be used for rendering HTML pages.
- Controller: Handles user requests, performs necessary operations, and returns appropriate responses. Controllers are responsible for interacting with services and repositories.

## Modules -
The key modules of the application include:

1. Authentication Module: Handles user authentication and authorization using Spring Security and JWT tokens.
2. Post Module: Manages the creation, retrieval, updating, and deletion of posts.
3. Comment Module: Handles comments associated with posts and provides functionalities for adding, viewing, and deleting comments.
4. Vote Module: Implements the voting system for posts and comments, allowing users to upvote or downvote content.

## MySQL Table Schema -
Below is the simplified schema for the MySQL database used in this project:
1. User Table:
- user_id (Primary Key)
- username
- password (hashed)
- email
- created_at

2. Post Table:
- post_id (Primary Key)
- title
- content
- category
- user_id (Foreign Key)
- created_at

3. Comment Table:
- comment_id (Primary Key)
- content
- post_id (Foreign Key)
- user_id (Foreign Key)
- created_at

4. Vote Table:
- vote_id (Primary Key)
- vote_type (ENUM: UPVOTE, DOWNVOTE)
- post_id (Foreign Key)
- comment_id (Foreign Key)
- user_id (Foreign Key)

## Images -
## Home Page -
![Screenshot (1038)](https://github.com/sandesh300/Reddit-Clone-Backend/assets/92014891/86007fa1-2b05-4b31-983c-550bb3e3b90b)

## Sign Up page -
![Screenshot (1040)](https://github.com/sandesh300/Reddit-Clone-Backend/assets/92014891/226f4b1a-fd5d-4906-9ffe-229d86caeacc)

## Create Sub Reddit Page -
![Screenshot (1041)](https://github.com/sandesh300/Reddit-Clone-Backend/assets/92014891/1b8d655b-f909-4d25-97a5-143412a7b52f)

## Create Post Pages -
![Screenshot (1044)](https://github.com/sandesh300/Reddit-Clone-Backend/assets/92014891/1b7e4d7d-d7f6-433c-9270-c16f252ff22e)

![Screenshot (1046)](https://github.com/sandesh300/Reddit-Clone-Backend/assets/92014891/2b83fbf6-1996-48f4-a108-3f1e345eca38)