You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A universal file converter supporting 120+ formats across 8 categories
Free · Private · No sign-up · Files auto-deleted after 1 hour
Demo
21 real conversions across all 8 categories — each preceded by a live AI content summary and format recommendation. Download the full MP4 (8 MB, 4 min).
AI Insights
Every upload is analysed by Llama 3.3 70B (via Groq) before you pick a format. The assistant reads the actual content of the file — not just its extension — and recommends the output format that best fits your likely use case.
The card surfaces five things per file:
Content summary — what's actually in the file: subject matter, dominant colours, page count, audio bitrate, EPUB title, archive manifest, font glyph count, data schema
Recommended format with a one-line justification (pre-selects the format pill)
Alternatives — two ranked fallbacks, each with their own reason
To enable AI insights, add your Groq API key to .env:
GROQ_API_KEY=your_key_here
Make Commands
make dev # Start all services with live logs
make up # Start in background
make down # Stop all services
make build # Rebuild images from scratch
make logs # Stream all logs
make logs-backend # API + worker logs only
make clean # Stop and remove volumes
make shell-backend # Bash shell inside the API container
make test-backend # Run pytest inside the API container
Local Development (without Docker)
Requires Redis, FFmpeg, LibreOffice, Pandoc, Calibre, and ImageMagick installed locally.
Drop a file — the frontend calls POST /api/ai/analyze-upload immediately; the AI insight card animates in while the format picker loads in parallel
Pick a format — the AI pre-selects its recommendation; you can override it with any of the 120+ format pills
Upload — POST /api/upload saves the file and creates a ConversionJob record (status: pending)
Convert — POST /api/convert/{job_id} runs the appropriate converter in a thread pool with real-time progress callbacks
Poll — the frontend polls GET /api/job/{job_id} every second until completed or failed
Download — GET /api/download/{job_id} streams the output file back
Cleanup — both input and output files are deleted after 1 hour
Converter architecture
Each category has one converter class that inherits BaseConverter and declares its supported_input_formats and supported_output_formats. The ConversionRegistry auto-discovers all converter classes at startup and routes any format pair to the right handler. To add a new format: create a subclass, add the format strings, done — nothing else changes.
AI analysis
The analyze function in services/ai.py extracts a rich preview from each file type (PDF text, DOCX paragraphs, image colour palette + EXIF, audio codec details, EPUB metadata, archive manifest, font glyph count, etc.), then sends it to Llama 3.3 70B via Groq. The model returns structured JSON: summary, recommended format, two alternatives, tips, and a suggested filename. All format values are validated against the actual available output formats before the response is returned.
License
MIT
Built with Next.js · FastAPI · Celery · Redis · Docker
About
Universal file converter supporting 120+ formats across images, documents, audio, video, archives, code, 3D models, and fonts. Full-stack with Next.js frontend and FastAPI backend