Skip to content

jamilxt/portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio

Personal Portfolio Project using Java & Spring Boot for Pondits (Batch 7)

image

Live Preview:

Environment: Develop

Server Side Rendered (SSR) App: Render

Frontend (Web): (Under development)

Frontend (Mobile): Flutter


Environment: Production (not yet)

How to Build & Run

  1. 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
  2. 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.
  3. To build the project execute the following command:
    ./mvnw clean package
    
    Executing that command will generate a jar under "target" folder which you can run using the following command:
    java -jar portfolio-0.0.1-SNAPSHOT.jar
    
    or, You can run the app directly by following the command:
    ./mvnw spring-boot:run
    
    or, you can run via your preferred IDE's RUN/PLAY button.
  4. After running the application, it will be up & running at http://localhost:8081
  5. 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.

Learning Checklist

  • 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
  • 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
  • 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
  • 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
  • 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

About

Personal Portfolio Project using Java & Spring Boot for Pondits (Batch 7)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7