https://github.com/kirpinev/java-explore-with-me
ExploreWithMe is a service that allows users to share information about interesting events and find companions for participation.
https://github.com/kirpinev/java-explore-with-me
docker hibernate java-11 junit mokito postgresql
Last synced: 7 days ago
JSON representation
ExploreWithMe is a service that allows users to share information about interesting events and find companions for participation.
- Host: GitHub
- URL: https://github.com/kirpinev/java-explore-with-me
- Owner: kirpinev
- Created: 2023-04-10T09:50:19.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-04-27T21:28:14.000Z (over 2 years ago)
- Last Synced: 2025-01-30T12:14:24.889Z (12 months ago)
- Topics: docker, hibernate, java-11, junit, mokito, postgresql
- Language: Java
- Homepage:
- Size: 130 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ExploreWithMe
ExploreWithMe is a Spring Boot application that allows users to share information about interesting events and find
companions for participation. It helps users efficiently plan their leisure time by providing a platform to organize and
participate in various events.
## Features
- Public API for searching and filtering events with options for sorting by event views (retrieved from the statistics
service) or event dates.
- Private API accessible only to authorized users, which includes the following features:
- Adding, editing, and viewing events.
- Submitting requests for event participation.
- Confirming event participation requests by the event creator.
- Administrative API for service administrators, which includes the following features:
- Adding, modifying, and deleting event categories.
- Creating, removing, and pinning event collections on the main page.
- Moderating user-submitted events (publication or rejection).
- User management (adding, activation, viewing, and deletion).
- Event creation and management with a lifecycle that includes creation, awaiting publication, publication, and
publication cancellation.
- User registration and authentication.
- Event rating system.
- Statistics service to track event views, user IPs, and endpoint accesses.
- Predefined event categories and collections created by administrators.
- Event view counts provided by the statistics service.
## Data Model
The event lifecycle includes the following stages:
1. Creation
2. Awaiting publication (automatically set after event creation)
3. Publication (set by an administrator)
4. Cancellation of publication (set either by the administrator or the event initiator during the awaiting publication
stage)
## Authentication and Authorization
Both ExploreWithMe services operate within a VPN (Virtual Private Network), which allows for secure communication
between the services and the external world. A network gateway is responsible for contacting the authentication and
authorization system and forwarding requests to the services. If the gateway allows a request to access the private or
administrative API, it means the request has successfully passed authentication and authorization.
## Statistics Service
The statistics service collects information on user interactions, such as the number of user requests to event lists and
the number of requests for detailed event information. This data is used to generate statistics about the application's
performance.
## Technologies Used
- Spring Boot
- Hibernate
- Docker
- PostgreSQL
## Getting Started
### Prerequisites
Ensure you have the following installed on your system:
- Java Development Kit (JDK) 11 or later
- Docker
- PostgreSQL
### Building the Project
1. Clone the repository:
```git clone https://github.com/kirpinev/java-explore-with-me.git```
2. Change the current directory to the project root:
```cd java-explore-with-me```
3. Build the project using Maven:
```./mvnw clean install```
4. Run the Docker container for PostgreSQL:
```docker-compose up -d```
### Running the Application
Run the application using the following command:
```./mvnw spring-boot:run```
The application will start on port 8080. Access the public API at `http://localhost:8080`, and the administrative API
at `http://localhost:8080/admin`.