Skip to content

SharadJ19/blog-cms

Repository files navigation

πŸ“ Angular Blog CMS

A modern, feature-rich Blog Content Management System built with Angular 20

Angular TypeScript Vercel

🎯 About The Project

Angular Blog CMS is a lightweight, intuitive content management system that demonstrates modern Angular development practices. Perfect for learning Angular fundamentals or as a starter template for your blog platform.

✨ Key Highlights

  • 🎨 Clean Architecture - Well-organized component structure
  • πŸš€ Modern Stack - Built with Angular 20 and TypeScript 5.4
  • πŸ“± Responsive Design - Works seamlessly across all devices
  • ⚑ Fast Performance - Optimized for speed and efficiency
  • πŸ”§ Easy Setup - Get started in minutes

πŸš€ Quick Start

Get up and running in just a few steps:

Installation

git clone https://github.com/sharadj19/blog-cms.git
cd blog-cms
npm install

Running the Application

You'll need to run both the backend API and frontend application:

# Terminal 1 - Start the JSON Server (Backend)
npm run db-json

# Terminal 2 - Start Angular Development Server (Frontend)
npm start

πŸŽ‰ That's it! Your application is now running:

Mobile Testing

To test on mobile devices on the same network(hotspot):

npm run start:mobile

✨ Features

πŸ“Š Dashboard

  • Real-time statistics
  • Quick overview of all posts
  • Category breakdown
  • Recent activity feed

πŸ“ Post Management

  • Create new blog posts
  • Edit existing content
  • Delete posts
  • Rich text formatting

🏷️ Categories

  • Organize posts by category
  • Create custom categories
  • Category-based filtering
  • Tag management

πŸ” Search & Filter

  • Full-text search
  • Filter by category
  • Sort by date/title
  • Advanced filtering options

πŸ› οΈ Tech Stack

Technology Purpose
Angular 20 Frontend framework
TypeScript 5.4 Programming language
json-server Mock REST API
Angular Router Navigation & routing
RxJS Reactive programming
Vercel Deployment platform

πŸ“ Project Structure

blog-cms/
|
β”œβ”€β”€ json-server-db/
β”‚   └── db.json                     # Mock API data
β”‚
β”œβ”€β”€ public/
β”‚   └── favicon.ico
β”‚
β”œβ”€β”€ screenshots/                    # App screenshots for README
β”‚   β”œβ”€β”€ categories.png
β”‚   β”œβ”€β”€ dashboard.png
β”‚   β”œβ”€β”€ post-detail.png
β”‚   β”œβ”€β”€ post-editor.png
β”‚   └── posts-list.png
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ models/                 # Data models
β”‚   β”‚   β”‚   β”œβ”€β”€ category-model.ts
β”‚   β”‚   β”‚   └── post-model.ts
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ pages/                  # App pages / routes
β”‚   β”‚   β”‚   β”œβ”€β”€ categories/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ categories.html
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ categories.ts
β”‚   β”‚   β”‚   β”‚   └── categories.css
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard.html
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard.ts
β”‚   β”‚   β”‚   β”‚   └── dashboard.css
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€ post-detail/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ post-detail.html
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ post-detail.ts
β”‚   β”‚   β”‚   β”‚   └── post-detail.css
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   β”œβ”€β”€ post-form/
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ post-form.html
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ post-form.ts
β”‚   β”‚   β”‚   β”‚   └── post-form.css
β”‚   β”‚   β”‚   β”‚
β”‚   β”‚   β”‚   └── posts/
β”‚   β”‚   β”‚       β”œβ”€β”€ posts.html
β”‚   β”‚   β”‚       β”œβ”€β”€ posts.ts
β”‚   β”‚   β”‚       └── posts.css
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   └── api-service.ts      # REST API wrapper
β”‚   β”‚   β”‚
β”‚   β”‚   β”œβ”€β”€ app.config.ts
β”‚   β”‚   β”œβ”€β”€ app.html
β”‚   β”‚   β”œβ”€β”€ app.ts
β”‚   β”‚   └── app.routes.ts
β”‚   β”‚
β”‚   β”œβ”€β”€ assets/
β”‚   β”‚   └── icons/                  # UI icons
β”‚   β”‚       β”œβ”€β”€ categories.svg
β”‚   β”‚       β”œβ”€β”€ dashboard.svg
β”‚   β”‚       └── posts.svg
β”‚   β”‚
β”‚   β”œβ”€β”€ environments/               # Env configs
β”‚   β”‚   β”œβ”€β”€ environment.ts
β”‚   β”‚   └── environment.development.ts
β”‚   β”‚
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ main.ts
β”‚   └── styles.css
β”‚
β”œβ”€β”€ package.json
└── angular.json                    # Angular project config

πŸ”§ Development

Available Scripts

Command Description
npm start Start Angular development server
npm run db-json Start JSON Server backend
npm run build Build for production
npm run start:mobile Start with network access for mobile testing
npm test Run unit tests

Configuration

Environment configurations can be modified in:

  • src/environments/environment.development.ts (development)
  • src/environments/environment.ts (production)

πŸ“š What I Learned

This project helped me master:

βœ… Angular Fundamentals

  • Component architecture and lifecycle hooks
  • Dependency injection and services
  • Template and reactive forms
  • Data binding and event handling

βœ… Routing & Navigation

  • Angular Router configuration
  • Route guards and lazy loading
  • Navigation strategies

βœ… HTTP & APIs

  • HttpClient for API calls
  • Observable patterns with RxJS
  • Error handling and interceptors

βœ… TypeScript

  • Strong typing and interfaces
  • Generics and advanced types
  • Best practices and patterns

βœ… Development Workflow

  • Version control with Git
  • Code organization and structure
  • Debugging techniques
  • Deployment strategies

πŸ“Έ Screenshots

πŸ“Š Dashboard Overview

Dashboard

Real-time statistics and insights at a glance

πŸ“ Posts Management

Posts List

Browse, search, and manage all your blog posts

✍️ Post Editor

Post Editor

Intuitive interface for creating and editing content

πŸ‘οΈ Post Details

Post Detail

Detailed view of individual blog posts

🏷️ Category Management

Categories

Organize your content with custom categories

πŸ“ License

Distributed under the GNU General Public License v3.0. See LICENSE for more information.

πŸ‘¨β€πŸ’» Author

Sharad Chandel

Full Stack Developer | Open Source Enthusiast

GitHub Portfolio

πŸ’¬ Feedback

If you have any feedback, please reach out by creating an issue or connecting with me through my portfolio!

⭐ Don't forget to star this repo if you found it helpful!

Made with ❀️ by Sharad Chandel