Skip to content

Rendering content

10x Resume candidates can use just ↗︎ commands as described below to create rendered html, pdf and zip files from their content.

Rendering content

The 10x Resume .justfile provides a render command which will generate the 10x Resume content.

Steps

  1. To generate the 10x Resume content, run the following command from the git workspace
    (e.g. ~/10xresume/dev)

    Terminal window
    just render
    Sample output
    % just render
    pnpm install --reporter=append-only
    Scope: all 24 workspace projects
    Lockfile is up to date, resolution step is skipped
    Already up to date
    Done in 1.6s
    [ ! -e .env ] && cp .env.local .env
    [ ! -e 00000000.enc ] && just dev-reg
    pnpm run render
    > 10xresume@ render /Users/demo/10xresume/dev
    > dotenvx run -- turbo render --log-order=grouped --force
    [dotenvx@1.19.2] injecting env (18) from .env
    turbo 2.3.3
    • Packages in scope: @repo/Access, @repo/Access-browser,
    @repo/Access-node, @repo/App, @repo/Assets, @repo/Cache, @repo/Cli,
    ...
    @repo/tsconfig
    • Running render in 23 packages
    • Remote caching disabled
    @repo/Details-render:render: cache bypass, force executing 3a1d1beb35baf32c
    @repo/Details-render:render:
    @repo/Details-render:render: > @repo/Details-render@ render /Users/demo/10xresume/dev/Packages/Details-render
    @repo/Details-render:render: > dotenvx run -f ../../.env -- node dist/Render.cjs
    @repo/Details-render:render:
    @repo/Details-render:render: [dotenvx@1.19.2] injecting env (18) from ../../.env
    @repo/Details-render:render: Wrote ../../Job/Pdf/Src/_includes/details.html
    @repo/Details-render:render: Wrote ../../Job/Pdf/Src/_includes/details.css
    @repo/Portfolio:render: cache bypass, force executing 64dee2165fe438bf
    @repo/Portfolio:render:
    @repo/Portfolio:render: > @repo/Portfolio@ render /Users/demo/10xresume/dev/Job/Portfolio
    @repo/Portfolio:render: > ./render.sh
    @repo/Portfolio:render:
    @repo/Portfolio:render: > @repo/Portfolio@ render-files /Users/demo/10xresume/dev/Job/Portfolio
    @repo/Portfolio:render: > dotenvx run -f ../../.env -- tsx node_modules/@11ty/eleventy/cmd.cjs --config=.eleventy.ts
    @repo/Portfolio:render:
    @repo/Portfolio:render: [dotenvx@1.19.2] injecting env (18) from ../../.env
    @repo/Portfolio:render: [11ty] Writing ./build/10x/_items.json from ./Src/10x/_items.md (liquid)
    @repo/Portfolio:render: [11ty] Writing ./build/10x/hello.1.md from ./Src/10x/hello.1.md (liquid)
    @repo/Portfolio:render: [11ty] Writing ./build/10x/analysis.1/index.html from ./Src/10x/analysis.1.md (liquid)
    ...
    @repo/Portfolio:render: [11ty] Writing ./build/10x/writing.1/index.html from ./Src/10x/writing.1.md (liquid)
    @repo/Portfolio:render: [11ty] Copied 60 Wrote 17 files in 0.35 seconds (v3.0.0)
    @repo/Portfolio:render: created icons.1.zip
    @repo/Portfolio:render: created background.1.zip
    @repo/Portfolio:render: created position.1.zip
    @repo/Portfolio:render: created code.1.zip
    @repo/Portfolio:render: created analysis.1.zip
    @repo/Portfolio:render: created writing.1.zip
    @repo/Pdf:render: cache bypass, force executing bc48487e9c4cec56
    @repo/Pdf:render:
    @repo/Pdf:render: > @repo/Pdf@ render /Users/demo/10xresume/dev/Job/Pdf
    @repo/Pdf:render: > ./render.sh
    @repo/Pdf:render:
    @repo/Pdf:render: + wait 83439
    @repo/Pdf:render: Bottle v0.12.25 server starting up (using WSGIRefServer())...
    @repo/Pdf:render: Listening on http://localhost:8080/
    @repo/Pdf:render: Hit Ctrl-C to quit.
    @repo/Pdf:render:
    @repo/Pdf:render: > @repo/Pdf@ render-pdf /Users/demo/10xresume/dev/Job/Pdf
    @repo/Pdf:render: > ./wait.sh && tsx node_modules/@11ty/eleventy/cmd.cjs --config=.eleventy.ts
    @repo/Pdf:render:
    @repo/Pdf:render: + '[' '!' -e Src/_includes/details.css ']'
    @repo/Pdf:render: [11ty] Writing ./build/index.html from ./Src/index.njk
    @repo/Pdf:render: [11ty] Copied 17 Wrote 1 file in 0.23 seconds (v3.0.0)
    @repo/Pdf:render: 127.0.0.1 - - [15/Jan/2025 10:35:09] "GET / HTTP/1.1" 200 5580
    @repo/Pdf:render: 127.0.0.1 - - [15/Jan/2025 10:35:09] "GET /assets/Outfit.css HTTP/1.1" 200 435
    @repo/Pdf:render: 127.0.0.1 - - [15/Jan/2025 10:35:09] "GET /assets/Poppins.css HTTP/1.1" 200 387
    @repo/Pdf:render: 127.0.0.1 - - [15/Jan/2025 10:35:09] "GET /assets/Resume.css HTTP/1.1" 200 14425
    @repo/Pdf:render: 127.0.0.1 - - [15/Jan/2025 10:35:09] "GET /assets/Poppins-Regular.woff2 HTTP/1.1" 200 52456
    @repo/Pdf:render: 127.0.0.1 - - [15/Jan/2025 10:35:09] "GET /assets/Outfit-Light.woff2 HTTP/1.1" 200 22504
    @repo/Pdf:render: Prince ok
    @repo/Pdf:render: + rm -f build.pid
    @repo/Pdf:render: + kill 83439
    @repo/Pdf:render: ./build.sh: line 40: kill: (83439) - No such process
    @repo/Pdf:render: build.pdf
    Tasks: 3 successful, 3 total
    Cached: 0 cached, 3 total
    Time: 5.245s

Post-render check

  • Directorydev
    • DirectoryJob
      • DirectoryPdf
        • Directorybuild/
        • build.pdf
      • DirectoryPortfolio
        • Directorybuild/

The rendering step uses 11ty ↗︎ to generate the following directories

  • Job/Pdf/build for the pdf
  • Job/Portfolio/build for the portfolio content

It also uses Prince ↗︎ and Bottle ↗︎ to generate the file

  • Job/Pdf/build.pdf

containing the candidate’s summary pdf.

The 10x Resume .justfile provides a post-render command which performs a cursory check that these were created. As a convenience for OSX users, it also provides an open-pdf command to open the generated pdf in a browser.

Steps

  1. To perform the post-render check, run the command

    Terminal window
    just post-render

    No output will be shown if expected results are present. An error will appear if an expected result is not found.

    Note that the post-render check is automatically done at the end of every rendering process. Candidates are advised to run it explictly when getting started so that they may know to use it later on if they need to debug a problem with their changes.

  1. To review the generated Job/Pdf/build.pdf file, open it with your browser.

Examine the registration file

  • Directorydev
    • 00000000.enc

The render command also creates a default 00000000.enc registration file if one is not present.

This file contains an AES-GCM encrypted json object with the Userbase AppID and Userbase database share token the 10x Resume single-page application needs to retrieve the content of an enquiry from Userbase.

When developing content locally without Userbase this file contains dummy values.

Candidates use the 10x Resume CLI to provide proper values for an actual enquiry.

Steps

  1. Run the following command to decrypt and view the 00000000.enc file

    Terminal window
    just enc
    Sample output
    % just enc
    dotenvx run -- ./Apps/Cli/dist/10x test-read-enc
    [dotenvx@1.19.2] injecting env (18) from .env
    Access [ 'importKey', '7cCwTvv93tpJhnU44MwMuA' ] +0ms
    Access [ 'readCodeFile', '00000000.enc' ] +4ms
    Access [
    Access 'decrypt',
    Access CryptoKey {
    Access type: 'secret',
    Access extractable: false,
    Access algorithm: { name: 'AES-GCM', length: 128 },
    Access usages: [ 'decrypt' ]
    Access },
    Access <Buffer bb 91 c7 d9 0c b7 ... more bytes>
    Access ] +2ms
    ...
    Access 'result',
    Access {
    Access appId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
    Access token: 'notreallyrandombutthisisonlyatestxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    Access }
    Access ] +4ms
    verified