Demo Project for developing real-world stateless REST APIs using Spring Boot 3.x (successor of Spring Lemon). Depicts the following:
- Using a stateless security model, using JWT authentication
- Using JWE tokens for email verification, forgot password etc.
- Configuring Spring Security to suit stateless API development
- Supporting multiple social sign up/in, using OpenID Connect or OAuth2 providers such as Google and Facebook, in a stateless manner
- 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.
- Testing best practices
- Elegant functional programming using Optional and Either
- Using specific media types instead of application/json
- Complying to https://www.rfc-editor.org/rfc/rfc7807 for HTTP error responses
- How to not use exception handling for validation and business rules: We all know that
using exceptions for foreseen cases 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 usingOptional
,Either
and functional programming. - OpenApi documentation auto generation
- Java packaging strategy for modulith applications
- GitHub Actions CI/CD pipelines for Azure WebApp and DigitalOcean App Platform deployments