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.
- Inspiration: Based on a static HTML and CSS resume .
- Conversion to Thymeleaf Template:
- Replaced static content with Thymeleaf placeholders.
- Integrated with Spring Boot to dynamically populate resume data from the database.
- 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.
- Database Setup:
- Configured PostgreSQL for data storage.
- Dockerized PostgreSQL for easy management and consistency across environments.
- Interactive Documentation:
- Integrated Swagger UI for interactive API documentation.
- Error Handling and Validation:
- Implemented global exception handling with
@ControllerAdvice
. - Added data validation.
- Implemented global exception handling with
- 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.
- Continuous integration and Continuous Delivery CI/CD
- CI/DI deployment with GitHub and render.
- 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
- 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.
To run the Personal Resume Website API locally, follow these steps:
-
Clone the repository:
git clone https://github.com/AngelosGi/personal-website.git # Or use SSH git clone [email protected]:AngelosGi/personal-website.git
-
Install dependencies:
mvn install
-
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.
-
Start the Spring Boot application:
mvn spring-boot:run # Or just press the play button in your IDE
-
Access the API at
http://localhost:8080/api/...
in your browser or API client. -
Access the resume template at
http://localhost:8080/resume/{id}
.
- 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.
AuthDonehide 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