Skip to main content

Render 'JSON Resume' sources to ANSI-enriched output for terminal clients (cURL, wget, ...) to consume.

Project description

ancv

Getting you an CV (ANSI-v 🤡) straight to your and anyone else's terminals.

Be warned though, for this is kinda useless and just for fun:

Users Venn diagram

Getting started

  1. Create a resume according to the JSON Resume Schema (see also the schema specification) either:

  2. Create a public gist named resume.json with those resume contents. See here for a working example from the author.

  3. Try it out, using...

    • curl:

      curl -L ancv.io/username
      

      with -L being shorthand for --location, allowing you to follow the redirect from http://ancv.io through to https://ancv.io. It's shorter than its also perfectly viable alternative:

      curl https://ancv.io/username
      

      Lastly, you might want to page the output for easiest reading, top-to-bottom:

      curl -sL ancv.io/username | less
      

      If that garbles the rendered output, try less -r aka --raw-control-chars.

    • wget:

      wget -O - --quiet ancv.io/username
      

      where -O is short for --output-document, used here to redirect to stdout.

    • PowerShell (5 and 7):

      (iwr ancv.io/username).Content
      

      where iwr is an alias for Invoke-Webrequest, returning an object.

    For a quick, working example replace username with alexpovel.

Configuration

All configuration is optional.

The CV is constructed as follows:

conceptual flow chart

These components may be controlled using the ancv field in your resume.json:

{
   "basics": {},
   "education": [],
   "meta": {
     "ancv": {
        "template": "Sequential",
        "theme": "basic",
        "ascii_only": false,
        "language": "en"
     }
   }
}

The shown values are the default ones. All fields, including the ancv one itself, are optional, and the above defaults will be set for omitted fields. This means a valid JSON resume (without an ancv section) is also valid here. The currently available options can be printed out:

$ pip install ancv >> /dev/null && ancv list
Components
├── Templates
│   └── Sequential
├── Themes
│   ├── plain
│   └── basic
└── Translations
    ├── en
    └── de

Installation

As a library

Install the package as usual:

pip install ancv

This also allows you to import whatever you could want or need from the package, if anything. Note that it's pretty heavy on the dependencies.

As a container

See also the available packages aka images:

docker pull ghcr.io/alexpovel/ancv

Versioned tags (so you can pin a major) are available.

Local usage

Once installed, you could for example check whether your resume.json is valid at all (validate) or get a glimpse at the final product (render):

# pip route:
$ ancv render resume.json
# container route:
$ docker run -v $(pwd)/resume.json:/app/resume.json ghcr.io/alexpovel/ancv render

Self-hosting

Self-hosting is a first-class citizen here.

Context: Cloud Hosting

The https://ancv.io site is hosted on Google Cloud Run (serverless) and deployed there automatically, such that the latest release you see here is also the code executing in that cloud environment. That's convenient to get started: simply create a resume.json gist and you're good to go within minutes. It can also be used for debugging and playing around; it's a playground of sorts.

You're invited to use this service for as much and as long as you'd like. However, obviously, as an individual I cannot guarantee its availability in perpetuity. You might also feel uncomfortable uploading your CV onto GitHub, since it has to be public for this whole exercise to work. Lastly, you might also be suspicious of me inserting funny business into your CV before serving it out. If this is you, self-hosting is for you.

Setup

For simplicity, using Docker Compose (with Docker's recent Compose CLI plugin):

  1. Clone this repository onto your server (or fork it, make your edits and clone that)
  2. cd self-hosting
  3. Edit Caddy's config file (more info) to contain your own domain name
  4. Place your resume.json into the directory
  5. Run docker compose up

Caddy (chosen here for simplicity) will handle HTTPS automatically for you, but will of course require domain names to be set up correctly to answer ACME challenges. Handling DNS is up to you; for dynamic DNS, I can recommend qmcgaw/ddns-updater.

If you self-host in the cloud, the server infrastructure might be taken care of for you by your provider already (as is the case for Google Cloud Run). In these cases, a dedicated proxy is unnecessary and a single Dockerfile might suffice (adjusted to your needs). True serverless is also a possibility and an excellent fit here. For example, one could use Digital Ocean's Functions. If you go that route and succeed, please let me know! (I had given up with how depressingly hard dependency management was, as opposed to tried-and-tested container images.)


github logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ancv-0.17.0.tar.gz (24.3 kB view details)

Uploaded Source

Built Distribution

ancv-0.17.0-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file ancv-0.17.0.tar.gz.

File metadata

  • Download URL: ancv-0.17.0.tar.gz
  • Upload date:
  • Size: 24.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for ancv-0.17.0.tar.gz
Algorithm Hash digest
SHA256 38d2aa0e431b6ba17178899053bb71101ca292524d37565ad4f63ff20fcbc160
MD5 1bcf09a6fcc18a7c29e8ff40aaad72c3
BLAKE2b-256 bc3cc6fc3e413cc08fe9bb09605f77da5f2a03bc7ddfc4fd3f50dee307cd2b8c

See more details on using hashes here.

File details

Details for the file ancv-0.17.0-py3-none-any.whl.

File metadata

  • Download URL: ancv-0.17.0-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for ancv-0.17.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e55ac4f4e9770f7ed6fc9da026737e926f7d1446b5e0039b56f05ea6c0c0573b
MD5 ad02d9a80edef3fdb8fa83b8d1423577
BLAKE2b-256 a49798ba35b57dc3b506d6a66a94913c3510522f421d02d113d2d8352f71a365

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page