resume-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev 3f16b2375723
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 70bace54357d4b57b674108f
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
src/Paper.tsx
// The resume on screen: each page of the layout drawn as an SVG sheet, with the same fonts as the PDF.
import type { Layout } from "./layout";

const FAMILY = { sans: "Resume Sans", sansBold: "Resume Sans", serif: "Resume Serif" } as const;
const WEIGHT = { sans: 400, sansBold: 600, serif: 500 } as const;

export function Paper({ layout, label = "Resume", reflowed }: { layout: Layout; label?: string; reflowed?: boolean }) {
  const { width: W, height: H, pages } = layout;
  return (
    <div className={`sheets${reflowed ? " sheets-reflowed" : ""}`}>
      {pages.map((ops, p) => (
        <svg key={p} className="sheet" viewBox={`0 0 ${W} ${H}`} aria-label={pages.length > 1 ? `${label}, page ${p + 1} of ${pages.length}` : label}>
          <rect width={W} height={H} fill="#fff" />
          {ops.map((op, i) => op.kind === "text" ? (
            <text key={i} x={op.x} y={op.y} fontFamily={FAMILY[op.font]} fontWeight={WEIGHT[op.font]} fontSize={op.size} fill={op.color} letterSpacing={op.tracking || undefined} xmlSpace="preserve">{op.text}</text>
          ) : (
            <line key={i} x1={op.x1} x2={op.x2} y1={op.y} y2={op.y} stroke={op.color} strokeWidth={op.width} />
          ))}
        </svg>
      ))}
    </div>
  );
}

Change history

Quality pass: several resumes, cover letters, phone-readable shared pages
3f16b23757 · 5 hours ago
Bounded source sync
b7eb5b26b5 · 1 day ago
Bounded source sync
adae97536e · 1 day ago
Bounded source sync
3b0cf36b39 · 1 day ago