polls-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 c06cea4889e9
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 334801de44cb0fe911d5a88b
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
// Polls' entry. "/" keeps the static landing and mounts the join and create boxes and "Your events" into it.
// "/<code>" looks up a 6-digit code; "/e/<id>" is the audience view; "/e/<id>/admin" and "/e/<id>/present" are the host's.
import { createRoot } from "react-dom/client";
import { usePath } from "./lib/router";
import { Toaster } from "./ui";
import { CodeJoin, EventPage, type View } from "./Event";
import { Start, YourEvents } from "./Start";
import "./styles.css";

const LANDING_TITLE = document.title;

function App() {
  const path = usePath();
  const code = path.match(/^\/([1-9]\d{5})\/?$/);
  const event = path.match(/^\/e\/([A-Za-z0-9]{20})(?:\/(admin|present))?\/?$/);
  document.body.classList.toggle("app-mode", Boolean(code || event));
  document.body.classList.toggle("present-mode", event?.[2] === "present");
  if (!code && !event) document.title = LANDING_TITLE;
  return (
    <>
      {code ? <CodeJoin code={code[1]} key={code[1]} /> : event ? <EventPage eventId={event[1]} view={(event[2] as View) || "audience"} key={path} /> : null}
      <Toaster />
    </>
  );
}

createRoot(document.getElementById("app")!).render(<App />);
const startSlot = document.getElementById("start");
if (startSlot) createRoot(startSlot).render(<Start />);
const mineSlot = document.getElementById("your-events");
if (mineSlot) createRoot(mineSlot).render(<YourEvents />);

Change history

Point OpenApps links to openapps.free
c06cea4889 · 17 hours ago
Bind agent address in policy constants
a7de116d52 · 19 hours ago
Use OpenApps service URLs and add contribution strip
e8ce0b0bf0 · 19 hours ago
Bounded source sync
dcdc4d56e6 · 1 day ago
Bounded source sync
7acdace1e1 · 1 day ago
Bounded source sync
2140a66ea0 · 1 day ago
Bounded source sync
0db2fe3ca0 · 1 day ago
Bounded source sync
996f633a3c · 1 day ago