Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Host-led group judging with audited results: one host opens each entry, every judge scores the same thing.
BusinessJavaScript · HTMLGitHub @daviskrebsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Organized judging for loosely organized groups. Tally is a mobile web app for host-led group judging. A host opens voting on one entry at a time. Every judge's phone jumps to that entry with the same category and criteria, scores sync live, and the results count only votes that pass a server-enforced audit.
Start a preset event, join one in progress, or create your own: any judged competition with entries, categories, and things to score. The first preset is the Bellevue Holiday Lights Competition in Richmond, Virginia, where judges walk the neighborhood and score houses street by street.
The Bellevue neighborhood in Richmond, Virginia runs a yearly holiday lights competition with four categories. A panel of volunteer judges goes street by street, and every house has to be scored by the same people, in the same category, on the same scale. The first version of this app ran into three problems:
flowchart LR
subgraph Phones["Judges' phones (static site on GitHub Pages)"]
H[Host] -- "open / close / cancel an entry" --> S
J1[Judge] -- "official vote + photo" --> V
J2[Judge] -- "official vote + photo" --> V
end
subgraph Firebase["Firebase (anonymous auth + Firestore)"]
E[(events/CODE<br/>entries, categories, criteria)]
S[(sessions/CODE<br/>current entry, category, judges)]
V[(votes / photos)]
R{{Security rules}}
end
S -- "live updates" --> J1 & J2
V -- "live standings" --> H & J1 & J2
E -- "defines" --> S & V
R -. "checks every write" .- E & S & V
GIS[(City of Richmond<br/>address points)] -- "build-time import" --> A[Bellevue preset]
A --> Phones
vendor/firebase.js. GitHub Pages serves the files as they are.Address data from city GIS (scripts/build-addresses.mjs)
1313½) and letter suffixes, without mistaking street directions like the "W" in "1205 W Laburnum Ave" for suffixes.Votes the database can vouch for (firestore.rules)
official, sessionCode, and callId for each vote.Photos within Firestore's limits
npm install
npm test # starts the Firebase emulators, then runs the end-to-end suite
tests/e2e.test.mjs drives several simulated phones with Playwright against the local Firebase emulators, using the real security rules. It covers:
The emulators need Java.
npx serve ..firebase.config.js, and publish firestore.rules. With the config set to null, the app runs on a single phone and exports CSVs.npm run build:addresses. To clear test data off every phone before a real event, bump PHONE_DATA_VERSION in landing.js.templates.js. The file describes the event shape.| Path | What it is |
|---|---|
index.html | Markup and styles for the landing page and the judging app |
landing.js | Landing page: events in progress, presets, create-an-event form; loads an event |
app.js | The judging app for one event: sections, scoring, groups, standings, photos, export |
sync.js | Firestore sync: events, votes, photos, groups, host controls |
firestore.rules | Server-side permissions and vote audit |
templates.js | Preset events |
templates/bellevue/ | Bellevue's streets, boundary sides, and generated house list |
scripts/ | Address importer and Firebase SDK bundler |
tests/ | End-to-end tests and the emulator test server |
HTML, CSS, and JavaScript with no framework · Firebase Authentication and Cloud Firestore · ArcGIS REST · GitHub Pages · Playwright and Node's test runner · esbuild (SDK bundle only)
Built by @daviskrebs, with Claude Code as a pair programmer. Address data: City of Richmond, VA.