
Environment: Develop
Server Side Rendered (SSR) App: Render
Frontend (Web): (Under development)
Frontend (Mobile): Flutter
Environment: Production (not yet)
- Install Java 17 (LTS) of any distribution. You can try Amazon Corretto 17. You can find the installation instructions here: https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/what-is-corretto-17.html
- Open this project with your preferred IDE. We prefer IntelliJ IDEA Ultimate Edition. Other IDEs like VS Code or Spring Tools Suite (STS) will do.
- To build the project execute the following command:
Executing that command will generate a jar under "target" folder which you can run using the following command:
./mvnw clean package
or, You can run the app directly by following the command:java -jar portfolio-0.0.1-SNAPSHOT.jar
or, you can run via your preferred IDE's RUN/PLAY button../mvnw spring-boot:run
- After running the application, it will be up & running at http://localhost:8081
- You can also access the Swagger API Doc at: http://localhost:8081/swagger-ui/index.html# . You can go ahead and execute the Organization's REST APIs I prepared for you guys to play with.
- Java 17
- Core Concepts
- Servlet
- Convention over Configuration
- Inversion of Control (IoC)
- IoC Container
- Dependency Injection
- Application Context
- Bean
- DispatcherServlet
- Interceptor
- Filter
- Server-Side (using Template Engine)
- / (Portfolio Homepage)
- Practice Thymeleaf Tags (e.g. th:if, th:each, etc.)
- Thymeleaf Fragment & Layouts (Reusability)
- REST API
- /api/projects (CRUD for Projects)
- Secure Endpoints
- Input Validation
- API Documentation: Swagger
- API Paging and Sorting
- application.properties
- @ConfigurationProperties
- @Value
- yaml/yml format
- Exception
- Custom Exception Class
- Global Exception Handler
- @RestControllerAdvice
- Problem Details RFC 7807
- @ExceptionHandler
- @ControllerAdvice
- Logging
- Framework
- Logback
- Facade: SLF4J
- Logging Levels
- Configure Logging using application.properties
- Configure Logback using XML
- Framework
- External Service Call
- HTTP Client
- RestTemplate
- WebClient
- Feign Client
- Boilerplate Code Reduce
- Mapper for Mapping
- Native from Spring: BeanUtils
- 3rd Party Libraries
- MapStruct
- ModelMapper
- Lombok for Generating Getters and Setters
- Mapper for Mapping
- Spring Security
- Authentication
- Form-Based Authentication
- Basic Authentication
- JWT (JSON Web Token)
- OAuth2
- Authorization
- Role-Based Access Control (RBAC)
- CSRF Protection
- CORS
- Session Management
- Password Encoding
- Authentication
- Database
- Database System
- H2 (In-Memory Database, Embedded)
- PostgreSQL
- DB Initialization & Migration
- Spring Boot Database Initialization
- Schema.sql
- Data.sql
- hibernate.hbm2ddl.auto
- DB Migration
- Flyway
- Liquibase
- Spring Boot Database Initialization
- Database System
- ORM
- Hibernate
- JPA (Java Persistence API)
- Spring Data
- Spring Data JPA
- Spring Data JDBC
- Spring Data MongoDB
- Spring Data Redis
- Spring Profiles (local, dev, prod)
- Spring Data JPA
- @Entity
- @Table
- @Id
- @GeneratedValue
- @Column
- @OneToMany
- @ManyToOne
- @ManyToMany
- @Transactional
- Spring Data JPA Query
- @Query
- Native Query
- Named Query
- Criteria API
- Spring Data JPA Specification
- Spring Actuator
- Health Check
- Metrics
- Info
- Custom Endpoints
- Deployment
- Platform as-a-Service (PaaS): Render
- Infrastructure as-a-Service (IaaS): Virtual Machine
- Good/Best Practices
- Code Quality
- SonarQube
- SonarCloud
- Code Refactoring
- Code Review
- Unit Testing
- JUnit 5
- Mockito
- Integration Testing
- Spring Test
- Testcontainers
- Code Quality