Skip to content

πŸ€ CourtVision: Spring Boot NBA analytics engine integrating BallDontLie API. Features smart data mapping, advanced statistics processing, and robust error handling. Built with Java 17, WebFlux, and MapStruct.

Notifications You must be signed in to change notification settings

adamnestor/courtvision-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CourtVision Backend

A sophisticated Spring Boot application providing NBA statistics analysis through integration with the BallDontLie API. Features advanced error handling, rate limiting, and comprehensive data mapping capabilities.

🌟 Key Features

πŸ€ NBA Data Integration

  • Robust BallDontLie API integration
  • Comprehensive error handling with automatic retries
  • Support for pagination and cursor-based data retrieval

πŸ”„ Smart Data Mapping

  • MapStruct implementation for efficient object mapping
  • Custom mapping strategies for complex data transformations
  • Null-safe mapping with intelligent fallbacks

πŸ“Š Advanced Statistics Processing

  • Comprehensive game statistics tracking
  • Advanced metrics calculations
  • Historical data analysis capabilities
  • Support for various statistical thresholds:
    • Points: 10+, 15+, 20+, 25+
    • Assists: 2+, 4+, 6+, 8+
    • Rebounds: 4+, 6+, 8+, 10+

πŸ›  Technical Features

  • Spring Boot 3.3.5 with Java 17
  • WebFlux for reactive API calls
  • Comprehensive API documentation with OpenAPI/Swagger

πŸ“ˆ Performance & Reliability

  • Automatic retry mechanisms for API failures
  • Rate limit handling with backoff strategies
  • Comprehensive error logging and monitoring

Technology Stack

  • Framework: Spring Boot 3.3.5
  • Language: Java 17
  • Data Access: Spring Data JPA
  • API Documentation: SpringDoc OpenAPI
  • Security: Spring Security with JWT
  • Testing: JUnit, Spring Boot Test
  • API Integration: WebFlux WebClient
  • Object Mapping: MapStruct

Code Examples

BallDontLie API Integration

@Component
public class BallDontLieClient {
    private static final int MAX_RETRIES = 3;
    // Intelligent retry mechanism with backoff
    .retryWhen(Retry.backoff(MAX_RETRIES, Duration.ofMillis(10))
        .filter(throwable -> throwable instanceof ApiException
            && !(throwable instanceof ApiRateLimitException)
            && !(throwable instanceof ApiException)))
}

Smart Data Mapping

@Mapper(componentModel = "spring",
    unmappedTargetPolicy = ReportingPolicy.IGNORE,
    nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface GameMapper {
    @Named("mapStatus")
    default String mapStatus(String status) {
        if (status == null) return null;
        return status.contains("T") || status.contains("ET") ? "scheduled" : status;
    }
}

API Documentation Configuration

@Configuration
public class OpenApiConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
            .info(new Info()
                .title("CourtVision API")
                .description("NBA Statistics Analysis API")
                .version("1.0"));
    }
}

About

πŸ€ CourtVision: Spring Boot NBA analytics engine integrating BallDontLie API. Features smart data mapping, advanced statistics processing, and robust error handling. Built with Java 17, WebFlux, and MapStruct.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages