Skip to content

Spring Boot 4 application with Clean Architecture, JWT authentication, and role-based access control. Features admin user initialization, validation, and RESTful API design following SOLID principles and best practices.

License

Notifications You must be signed in to change notification settings

miralles66/spring-web

Repository files navigation

Spring Web Application with Clean Architecture

🚀 Quick Start

# Build and run the application
./gradlew bootRun

# Run tests
./gradlew test

# Build for production
./gradlew build

🎯 Features

  • Clean Architecture implementation
  • Spring Boot 4 with Java 25
  • JWT Authentication with Spring Security
  • Role-Based Access Control (Admin/User roles)
  • Validation with proper HTTP status codes
  • Admin User Initialization on startup

📋 API Endpoints

Authentication

POST /api/auth/login
{
    "email": "[email protected]",
    "password": "admin123"
}

Users (Admin Only)

  • GET /api/users - List all users
  • POST /api/users - Create new user
  • GET /api/users/{id} - Get user by ID
  • PUT /api/users/{id} - Update user
  • DELETE /api/users/{id} - Delete user

🔐 Default Admin User

⚠️ You can change this secured password

🛡️ Security

  • JWT Tokens for stateless authentication
  • BCrypt password hashing
  • Role-based authorization
  • CSRF protection disabled for API

🧪 Testing

  • Unit tests for business logic
  • Integration tests for controllers
  • Security tests for authentication/authorization

📦 Architecture

Presentation Layer → Application Layer → Domain Layer → Infrastructure Layer
  • Presentation: Controllers, DTOs, API
  • Application: Services, use cases
  • Domain: Models, factories, repositories
  • Infrastructure: Database, security, configuration

🔧 Configuration

Edit application.properties for:

# Admin user
app.admin.enabled=true
app.admin.username=admin
app.admin.email[email protected]

# JWT settings
app.jwt.secret=yourSecureSecretKeyHere12345678901234567890123456789012
app.jwt.expiration=86400000

🚀 Deployment

Development

./gradlew bootRun

Production

./gradlew build
java -jar build/libs/spring-web-0.0.1-SNAPSHOT.jar

📚 Documentation

🛠️ Built With

  • Spring Boot 4
  • Spring Security with JWT
  • Jakarta Validation
  • JUnit 5
  • Mockito

✅ Checklist

  • Change default admin password
  • Configure proper JWT secret
  • Set up HTTPS in production
  • Implement proper logging
  • Configure monitoring

Clean Architecture + Spring Boot = Maintainable & Scalable Applications 🚀

About

Spring Boot 4 application with Clean Architecture, JWT authentication, and role-based access control. Features admin user initialization, validation, and RESTful API design following SOLID principles and best practices.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages