Skip to content

AngelosGi/personalWebsite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal Resume Website API

This project is a Spring Boot-based app for managing a personal resume website. It was inspired by the static HTML and CSS resume found in the Thomashighbaugh's repository.

Project Overview

  1. Inspiration: Based on a static HTML and CSS resume .
  2. Conversion to Thymeleaf Template:
    • Replaced static content with Thymeleaf placeholders.
    • Integrated with Spring Boot to dynamically populate resume data from the database.
  3. API Development:
    • Created endpoints for managing resume details, education, work experiences, etc.
    • Implemented CRUD operations with Spring Data JPA and Lombok for reducing boilerplate code.
  4. Database Setup:
    • Configured PostgreSQL for data storage.
    • Dockerized PostgreSQL for easy management and consistency across environments.
  5. Interactive Documentation:
    • Integrated Swagger UI for interactive API documentation.
  6. Error Handling and Validation:
    • Implemented global exception handling with @ControllerAdvice.
    • Added data validation.
  7. Security Authentication:
    • Basic authentication for the API.
    • Configured security to allow public access to GET endpoints and restrict POST, PUT, and DELETE endpoints to authenticated users.
    • Utilized Spring Security and implemented MyUserDetailsService for user authentication.
    • Secured password storage with a password encoder.
  8. Continuous integration and Continuous Delivery CI/CD
    • CI/DI deployment with GitHub and render.

Technologies Used

  • Spring Boot: For building API endpoints and handling requests/responses.
  • PostgreSQL: Relational database for managing resume data.
  • Lombok: For reducing boilerplate code with annotations.
  • Thymeleaf: Template engine for rendering web pages.
  • Swagger UI: For interactive API documentation.
  • Docker: For containerizing PostgreSQL.
  • Spring Security: For securing API endpoints and managing user authentication.
  • Continuous integration and continuous delivery CI/CD

Features

  • CRUD Operations: Manage educational experiences, work experiences, and resume details.
  • Interactive Documentation: Explore and test API endpoints with Swagger UI.
  • Modular Structure: Clean and scalable project structure.
  • Security Authentication: Secure API endpoints with basic authentication.

Installation

To run the Personal Resume Website API locally, follow these steps:

  1. Clone the repository:

    git clone https://github.com/AngelosGi/personal-website.git
    # Or use SSH
    git clone [email protected]:AngelosGi/personal-website.git
  2. Install dependencies:

    mvn install
  3. Database Setup:

    • Ensure a PostgreSQL database is set up and running.
    • Update the database connection details in application.properties.
    • Run the application to create the initial database schema.
  4. Start the Spring Boot application:

    mvn spring-boot:run
    # Or just press the play button in your IDE
  5. Access the API at http://localhost:8080/api/... in your browser or API client.

  6. Access the resume template at http://localhost:8080/resume/{id}.

Usage

  • Access the Swagger documentation at http://localhost:8080/swagger-ui/index.html to explore and interact with the API endpoints.
  • Use tools like Postman to make requests to the API endpoints.

API Endpoints

image


To-Do

  • Auth Done
  • hide db credentials for production. 👀 Done (add env variables)
  • Dockerize app & deploy (or something)
  • add skills from db (later, I need to deploy it first.)
  • Add more resume templates

About

Personal website/resume in Spring

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published