Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/7irelo/andromeda-spring-api
Andromeda social media application Spring Boot API(Spring Boot, Neo4j, Redis)
https://github.com/7irelo/andromeda-spring-api
neo4j redis spring-boot
Last synced: 2 months ago
JSON representation
Andromeda social media application Spring Boot API(Spring Boot, Neo4j, Redis)
- Host: GitHub
- URL: https://github.com/7irelo/andromeda-spring-api
- Owner: 7irelo
- License: mit
- Created: 2024-07-06T12:24:31.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-17T15:56:47.000Z (4 months ago)
- Last Synced: 2024-09-27T21:41:20.131Z (3 months ago)
- Topics: neo4j, redis, spring-boot
- Language: Java
- Homepage:
- Size: 101 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Andromeda Spring Framework API
Welcome to the Andromeda Spring Framework Neo4j API project! This project is a backend API for a social media platform called Andromeda, developed using the Spring Framework, Neo4j, and Redis. The API provides CRUD functionality for various entities such as users, posts, comments, likes, friendships, products, and notifications. It uses Spring Data Neo4j for database operations and JWT for authentication.
## Table of Contents
- [Features](#features)
- [Technologies](#technologies)
- [Project Structure](#project-structure)
- [Installation](#installation)
- [Usage](#usage)
- [API Documentation](#api-documentation)
- [Contributing](#contributing)
- [License](#license)## Features
- User authentication and authorization using JWT
- CRUD operations for users, posts, comments, likes, friendships, products, and notifications
- Relationships managed in Neo4j, leveraging its graph database capabilities
- Redis integration for caching and session management
- Notifications for likes and comments
- RESTful API design
- Swagger documentation for API endpoints## Technologies
- Java 22
- Spring Framework
- Spring Security
- Spring Data Neo4j
- Neo4j
- Redis
- Swagger## Project Structure
```
andromeda/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/
│ │ │ │ └── andromeda/
│ │ │ │ ├── config/
│ │ │ │ │ ├── SecurityConfig.java
│ │ │ │ │ ├── Neo4jConfig.java
│ │ │ │ │ └── SwaggerConfig.java
│ │ │ │ ├── controller/
│ │ │ │ │ ├── AuthController.java
│ │ │ │ │ ├── CommentController.java
│ │ │ │ │ ├── FriendshipController.java
│ │ │ │ │ ├── LikeController.java
│ │ │ │ │ ├── NotificationController.java
│ │ │ │ │ ├── PostController.java
│ │ │ │ │ ├── ProductController.java
│ │ │ │ │ └── UserController.java
│ │ │ │ ├── dto/
│ │ │ │ │ ├── CommentDTO.java
│ │ │ │ │ ├── FriendshipDTO.java
│ │ │ │ │ ├── LikeDTO.java
│ │ │ │ │ ├── NotificationDTO.java
│ │ │ │ │ ├── PostDTO.java
│ │ │ │ │ ├── ProductDTO.java
│ │ │ │ │ └── UserDTO.java
│ │ │ │ ├── entity/
│ │ │ │ │ ├── Comment.java
│ │ │ │ │ ├── Friendship.java
│ │ │ │ │ ├── Like.java
│ │ │ │ │ ├── Notification.java
│ │ │ │ │ ├── Post.java
│ │ │ │ │ ├── Product.java
│ │ │ │ │ └── User.java
│ │ │ │ ├── repository/
│ │ │ │ │ ├── CommentRepository.java
│ │ │ │ │ ├── FriendshipRepository.java
│ │ │ │ │ ├── LikeRepository.java
│ │ │ │ │ ├── NotificationRepository.java
│ │ │ │ │ ├── PostRepository.java
│ │ │ │ │ ├── ProductRepository.java
│ │ │ │ │ └── UserRepository.java
│ │ │ │ ├── service/
│ │ │ │ │ ├── AuthService.java
│ │ │ │ │ ├── CommentService.java
│ │ │ │ │ ├── FriendshipService.java
│ │ │ │ │ ├── LikeService.java
│ │ │ │ │ ├── NotificationService.java
│ │ │ │ │ ├── PostService.java
│ │ │ │ │ ├── ProductService.java
│ │ │ │ │ └── UserService.java
│ │ │ │ └── util/
│ │ │ │ ├── JwtTokenUtil.java
│ │ │ │ └── PasswordUtil.java
│ │ └── resources/
│ │ ├── application.properties
│ │ └── schema.cypher
└── pom.xml
```## Installation
### Prerequisites
- Java 22
- Neo4j
- Redis
- Maven### Steps
1. Clone the repository:
```bash
git clone https://github.com/7irelo/andromeda-spring-api.git
cd andromeda-spring-api
```2. Set up Neo4j and Redis:
- **Neo4j**: Install and start Neo4j, then create a database named `andromeda_neo4j`.
- **Redis**: Install and start Redis.3. Update `application.properties`:
```properties
spring.neo4j.uri=bolt://localhost:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=your_passwordspring.redis.host=localhost
spring.redis.port=6379jwt.secret=your_jwt_secret
```4. Run the project:
```bash
mvn clean install
mvn spring-boot:run
```## Usage
### Authentication
Use the `/auth/login` and `/auth/register` endpoints to obtain a JWT token. This token must be included in the `Authorization` header for all other API requests.
### API Endpoints
Refer to the [Swagger documentation](http://localhost:8080/swagger-ui.html) for a detailed list of all available endpoints and their usage.
## API Documentation
Swagger is integrated for API documentation. You can access it at [http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html).
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a new branch (`git checkout -b feature/your-feature-name`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin feature/your-feature-name`)
5. Create a new Pull Request## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.