Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/sandesh300/reddit-clone-backend
- Owner: sandesh300
- Created: 2023-07-17T18:10:18.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-03-11T19:31:40.000Z (11 months ago)
- Last Synced: 2024-11-06T05:30:34.097Z (3 months ago)
- Topics: angular, java, javascript, jwt-authentication, mysql, rest-api, spring-boot, spring-data-jpa, spring-mvc, spring-security
- Language: Java
- Homepage:
- Size: 82 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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)
- created_at2. Post Table:
- post_id (Primary Key)
- title
- content
- category
- user_id (Foreign Key)
- created_at3. Comment Table:
- comment_id (Primary Key)
- content
- post_id (Foreign Key)
- user_id (Foreign Key)
- created_at4. 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)