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_1 (
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_1 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
event_id INTEGER NOT NULL,
name TEXT NOT NULL,
external_id TEXT,
FOREIGN KEY (event_id) REFERENCES events_1(id)
);
-- Check-ins table
CREATE TABLE checkins_1 (
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_1(id),
FOREIGN KEY (attendee_id) REFERENCES attendees_1(id)
);
POST /api/submissions- Submit a new talk proposalGET /api/submissions- Get all submissions (admin)POST /api/discord/test- Test Discord integration (creates test channel and sends message)
β Discord integration is fully implemented with comprehensive logging
The system will automatically:
- Create Discord channels for each talk submission
- Generate invite links for the channels
- Post notifications to the organizers channel
Comprehensive Logging: The system includes detailed logging throughout the Discord integration process:
- π Environment variable checks on startup
- π― API request tracking with submission details
- π§ Discord channel creation with API responses
- π Invite link generation with full details
- π’ Organizer notifications with message content
- π₯ Detailed error logging with stack traces and specific Discord error codes
- π Final result summaries
Fallback behavior: If Discord credentials are not provided, the system will use placeholder values and log what would have been done, allowing the form to still function for testing.
Debugging: Use the requests tool to view detailed logs of each submission, including all Discord API interactions and any errors that occur.
- Fill out the talk submission form
- Submit the form
- Receive a Discord invite link
- Join the Discord channel to discuss your talk with organizers
- Backend: Hono (API framework)
- Frontend: React 18.2.0 with TypeScript
- Database: SQLite
- Styling: TailwindCSS
- Platform: Val Town (Deno runtime)