rust-nyc-event-signin
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data β all from the browser, and deployed in milliseconds.
index.ts
https://colel--bf0d74d588e641c68cbc04803a89034b.web.val.run
A complete event check-in system for managing attendee sign-ins with secure name verification.
- Event Management: Create events with attendee lists and password protection
- Secure Check-in: Fuzzy search-based sign-in with name verification
- Analytics Dashboard: Track check-ins with date-based analytics
- CSV Import/Export: Import attendee lists and export check-in data
- Responsive UI: Clean, modern interface built with React and TailwindCSS
- Event Creation: Organizers create events with attendee lists via CSV upload
- Attendee Sign-in: Attendees use fuzzy search to find and check in with their names
- Data Tracking: System tracks all check-ins with timestamps
- Analytics: Organizers can view check-in analytics and export data
- Security: No sensitive information exposed, password-protected management
βββ backend/
β βββ index.ts # Main API server with Hono
βββ frontend/
β βββ index.html # Main HTML template
β βββ index.tsx # React app entry point
β βββ components/
β βββ App.tsx # Main app component
β βββ EventSignIn.tsx # Sign-in component with fuzzy search
β βββ EventManagement.tsx # Management dashboard
β βββ EventCreation.tsx # Event creation form
βββ shared/
β βββ types.ts # Shared TypeScript types
βββ README.md
No external API keys required for basic functionality. Optional Discord integration available for future features.
The system uses SQLite with the following schema:
-- Events table
CREATE TABLE events_N (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
password_hash TEXT NOT NULL,
location TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Attendees table
CREATE TABLE attendees_N (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER NOT NULL,
name TEXT NOT NULL,
external_id TEXT,
FOREIGN KEY (event_id) REFERENCES events_2(id)
);
-- Check-ins table
CREATE TABLE checkins_N (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER NOT NULL,
attendee_id INTEGER NOT NULL,
checked_in_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (event_id) REFERENCES events_2(id),
FOREIGN KEY (attendee_id) REFERENCES attendees_1(id)
);
POST /api/events- Create a new eventGET /api/:eventId- Get event details (password protected)POST /api/:eventId/signin- Sign in to an eventGET /api/:eventId/attendees- Get attendee list for sign-in (names only)GET /api/:eventId/analytics- Get check-in analytics (password protected)GET /api/:eventId/export- Export check-in data as CSV (password protected)
/- Home page with event creation/new- Event creation form/:eventId/signin- Event sign-in page/:eventId/manage- Event management dashboard (password protected)
- Navigate to the event creation page
- Enter event name, password, and location
- Upload a CSV file with attendee names
- System will parse the CSV and create the event
- Navigate to the event sign-in page
- Use fuzzy search to find your name
- Click to sign in
- Confirmation displayed
- Navigate to the management page
- Enter event password
- View analytics and export data
The system accepts flexible CSV formats with attendee names. Common column headers recognized:
name,Name,NAMEfull_name,Full Name,FULL_NAMEfirst_name+last_name(will be combined)given_name+family_name(will be combined)
Additional columns like id, email, etc. are preserved but not displayed to attendees.
- Backend: Hono (API framework)
- Frontend: React 18.2.0 with TypeScript
- Database: SQLite
- Styling: TailwindCSS
- Platform: Val Town (Deno runtime)