Description: This project is a technical test for a job, built with Spring Boot (Backend) and Angular (Frontend). It involves several technical requirements such as JPARepository, Hibernate, Liquibase for database management, JWT authentication, LocalStorage for session management, and more.
- Prerequisites
- Installation
- Backend Setup (Spring Boot)
- Frontend Setup (Angular)
- Features
- Demo
- IMPORTANT
Before getting started, ensure you have the following installed on your machine:
- Java 17+ (for Spring Boot)
- Node.js and npm (for Angular)
- SQL Server
- Visual Studio Code or other IDE
- Clone the repository:
git clone https://github.com/MikeEncalada/PostMangerProject.git cd Technical-Challenge - Create a database with the name "TechnicalChallenge" or other name that you can configure in Application.Properties, the same with the user and password for the database
- Build and run Springboot from your IDE
- Navigate to the Angular Project:
cd Technical-Challenge-Frontend/frontend-technical-challenge - Install dependencies:
npm install
- Run the Angular application:
npm start
The backend is built using Spring Boot with the following key technologies:
- JPARepository for database access.
- Hibernate as the ORM for managing entities and relationships.
- JWT (JSON Web Tokens) for secure authentication and authorization.
- Liquibase for managing database migrations.
Ensure your database is set up and configure the connection in application.properties
The frontend is built using Angular with HTTP client to interact with the backend. The app uses LocalStorage to persist user sessions and handle authentication tokens.
- User authentication with JWT (Login/Register).
- Role-based access control (Admin/User).
- CRUD operations for managing resources.
- Database migrations using Liquibase.
- Real-time features (implemented with Signals).
This section will show images of the application.
- There is a default user with credentialas email: defaultAdminUser and password: encryptedpassword
- There is not management for user and roles (I ran out of time.)






