Skip to content

NecmettinCimen/marvel-java-spring-boot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn SonarQube Cloud


Marvel Java Spring Boot API

Java Spring Boot REST API for Marvel universe data.
Explore the docs »

Report Bug · Request Feature


Table of Contents


About The Project

This project is a RESTful API built with Java Spring Boot that provides access to Marvel universe data such as characters, comics, and stories. It is designed for learning, demo, and integration purposes.

Built With


Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

  • Java 17 or newer
  • Maven 3.8+

Installation

  1. Clone the repository
    git clone https://github.com/necmettincimen/marvel-java-spring-boot.git
  2. Go to the project directory
    cd marvel-java-spring-boot
  3. Build the project
    mvn clean install
  4. Run the application
    mvn spring-boot:run
  5. Test the application
    mvn test run

Usage

Once the application is running, you can access the API at http://localhost:8080/api.

API documentation (Swagger UI) is available at http://localhost:8080/swagger-ui/index.html.


Roadmap

  • Add authentication and authorization
  • Add Docker support
  • Improve test coverage

See the open issues for more.



Architecture

This project follows the Hexagonal Architecture (Ports and Adapters) pattern:

  • Domain Layer: Contains core business logic and domain models.
  • Ports: Interfaces that define the operations for external systems (e.g., repositories, services).
  • Adapters: Implementations of ports for specific technologies (e.g., database, web).
  • Application Layer: Contains service classes that orchestrate business logic.
  • Web Layer: REST controllers for API endpoints.

Key Technologies:

  • Spring Boot: Application framework
  • Spring WebFlux: Reactive REST API
  • Spring Data R2DBC: Reactive database access
  • PostgreSQL: Main database
  • JWT: Authentication
  • Lombok: Boilerplate code reduction
  • Docker: Containerization
  • JUnit 5: Unit and integration testing

Example Folder Structure

src/
  main/
    java/
      xyz/necmettincimen/marvel/marvel/
        domain/         # Domain models and ports
        adapter/
          in/web/       # REST controllers (inbound adapters)
          out/persistence/ # Database adapters (outbound)
        application/service/ # Service layer
    resources/
      db/migration/     # Migration scripts
      application.properties
  test/
    java/...

Contributing

Contributions are welcome! Please fork the repo and submit a pull request.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.


Contact

Necmettin Çimen - @Necmettin Cimen - necmettin.dev@gmail.com

Project Link: https://github.com/necmettincimen/marvel-java-spring-boot


Acknowledgements

Releases

No releases published

Packages

No packages published