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/Mine.tsx
// "Your shared resumes": the resumes shared from this device. The list and the admin keys live only in this browser.
import { useEffect, useState, type CSSProperties } from "react";
import { navigate } from "./lib/router";
import { loadMine, type Mine } from "./store";

export function YourResumes() {
  const [list, setList] = useState<Mine[]>(loadMine);
  useEffect(() => {
    const onChange = () => setList(loadMine());
    window.addEventListener("resume:mine", onChange);
    return () => window.removeEventListener("resume:mine", onChange);
  }, []);
  if (!list.length) return null;
  return (
    <section className="section-tight mine">
      <div className="wrap">
        <div className="spread">
          <h2 className="h2">Your shared resumes</h2>
          <span className="hint">Shared from this device. Open one to edit what its link shows.</span>
        </div>
        <ul className="mine-list">
          {list.map((m, i) => (
            <li key={m.id} className="enter" style={{ "--i": i } as CSSProperties}>
              <a href={`/r/${m.id}/admin#k=${m.key}`} onClick={(e) => { e.preventDefault(); navigate(`/r/${m.id}/admin`); }}>
                <span className="mine-main">
                  <strong>{m.name || "Untitled resume"}</strong>
                  {m.label && <span className="muted">{m.label}</span>}
                </span>
                <span className="mine-side muted">{new Date(m.at).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" })}</span>
              </a>
            </li>
          ))}
        </ul>
      </div>
    </section>
  );
}

Change history

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