https://github.com/naturalprogrammer/np-spring-mvc-demo
Spring Boot MVC (non-reactive) real-world demo application
https://github.com/naturalprogrammer/np-spring-mvc-demo
Last synced: 7 months ago
JSON representation
Spring Boot MVC (non-reactive) real-world demo application
- Host: GitHub
- URL: https://github.com/naturalprogrammer/np-spring-mvc-demo
- Owner: naturalprogrammer
- License: apache-2.0
- Created: 2023-01-13T04:16:11.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-07T17:13:59.000Z (over 2 years ago)
- Last Synced: 2025-02-01T11:34:42.998Z (over 1 year ago)
- Language: Java
- Size: 365 KB
- Stars: 14
- Watchers: 1
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Demo Project for developing real-world stateless REST APIs using Spring Boot 3.x (successor
of [Spring Lemon](https://github.com/naturalprogrammer/spring-lemon)). Depicts the following:
1. Using a stateless security model, using JWT authentication
2. Using JWE tokens for email verification, forgot password etc.
3. Configuring Spring Security to suit stateless API development
4. Supporting multiple social sign up/in, using OpenID Connect or OAuth2 providers such as Google and Facebook, *in a
stateless manner*
5. Coding a robust user module with features including sign up/in, verify email, social sign up/in, update profile,
forgot password, change password, change email, resource/access token creation etc.
6. Testing best practices
7. Elegant functional
programming [using Optional and Either](https://dzone.com/articles/the-beauty-of-java-optional-and-either)
8. Using [specific media types](https://medium.com/@naturalprogrammer/why-and-how-to-use-specific-media-types-instead-of-application-json-36e91efe167b)
instead of application/json
9. Complying to https://www.rfc-editor.org/rfc/rfc7807 for HTTP error responses
10. *How to **not** use exception handling for validation and business rules*: We all know that
using [exceptions for foreseen cases](https://reflectoring.io/business-exceptions/) is bad. Still, most of us
use `@Valid` for validations, as well
as throw BusinessExceptions, and then handle the exceptions in a controller advice. In this project, you'd see an
elegant way to avoid exceptions -- by using `Optional`, `Either` and functional programming.
11. OpenApi documentation auto generation
12. Java packaging strategy for modulith applications
13. GitHub Actions CI/CD pipelines for Azure WebApp and DigitalOcean App Platform deployments