Production-ready .NET 10 REST API for converting documents and images. HTML/Markdown to PDF, Markdown to HTML, image format conversions, PDF watermarking, password protection, and merge/split with enterprise-grade authentication, webhooks, and monitoring.
Enterprise-ready file conversion with modern architecture
Secure Bearer token authentication with refresh tokens and configurable expiration.
HTML/Markdown to PDF, Markdown to HTML using PuppeteerSharp and Markdig with customizable options.
Convert DOCX and XLSX to PDF using LibreOffice headless mode with watermark and encryption support.
Convert between PNG, JPEG, WebP, GIF, BMP formats with resize and quality options using ImageSharp.
Capture HTML pages or URLs as PNG, JPEG, or WebP screenshots with configurable viewport and full-page capture.
Render PDF pages to PNG, JPEG, or WebP with configurable DPI, single page or all pages, and password support.
Extract text content from PDF documents with support for specific pages and password-protected files.
Background job processing with status tracking and result retrieval.
CQRS pattern with MediatR, ensuring maintainable and testable code.
Entity Framework Core with PostgreSQL for reliable data persistence.
Multi-arch containers (AMD64/ARM64) optimized for production deployments.
HTTP callbacks when jobs complete or fail with configurable retries.
Built-in /metrics endpoint for Grafana dashboards with conversion and HTTP request metrics.
Detailed /health endpoint reporting database, Chromium, and disk space status.
Add text watermarks to PDFs with customizable font, color, opacity, rotation, and positioning.
Password protection with user/owner passwords and granular permission controls for printing, copying, and editing.
Combine multiple PDFs into one or split PDFs by page ranges into separate files.
Process up to 20 conversion requests in a single API call with partial success support.
Role-based admin endpoints for user management, job statistics, and system monitoring.
Save and reuse conversion settings including page sizes, margins, and watermarks.
Distributed tracing for end-to-end request visibility. Export to Jaeger, Zipkin, or OTLP backends.
Configurable file size limits, URL allowlist/blocklist for SSRF protection, and content type validation.
Automatic admin user creation on startup for initial setup. Configurable credentials with production-safe defaults.
Per-user monthly limits on conversions and bytes processed. Automatic reset each month with admin exemption support.
Tiered rate limits (Free, Basic, Premium, Unlimited) with admin-configurable per-user overrides and admin exemption.
Store conversion outputs in S3-compatible storage (AWS S3, MinIO, DigitalOcean Spaces, Cloudflare R2). Backward compatible with database storage.
RESTful endpoints for authentication and file conversion
Get up and running in minutes
# Clone the repository git clone https://github.com/Roly67/silver-fiesta.git cd silver-fiesta # Start with Docker Compose docker-compose up -d # API available at http://localhost:5000 # Swagger UI at http://localhost:5000/swagger
# 1. Register a user curl -X POST http://localhost:5000/api/v1/auth/register \ -H "Content-Type: application/json" \ -d '{"email": "user@example.com", "password": "SecurePass123!"}' # 2. Login to get token curl -X POST http://localhost:5000/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email": "user@example.com", "password": "SecurePass123!"}' # 3. Convert HTML to PDF (with optional webhook) curl -X POST http://localhost:5000/api/v1/convert/html-to-pdf \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"htmlContent": "<h1>Hello World</h1>", "fileName": "document.pdf", "webhookUrl": "https://example.com/webhook"}'