A full-stack blog management system built with .NET 8 Web API, Angular 19, and PostgreSQL, containerized with Docker.
Post_Management.API/- Backend API built with .NET 8Post_Management.UI/- Frontend application built with Angular 19docker-compose.yml- Docker composition for all services
- Docker Desktop
- Git
- Clone the repository:
git clone <repository-url>
cd Post_Management-
Access to the Post_Management.API/appsetting.json
- first time build the Application:
- set ApplyMigration: false to true (Enable auto EF Core Migration)
- next time build the Apllication:
- set ApplyMigration: true to false (Using existing DB)
- first time build the Application:
-
Start the application using Docker Compose:
docker-compose up -d- Access the applications:
- Frontend: http://localhost:80
- Backend API & Swagger: http://localhost:5000/swagger
- Database: localhost:5432 (PostgreSQL)
The application consists of three main services:
-
Frontend (postmanagement-ui)
- Angular 19 application
- Runs on port 80
- Features Markdown support and modern UI with Tailwind CSS
-
Backend API (postmanagement-api)
- .NET 8 Web API
- Runs on ports 5000 (HTTP) and 5001 (HTTPS)
- Provides RESTful endpoints for blog post management
-
Database (postmanagement-db)
- PostgreSQL database
- Runs on port 5432
- Stores blog posts, categories, and images
-
pgAdmin (DBMS)
- Runs on port 5050
For local development without Docker:
- Frontend:
cd Post_Management.UI
npm install
ng serve- Backend:
cd Post_Management.API
dotnet run- Frontend Environment Configuration:
# Navigate to UI project
cd Post_Management.UI/src/environments
# Copy template to create environment files
cp environment.template.ts environment.ts
cp environment.template.ts environment.development.ts
cp environment.template.ts environment.production.ts- Update the environment files with your specific configurations:
environment.ts- Default environmentenvironment.development.ts- Development environmentenvironment.production.ts- Production environment
Note: Environment files are git-ignored for security. Make sure to set them up locally after cloning.
This project is licensed under the Unlicense - see the LICENSE.txt file for details.