A Kotlin Spring Boot application for managing sports games and player enrollments. The application allows players to create and join games, view nearby games, and manage their participation.
- Player registration and profile management
- Game creation and management
- Location-based game search
- Player enrollment in games
- Spatial data support (PostgreSQL with PostGIS)
- JWT-based authentication
- Role-based access control
- Request/response logging
- Exception handling with custom error responses
- Kotlin 1.9.25
- Spring Boot 3.4.3
- Spring Security with JWT authentication
- Spring Data JPA
- Hibernate Spatial
- PostgreSQL with PostGIS
- JTS Topology Suite
- JJWT (Java JWT Library)
- JDK 21
- PostgreSQL with PostGIS extension
- Gradle
# Clone the repository
git clone https://github.com/yourusername/groundplay.git
cd groundplay
# Build the project
./gradlew build
# Run the application
./gradlew bootRunThe application is configured via src/main/resources/application.properties. Make sure to set up your database connection properties:
# Database Configuration
spring.datasource.url=jdbc:postgresql://localhost:5432/groundplay
spring.datasource.username=your_username
spring.datasource.password=your_password
# JWT Configuration
jwt.secret=your_jwt_secret_key
jwt.expiration=1296000000 # 15 days in milliseconds
# Encryption Configuration
encryption.secret=your_encryption_secret_keyFor production, it's recommended to use environment variables instead of hardcoded values:
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
jwt.secret=${JWT_SECRET}
encryption.secret=${ENCRYPTION_SECRET}