An open API service indexing awesome lists of open source software.

https://github.com/ragab0/blog-post-api

A simple blog post api (back-end repo)
https://github.com/ragab0/blog-post-api

bcrypt jwt nestjs nodejs postgresql rest-client swagger typeorm typescript

Last synced: 14 days ago
JSON representation

A simple blog post api (back-end repo)

Awesome Lists containing this project

README

          

# 🚀 DevBlog API

A modern, feature-rich blogging platform API built with NestJS, featuring authentication and post management

## ✨ Features

- **🔐 Authentication**

- User registration and login
- JWT-based authentication
- Protected routes with auth guards
- User profile management

- **📝 Blog Posts**

- Create, read, update, and delete posts
- Pagination support

- **👤 User Management**

- User profiles with avatars
- Email-based authentication
- Password security with hashing
- Profile updates

- **📚 API Documentation**

- Comprehensive Swagger documentation
- Detailed request/response schemas
- Interactive API testing interface (in REST client extension - postman like)

## 🛠️ Tech Stack

- **🔧 Framework**: NestJS
- **🗄️ Database**: PostgreSQL with TypeORM
- **🔑 Authentication**: JWT (JSON Web Tokens)
- **📖 Documentation**: Swagger/OpenAPI
- **✅ Validation**: Class Validator & Class Transformer
- **🔒 Security**: bcrypt for password hashing

## 💻 Quick Start

### Prerequisites

- Node.js
- PostgreSQL server running locally
- npm/yarn

### Setup

```bash
# Install dependencies
npm install

# Create .env file with your configurations
PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_password
DB_NAME=devblog
JWT_SECRET=your_super_secret_key

# Start development server
npm run start:dev
```

## 🔌 API Endpoints

### 🚦 Project Structure

```
src/
├── auth/ # Authentication module
├── posts/ # Posts module
├── users/ # Users module
├── common/ # Shared resources
└── app.module.ts # Main application module
```

### Authentication

- `POST /api/auth/register` - Register a new user
- `POST /api/auth/login` - Login user
- `POST /api/auth/logout` - Logout user
- `GET /api/auth/me` - Get user profile

### Posts

- `GET /api/posts` - Get all posts (with pagination)
- `GET /api/posts/:id` - Get a specific post
- `POST /api/posts` - Create a new post
- `PUT /api/posts/:id` - Update a post
- `DELETE /api/posts/:id` - Delete a post

### Users

- `GET /api/users/profile` - Get user profile
- `PUT /api/users/profile` - Update user profile

## 📖 API Documentation

https://devblog-api-q9ij.onrender.com/api/docs