EcoLink API is a Spring Boot-based RESTful API service that provides Maps and Content Management System (CMS) functionality. This MVP is designed to support location-based services integrated with content management capabilities, making it ideal for environmental or eco-friendly applications that need to manage geographic data alongside multimedia content.
- Java: 17
- Spring Boot: 3.2.2
- Database: MongoDB
- Build Tool: Maven
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── ecolink/
│ │ └── api/
│ │ ├── config/ # Configuration classes (security, database, etc.)
│ │ ├── controller/ # REST API endpoints
│ │ ├── dto/ # Data Transfer Objects
│ │ ├── model/ # MongoDB entity models
│ │ ├── repository/ # MongoDB repositories
│ │ └── service/ # Business logic layer
│ └── resources/
│ └── application.properties # Application configuration
└── test/
└── java/
└── com/
└── ecolink/
└── api/ # Test classes
-
Google Maps Platform Java Client (
com.google.maps:google-maps-services)- Official Java client for Google Maps APIs (Geocoding, Places, Directions, Distance Matrix)
- Version: Latest stable (e.g., 2.2.0+)
- Maven:
com.google.maps:google-maps-services:2.2.0
-
Alternative: OpenStreetMap with Nominatim for geocoding (open-source alternative)
-
AWS S3 with Spring Cloud AWS
io.awspring.cloud:spring-cloud-aws-starter-s3- Industry standard, highly scalable
-
Google Cloud Storage
com.google.cloud:google-cloud-storage- Integrates well with Google Maps Platform
-
Azure Blob Storage
com.azure:azure-storage-blob
-
Cloudinary (Recommended for media optimization)
com.cloudinary:cloudinary-http44:1.36.0- Built-in image/video transformation and optimization
-
Spring Data MongoDB (Already included)
spring-boot-starter-data-mongodb- Provides repository abstraction and MongoDB integration
-
MongoDB Atlas (Recommended cloud hosting)
- Fully managed MongoDB service
- Built-in backups, monitoring, and scaling
-
Spring Security with JWT
spring-boot-starter-securityio.jsonwebtoken:jjwt-api:0.12.3io.jsonwebtoken:jjwt-impl:0.12.3io.jsonwebtoken:jjwt-jackson:0.12.3
-
OAuth2 Resource Server (for third-party authentication)
spring-boot-starter-oauth2-resource-server
-
Spring Security MongoDB (for user storage in MongoDB)
- Custom UserDetailsService implementation with MongoDB
-
BCrypt (password encryption, included with Spring Security)
-
SpringDoc OpenAPI (Swagger) (Recommended)
org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0- Automatic OpenAPI 3 specification generation
- Interactive Swagger UI at
/swagger-ui.html
-
Spring REST Docs (Alternative for test-driven documentation)
spring-restdocs-mockmvc
- Hibernate Validator (Already included via spring-boot-starter-validation)
- Bean validation with annotations
-
Lombok (Already included)
- Reduces boilerplate code with annotations
-
MapStruct (for DTO mapping)
org.mapstruct:mapstruct:1.5.5.Final- Compile-time type-safe mapping
- Spring Boot Actuator
spring-boot-starter-actuator- Health checks, metrics, monitoring endpoints
- Spring Boot Test (Already included)
- Testcontainers (for MongoDB integration tests)
org.testcontainers:mongodb:1.19.3
- Java 17 or higher
- Maven 3.6+
- MongoDB 4.4+ (local or MongoDB Atlas)
mvn clean installmvn spring-boot:runThe API will be available at http://localhost:8080
mvn testConfigure your MongoDB connection and other settings in src/main/resources/application.properties:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=ecolink_dbFor production or cloud deployment, use environment variables or application-prod.properties.
Once SpringDoc OpenAPI is added, access the interactive API documentation at:
- Swagger UI:
http://localhost:8080/swagger-ui.html - OpenAPI JSON:
http://localhost:8080/v3/api-docs
- Implement Google Maps integration services
- Setup cloud file storage for media management
- Implement authentication and authorization
- Create core CMS entities and repositories
- Develop RESTful API endpoints
- Add comprehensive API documentation
- Implement integration tests
- Setup CI/CD pipeline
TBD
TBD