A full-stack blogging platform built with Spring Boot (Java), PostgreSQL, and React, deployed using Terraform on Azure.
- JWT-based Authentication
- Role-based access control
- CRUD operations for Posts, Categories, Tags
- PostgreSQL via Docker Compose (for local dev)
- React frontend with live preview
- Infrastructure provisioned via Terraform
- Deployment on Azure App Services (Backend & Frontend)
- Backend: Spring Boot, Spring Security, JWT, MapStruct, JPA
- Frontend: React + Vite (Node 20+)
- Database: PostgreSQL + Adminer (via Docker)
- IaC & Deployment: Terraform, Azure
./mvnw clean install
./mvnw spring-boot:runcd frontend
npm install
npm run devdocker-compose upAccess DB Admin UI at: http://localhost:8888
The following environment variables must be set for the application to run correctly:
SPRING_DATASOURCE_URL: JDBC URL for PostgreSQL (e.g.,jdbc:postgresql://localhost:5432/blogdb)SPRING_DATASOURCE_USERNAME: PostgreSQL database usernameSPRING_DATASOURCE_PASSWORD: PostgreSQL database passwordJWT_SECRET: Secret key for signing JWT tokens
VITE_API_BASE_URL: Base URL for the backend API (e.g.,http://localhost:8080/api)
Make sure to configure these variables in your local environment or deployment pipeline (e.g., GitHub Secrets or Azure App Settings). """
- Navigate to the
infra/directory. - Update
terraform.tfvarswith your Azure credentials and config. - Run:
terraform init terraform apply
- Frontend and Backend will be deployed to Azure Web Apps.
See infra/README.md for full Terraform setup instructions.
See docs/API.md
See docs/ERD.md and docs/architecture.md
This project is licensed under the MIT License. See the LICENSE file for details.