Blogging Platform API

A RESTful API for a blogging platform built with FastAPI and SQLite.

Features

  • User authentication (register, login)
  • Blog post management (CRUD operations)
  • Comment system
  • Tag/category support for blog posts
  • Health check endpoint
  • Proper error handling
  • API documentation with Swagger and ReDoc

Tech Stack

  • FastAPI: Modern, fast web framework for building APIs with Python
  • SQLAlchemy: SQL toolkit and Object-Relational Mapping (ORM)
  • SQLite: Lightweight, serverless database
  • Alembic: Database migration tool
  • Pydantic: Data validation and settings management
  • JWT: JSON Web Tokens for authentication
  • Uvicorn: ASGI server

Project Structure

.
├── alembic.ini
├── app
│   ├── api
│   │   ├── deps.py
│   │   ├── v1
│   │   │   ├── api.py
│   │   │   └── endpoints
│   │   │       ├── auth.py
│   │   │       ├── comments.py
│   │   │       ├── posts.py
│   │   │       ├── tags.py
│   │   │       └── users.py
│   ├── core
│   │   ├── config.py
│   │   └── security.py
│   ├── crud
│   │   ├── base.py
│   │   ├── crud_comment.py
│   │   ├── crud_post.py
│   │   ├── crud_tag.py
│   │   └── crud_user.py
│   ├── db
│   │   ├── base.py
│   │   ├── deps.py
│   │   └── session.py
│   ├── models
│   │   ├── comment.py
│   │   ├── post.py
│   │   ├── tag.py
│   │   └── user.py
│   ├── schemas
│   │   ├── comment.py
│   │   ├── post.py
│   │   ├── tag.py
│   │   ├── token.py
│   │   └── user.py
│   └── utils
│       └── errors.py
├── main.py
├── migrations
│   ├── env.py
│   ├── script.py.mako
│   └── versions
│       └── 0001_initial_migration.py
├── requirements.txt
└── storage
    └── db

Setup Instructions

Prerequisites

  • Python 3.8 or higher
  • pip (Python package installer)

Installation

  1. Clone the repository:

    git clone <repository-url>
    cd blogging-platform-api
    
  2. Create a virtual environment (optional but recommended):

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Install dependencies:

    pip install -r requirements.txt
    
  4. Set up environment variables (optional): Create a .env file in the root directory with the following variables:

    SECRET_KEY=your-secret-key
    ACCESS_TOKEN_EXPIRE_MINUTES=10080  # 7 days
    
  5. Run database migrations:

    alembic upgrade head
    

Running the Application

Start the FastAPI server:

uvicorn main:app --reload

The API will be available at http://localhost:8000

API Documentation

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc
  • OpenAPI JSON: http://localhost:8000/openapi.json

API Endpoints

Authentication

  • POST /api/v1/auth/register: Register a new user
  • POST /api/v1/auth/login: Login and get access token

Users

  • GET /api/v1/users/me: Get current user
  • PUT /api/v1/users/me: Update current user

Blog Posts

  • GET /api/v1/posts: List posts
  • POST /api/v1/posts: Create a new post
  • GET /api/v1/posts/{id}: Get a post by ID
  • PUT /api/v1/posts/{id}: Update a post
  • DELETE /api/v1/posts/{id}: Delete a post

Comments

  • GET /api/v1/comments: List comments
  • POST /api/v1/comments: Create a new comment
  • GET /api/v1/comments/{id}: Get a comment by ID
  • PUT /api/v1/comments/{id}: Update a comment
  • DELETE /api/v1/comments/{id}: Delete a comment

Tags

  • GET /api/v1/tags: List tags
  • POST /api/v1/tags: Create a new tag
  • GET /api/v1/tags/{id}: Get a tag by ID
  • PUT /api/v1/tags/{id}: Update a tag
  • DELETE /api/v1/tags/{id}: Delete a tag

Health Check

  • GET /health: Check if the API is up and running
Description
Project: Blogging Platform API
Readme 67 KiB
Languages
Python 98.9%
Mako 1.1%