Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
Renders your JSON resume/CV for online and terminal display, with ANSI styling and self-hosting options.
ancv is a Python tool that renders a JSON Resume-format CV into ANSI-styled terminal output, served from public GitHub gists for online display.
ancv is an open-source Python package created by Alex Povel that consumes a resume in JSON Resume Schema format and outputs a formatted CV using ANSI escape codes for terminal display. It can serve resumes over HTTP, so visitors can view them with curl, wget, or PowerShell. The hosted instance at ancv.povel.dev runs on Google Cloud Run, and the project is built on Python 3.10, pydantic, rich, asyncio, and mypy.
resume.json conforming to the JSON Resume Schema; an optional $.meta.ancv field adds configuration without breaking compatibility.resume.json becomes accessible at ancv.povel.dev/username; curl -L follows the redirect.ancv validate command checks schema correctness and ancv render displays the final output before publishing.ancv serve web hosts from an HTTP URL with configurable refresh interval, cached fallback, and host/port binding (default localhost:8080).ghcr.io/alexpovel/ancv plus a Docker Compose setup with Caddy for automatic HTTPS.ascii_only toggle restricts template drawing to ASCII characters like - instead of Unicode box-drawing lines.dec31_as_year to true shows dates like 2024-12-31 as just 2024.curl command.resume.json from a JSON Resume export, then send the ancv.povel.dev/your-username URL.ancv render resume.json locally to see the exact terminal output and catch pydantic validation errors.ancv serve web on localhost:8080 to test the web experience before going live.First, create a resume file according to the JSON Resume Schema, either manually, with an LLM prompt, by exporting from LinkedIn with Joshua Tzucker's exporter, or from a JSON-resume-compatible platform. Second, upload that file as a public gist titled resume.json. Third, access the CV through ancv.povel.dev/username or your own self-hosted instance.
Self-hosting is a first-class feature. The hosted ancv.povel.dev runs on Google Cloud Run and is deployed automatically from the latest release. For personal setups, the repository includes a self-hosting directory with a Caddyfile and Docker Compose configuration; clone the repo, edit the domain, add your resume.json, and run docker compose up. Caddy handles HTTPS via ACME. Serverless options like DigitalOcean Functions are also possible, though dependency management is noted as harder there.
Yes, ancv is open-source and free. The hosted service at ancv.povel.dev is offered for convenience, but the author warns it cannot be guaranteed forever, so self-hosting is encouraged.
The resume must follow the JSON Resume Schema. A valid JSON Resume without an ancv metadata section works fine because all configuration is optional.
Yes, by self-hosting. The Docker Compose setup includes Caddy, which automatically provisions HTTPS certificates for the domain you configure in the Caddyfile.
Use Joshua Tzucker's LinkedIn profile to JSON Resume exporter. You will likely need to clean the output: remove empty string values for basics.url and endDate keys to stay conformant with the schema.
Yes, emojis are user-controlled. You can include them in your resume.json text content; some themes also use Unicode characters like • for bullets.
