Post Management API
A simple FastAPI application for managing posts with SQLite backend, user authentication, and comprehensive logging.
Features
- User Management with JWT Authentication
- CRUD operations for posts (Create, Read, Update, Delete)
- Post ownership and authorization controls
- Paginated API responses
- SQLite database integration with SQLAlchemy
- Comprehensive logging system with file rotation
- Request timing and monitoring
- Input validation using Pydantic models
- Modern FastAPI practices with lifespan management
API Flow Diagram
flowchart TD
A[<font color=black>Client</font>]
B[<font color=black>FastAPI App</font>]
C[<font color=black>Router Layer</font>]
D[<font color=black>Database Layer</font>]
E[<font color=black>Logging System</font>]
F[<font color=black>SQLite DB</font>]
K[<font color=black>Auth Layer</font>]
A -->|HTTP Request| B
B -->|Authenticate| K
K -->|Validate| D
B -->|Route| C
C -->|Query| D
D -->|Store/Retrieve| F
B -->|Log Request| E
C -->|Log Operation| E
D -->|Log DB Event| E
subgraph Operations
G[<font color=black>Create Post</font>]
H[<font color=black>Read Post</font>]
I[<font color=black>Update Post</font>]
J[<font color=black>Delete Post</font>]
L[<font color=black>User Auth</font>]
end
C --> Operations
classDef client fill:#FFD700,stroke:#333,stroke-width:2px;
classDef api fill:#98FB98,stroke:#333,stroke-width:2px;
classDef data fill:#87CEEB,stroke:#333,stroke-width:2px;
classDef logs fill:#FFA07A,stroke:#333,stroke-width:2px;
classDef ops fill:#DDA0DD,stroke:#333,stroke-width:2px;
classDef auth fill:#FF69B4,stroke:#333,stroke-width:2px;
class A client;
class B,C api;
class D,F data;
class E logs;
class G,H,I,J,L ops;
class K auth;
Installation
- Ensure Python 3.8+ is installed
- Clone the repository
- Install dependencies:
pip install -r requirements.txt
Project Structure
.
├── logs/ # Application logs directory
│ └── app_YYYYMMDD.log # Daily rotating log files
├── src/
│ ├── database/
│ │ ├── __init__.py
│ │ ├── config.py # Database configuration and session
│ │ └── models.py # SQLAlchemy database models
│ ├── models/
│ │ ├── __init__.py
│ │ ├── post.py # Pydantic models for posts
│ │ └── user.py # Pydantic models for users
│ ├── router/
│ │ ├── __init__.py
│ │ ├── post_router.py # Post CRUD endpoints
│ │ └── user_router.py # User management endpoints
│ └── utils/
│ ├── __init__.py
│ ├── auth.py # Authentication utilities
│ └── logger.py # Logging configuration
├── main.py # FastAPI application entry point
├── requirements.txt # Project dependencies
└── README.md # Project documentation
API Endpoints
Authentication
POST /users/register
- Register a new userPOST /users/login
- Login and get access tokenGET /users/me
- Get current user information
Posts
GET /posts
- List all posts (paginated)- Query parameters:
skip
: Number of posts to skip (default: 0)limit
: Number of posts per page (default: 10, max: 100)
- Returns:
items
: List of poststotal
: Total number of postsskip
: Current skip valuelimit
: Current limit value
- Query parameters:
GET /posts/{id}
- Get a specific postPOST /posts
- Create a new post (requires authentication)PUT /posts/{id}
- Update an existing post (requires authentication, owner only)DELETE /posts/{id}
- Delete a post (requires authentication, owner only)
Running the Application
python main.py
The API will be available at http://127.0.0.1:8000
Authentication
The API uses JWT (JSON Web Tokens) for authentication:
- Register a new user with username and password
- Login to receive an access token
- Include the token in subsequent requests:
Authorization: Bearer <your_access_token>
Logging
Logs are stored in the logs
directory with:
- Daily rotation
- 1MB file size limit
- 5 backup files retained
- Both file and console output
- Request timing information
- Operation tracking for all CRUD operations
- Authentication events logging
API Documentation
- Swagger UI:
http://127.0.0.1:8000/docs
- ReDoc:
http://127.0.0.1:8000/redoc
Post Management API
Project Details
- Kekniskd/cursor-IDE-API
- Last Updated: 3/2/2025
Recomended MCP Servers
A Model Context Protocol (MCP) server that provides web search functionality using Perplexity AI's API.
Model Context Protocol Server for NebulaGraph 3.x
Model Context Protocol Servers
基于Python的开源量化交易平台开发框架
MCP server for the Tradovate platform
Playing with MCP servers.....
A Telegram Music Bot written in Python using Pyrogram and Py-Tgcalls. This is Also The Source Code of...
Verify that any MCP server is running the intended and untampered code via hardware attestation.
Model Context Protocol (MCP) server that provides weather information from Malaysia Government's Open API
Open source alternative communication platform.
A Model Context Protocol server for Linear.