MUNify

The open, privacy‑first Model UN registration stack built for simplicity.

Design forms, manage delegates, and collaborate securely using only Google Sheets + Apps Script. No vendor lock‑in, no opaque databases — just your data.

0
+ delegates recorded
0
+ forms designed
0
hrs idea → live

Unified Flow

  1. Sign in to obtain an ID token.
  2. Run the Settings wizard: Sheet → Endpoint.
  3. Design your form & publish with form/#KEY.
  4. Invite collaborators & monitor submissions.

Everything configuration‑related lives in Settings. Lightweight. Auditable. Yours.

Why MUNify?

Own Your Data

All submissions land directly in your Google Sheet. Export, pivot, archive without proprietary lock‑in.

Rapid Provisioning

Wizard guides you through sheet selection and endpoint registration or beta auto‑provision.

Secure by Design

Short‑lived ID tokens, whitelist enforcement, invite tokens, and minimal local storage only.

Inline Form Designer

Live HTML editing with instant preview; keep or customize a clean starter template.

Invite Collaboration

24h tokens let trusted users self‑whitelist—no manual email juggling.

Auditable Simplicity

Small, readable codebase. Fork, extend, self‑host on GitHub Pages.

From zero to live in minutes

STEP 1

Sign In

Google Identity button gives you a short‑lived ID token.

STEP 2

Select Sheet

Pick existing or create a fresh spreadsheet for delegates.

STEP 3

Register Endpoint

Point to your Apps Script Web App or auto‑provision (beta).

STEP 4

Share Form

Distribute the public URL. Monitor Sheet in real time.

Lightweight client calls

Core operations are simple fetches to your Apps Script endpoint. Example append (handled internally):

// Minimal append flow (simplified)
const cfg = JSON.parse(localStorage.getItem('munify_config')||'{}');
const url = localStorage.getItem('munifyAppsScriptUrl');
const row = ['Name','Email','Year','ID'];
await fetch(url+'?mode=append&key='+cfg.key, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json', Authorization: 'Bearer '+cfg.idToken },
  body: JSON.stringify({ row })
});

FAQ

Do I need a backend server?

No — Google Apps Script acts as your minimal server. Host the static site (this repository) anywhere (GitHub Pages works).

Is any personal data stored here?

Only in your Google Sheet. Local storage keeps temporary config (sheet id, key, token) in your own browser.

How do invite tokens work?

Owner creates a 24h token → collaborator redeems while signed in → server adds them to whitelist.

Can I customize the form markup?

Yes. The Designer lets you edit raw HTML, add fields, and reset to a starter template at any time.

Ready to launch your next conference?

Spin up a registration flow in minutes and keep complete control over your data pipeline.

Open Settings Wizard