lift-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 f9f4e37d6945
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 23e397d8a5d5bf7756362640
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/main.tsx
// Lift's entry. "/" keeps the static landing and mounts the quick start into its hero. The app's
// routes (/workout, /routines/<id>, /r, /history, /exercises, /profile, /plates) hide the landing
// and show the app.
import { useEffect } from "react";
import { createRoot } from "react-dom/client";
import { useLocation } from "./lib/router";
import { Toaster } from "./ui";
import { Shell, routeOf } from "./Shell";
import { Start } from "./Start";
import "./styles.css";

const LANDING_TITLE = document.title;

function Root() {
  const { path, query } = useLocation();
  const route = routeOf(path, query);
  document.body.classList.toggle("app-mode", Boolean(route));
  useEffect(() => { if (!route) document.title = LANDING_TITLE; }, [route]);
  return (
    <>
      {route && <Shell route={route} />}
      <Toaster />
    </>
  );
}

createRoot(document.getElementById("app")!).render(<Root />);
const startSlot = document.getElementById("start");
if (startSlot) createRoot(startSlot).render(<Start />);

if (import.meta.env.PROD && "serviceWorker" in navigator) {
  window.addEventListener("load", () => void navigator.serviceWorker.register("/sw.js").catch(() => null));
}

const head = document.querySelector(".site-head");
const onScroll = () => head?.classList.toggle("scrolled", window.scrollY > 4);
window.addEventListener("scroll", onScroll, { passive: true });
onScroll();

Change history

Point OpenApps store links to openapps.free
f9f4e37d69 · 17 hours ago
Add favicon.ico, local share image and openapi.json for links and guides
2796c0063c · 17 hours ago
Bind agent address in policy constants
cf80a3ca66 · 19 hours ago
Add OpenApp contribution strip and OpenApps source links
5e4cc2b9f3 · 19 hours ago
Bounded source sync
ca4a3d3631 · 1 day ago
Bounded source sync
7351063f4d · 1 day ago
Bounded source sync
0ce3238c46 · 1 day ago