:octocat: 🌟 ᴛʜɪꜱ ɪꜱ ᴍʏ ʙᴀᴄᴋᴇɴᴅ ᴘᴀʀᴛ ᴏꜰ ᴇᴍᴀɪʟ ꜱᴇɴᴅᴇʀ ᴀᴘᴘʟɪᴄᴀᴛɪᴏɴ 💻 🎯 🚀
56/100 healthLoading repository data…
Loading repository data…
GabrielEvancor / repository
API REST em Java/Spring Boot para cadastro e consulta de eventos, endereços e cupons. Usa PostgreSQL com Flyway para migrations e integra com AWS S3 para upload de imagens dos eventos.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
The EventosTec API is a robust backend for event management, designed to support operations for creating, querying, and detailing events, as well as managing associated discount coupons. The API also handles image uploads to AWS S3 and data persistence in a PostgreSQL database, with schema versioning via Flyway.
The platform is built with the following technologies, identified from the pom.xml and the project structure:
Clone the repository.
Configure the src/main/resources/application.properties file with your database and AWS credentials:
# Spring
spring.application.name=api
# PostgreSQL DataSource
spring.datasource.url=jdbc:postgresql://YOUR_HOST:5432/YOUR_DATABASE
spring.datasource.username=YOUR_USERNAME
spring.datasource.password=YOUR_PASSWORD
# Flyway
spring.flyway.enabled=true
spring.flyway.baseline-on-migrate=true # Useful for the first execution
# AWS S3
aws.region=YOUR_AWS_REGION # ex: us-east-2
aws.bucketName=YOUR_S3_BUCKET_NAME
Navigate to the root of the project.
Execute the Maven command to start the application:
mvn spring-boot:run
Flyway will automatically run the migrations on startup, creating the event, address, and coupon tables as defined in src/main/resources/db/migration.
Endpoint: POST /api/event
Description: Creates a new event. Data is sent as multipart/form-data to allow for image upload.
Content-Type: multipart/form-data
Parameters (form-data):
title (String, Required): Event title.description (String, Optional): Detailed description.date (Long, Required): Event date in timestamp format (milliseconds).city (String, Required): City where the event will take place.state (String, Required): State or province abbreviation.remote (Boolean, Required): true if the event is online.eventUrl (String, Required): URL to the event page.image (File, Optional): Image file for the event.Response Example (200 OK):
{
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"title": "Technology Conference",
"description": "An event about the latest AI trends.",
"imgUrl": "https://eventostec-imagens.s3.us-east-2.amazonaws.com/image.png",
"eventUrl": "https://example.com/event",
"remote": false,
"date": 1711152000000,
"address": {
"id": "f1e2d3c4-b5a6-7890-1234-567890fedcba",
"city": "São Paulo",
"uf": "SP",
"event": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
}
}
Endpoint: GET /api/event
Description: Returns a paginated list of events that have not yet occurred.
Parameters (Query):
page (int, Optional, default=0): Page number.size (int, Optional, default=10): Number of events per page.Response Example (200 OK):
[
{
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"title": "Technology Conference",
"description": "An event about the latest AI trends.",
"date": 1711152000000,
"city": "São Paulo",
"state": "SP",
"remote": false,
"eventUrl": "https://example.com/event",
"imageUrl": "https://eventostec-imagens.s3.us-east-2.amazonaws.com/image.png"
}
]
Endpoint: GET /api/event/filter
Description: Returns a paginated list of events based on multiple filters.
Parameters (Query):
page (int, Optional, default=0): Page number.size (int, Optional, default=10): Number of events per page.title (String, Optional): Filter by title (partial search).city (String, Optional): Filter by city (partial search).uf (String, Optional): Filter by state abbreviation (partial search).startDate (Date, Optional, format YYYY-MM-DD): Start date of the search period.endDate (Date, Optional, format YYYY-MM-DD): End date of the search period.Response Example (200 OK): (Similar to endpoint GET /api/event)
Endpoint: GET /api/event/{eventId}
Description: Returns the full details of a specific event, including associated discount coupons.
Parameters (Path):
eventId (UUID, Required): Event ID.Response Example (200 OK):
{
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"title": "Technology Conference",
"description": "An event about the latest AI trends.",
"date": 1711152000000,
"city": "São Paulo",
"uf": "SP",
"imgUrl": "https://eventostec-imagens.s3.us-east-2.amazonaws.com/image.png",
"eventUrl": "https://example.com/event",
"coupons": [
{
"code": "PROMO10",
"discount": 10,
"validUntil": 1711065600000
}
]
}
Endpoint: POST /api/coupon/event/{eventId}
Description: Adds a new discount coupon to an existing event.
Parameters (Path):
eventId (UUID, Required): ID of the event to which the coupon will be associated.Request Payload Example (application/json):
{
"code": "PROMO20",
"discount": 20,
"valid": 1712880000000
}
Response Example (200 OK):
{
"id": "b2c3d4e5-f6a7-8901-2345-67890abcdef1",
"code": "PROMO20",
"discount": 20,
"valid": 1712880000000,
"event": {
"id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"title": "Technology Conference"
}
}
The API uses three main entities out of which relationships are built:
Event: The central entity. Contains all information about an event, such as title, date, URL, and whether it is remote.
One-to-One relationship with Address. An event has one address.Address: Stores the location information of an in-person event (city and state).
One-to-One relationship with Event. An address belongs to a single event.Coupon: Represents a discount coupon, with a code, discount percentage, and expiration date.
Many-to-One relationship with Event. Many coupons can belong to a single event.Selected from shared topics, language and repository description—not editorial ratings.
:octocat: 🌟 ᴛʜɪꜱ ɪꜱ ᴍʏ ʙᴀᴄᴋᴇɴᴅ ᴘᴀʀᴛ ᴏꜰ ᴇᴍᴀɪʟ ꜱᴇɴᴅᴇʀ ᴀᴘᴘʟɪᴄᴀᴛɪᴏɴ 💻 🎯 🚀
56/100 healthashish2030 /
:octocat: 🌟ᴛʜɪꜱ ɪꜱ ᴀ ꜰʀᴏɴᴛᴇɴᴅ ᴅᴇᴠᴇʟᴏᴘᴍᴇɴᴛ ᴘᴀʀᴛ ᴏꜰ ᴇᴍᴀɪʟ ꜱᴇɴᴅᴇʀ ᴀᴘᴘʟɪᴄᴀᴛɪᴏɴ ᴜꜱɪɴɢ ʜᴛᴍʟ,ᴄꜱꜱ ᴀɴᴅ ᴊᴀᴠᴀꜱᴄʀɪᴘᴛ 💻 🎯 🚀
56/100 healthFrancisBFTC /
No description provided.
28/100 healthm4rciosouza /
API RESTful com Spring Boot, Java 8, MongoDB e Spring Security em 45 minutos
43/100 healththomasdacosta /
:star: BFF (Backends For Frontends) desenvolvido em Quarkus que efetua o acesso a API Ofical da Marvel e busca Personagens, HQs e Eventos
23/100 healthExemplo de aplicação criada com Java + Spring + Apache Camel e utilizando Distributed Tracing com Jaeger + OpenTelemetry (configurando porta do Collector) e consumindo APIs REST (uma destas depende de bases SQL Server + PostgreSQL + MySQL). Contém referências para o uso de Docker Compose em ambientes que dependam do OpenTelemetry Collector.
47/100 health