feat: add statistics API and dashboard for asset metrics
All checks were successful
Rust CI / build-test (push) Successful in 1m22s
All checks were successful
Rust CI / build-test (push) Successful in 1m22s
- Implemented `/api/stats` endpoint to return JSON metrics including active assets, total uploads, storage usage, and recent activity. - Created `stats.html` page to display real-time statistics with auto-refresh functionality. - Enhanced asset logging to include uploader IP and detailed event information for uploads and deletions. - Updated asset model to store uploader IP for audit purposes. - Improved logging functionality to ensure log directory exists before writing. - Refactored asset creation and management to support new features and logging.
This commit is contained in:
40
CHANGELOG.md
Normal file
40
CHANGELOG.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.1.0] - 2026-01-09
|
||||
|
||||
### Added
|
||||
|
||||
- **Statistics Dashboard** (`/stats.html`) with real-time metrics:
|
||||
- Active assets count
|
||||
- Total uploads and deletions
|
||||
- Storage usage
|
||||
- Image vs text breakdown
|
||||
- Average server response time
|
||||
- Total request count
|
||||
- Recent activity feed (last 20 events)
|
||||
- Auto-refresh every 30 seconds
|
||||
- **Statistics API** (`GET /api/stats`) returning JSON metrics
|
||||
- **Enhanced logging** for asset events:
|
||||
- Upload events with uploader IP, MIME type, size, duration, timestamps
|
||||
- Delete events with full asset metadata
|
||||
- Request timing (`dur_ms`) in access logs
|
||||
- **Uploader IP tracking** stored with each asset for audit purposes
|
||||
- Stats link in index page footer
|
||||
- Ephemeral image and text sharing with configurable TTL (1-60 minutes)
|
||||
- Drag/drop, paste, and file picker upload support
|
||||
- Base64 encoding for images, raw text for plain text
|
||||
- UUID-based asset storage as JSON files
|
||||
- Background cleanup task (every 60 seconds)
|
||||
- Dark theme UI with zoom overlay
|
||||
- View page for shared content
|
||||
- Access logging with timing, IPs, and user agent
|
||||
- Docker and docker-compose support with Traefik labels
|
||||
- Environment variables for bind address and port
|
||||
- Access logging with timing, IPs, and user agent
|
||||
- Docker and docker-compose support with Traefik labels
|
||||
- Environment variables for bind address and port
|
||||
Reference in New Issue
Block a user