Skip to content

Cosmic-Coding-Community-Club/school-management-restapi

Repository files navigation

Author Language Language License


Logo

School Management RestAPI

School Management RestAPI Application using Kotlin, Reactor, Webflux and Spring Boot application.

Table of Contents
  1. About The Project
  2. Getting Started
  3. Contributing
  4. License
  5. Contact
  6. Learning Resources

About The Project

This application is an example of School Management, created using Kotlin, Reactor, Webflux and Spring Boot. The architecture is based en hexagonal architecture and DDD principles.

NOTE: In this example just implemented one use case: create School and your classrooms. In order to learn is interesting that the student implement the rest of use case.

What you will learn?

  • Organization of layers using hexagonal architecture and DDD principles.
  • Spring boot web starter and web.
  • Reactive programming with Reactor.
  • Reactive api with Reactor Webflux.
  • Errors handlers.
  • The integration between Kotlin with Spring.

(back to top)

Getting Started

To start this project use gradle tasks in application.

How to build and run application

Using Intellij IDEA:
  1. Import the project as Gradle project.
  2. To build the project and to run app use bootRun task on the Gradle tool window (View | Tool Windows | Gradle).

Here https://www.jetbrains.com/help/idea/gradle.html#gradle_tasks you can read how to run Gradle task from the Gradle toolbar in IntelliJ IDEA.

Using commandline

You can also build the project and run all tests in the terminal:

./gradlew bootRun

(back to top)

How use API

The School Management example is published in localhost and in 8080 port.

As Example, this API allows performs one types of http methods:

POST

Create school and your classrooms

   url: http://localhost:8080/management/school
   
   headers: Content-Type application/json
      
   body:
      {
          "schoolName":"Cosmic Coding School",
          "classrooms":[
                    {
                        "name:" : "Aula A",
                        "code": "A-A",
                        "capacity": 25
                    },
                    {
                        "name:" : "Aula Multimedia",
                        "code": "A-M",
                        "capacity": 50
                    }
               ]
      }

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

  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

Don't forget to give the project a star! Thanks again!

(back to top)

License

Distributed under the APACHE License. See LICENSE-2.0.txt for more information.

(back to top)

Contact

Jordi Jiménez Guil - info@cosmiccodingcommunityclub.com

(back to top)

Learning resources

The following resources may be helpful in your learning:

(back to top)

About

School Management Restful API Example

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages