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
β βββ TalkSubmissionForm.tsx # Form component
β βββ SubmissionSuccess.tsx # Success page component
βββ shared/
β βββ types.ts # Shared TypeScript types
βββ README.md
You'll need to set up the following environment variables for Discord integration:
DISCORD_BOT_TOKEN: Your Discord bot tokenDISCORD_GUILD_ID: Your Discord server IDDISCORD_ORGANIZERS_CHANNEL_ID: Channel ID where organizer notifications are sentDISCORD_CATEGORY_ID(optional): Category ID for organizing talk channelsDISCORD_TEST_CATEGORY_ID(optional): Category ID for organizing test channelsDISCORD_TEST_ORGANIZERS_CHANNEL_ID(optional): Channel ID for test announcements
The following environment variables are used for testing the Discord integration without affecting production channels:
ENABLE_TEST_API: Set to "true" to enable the test API endpoint (required for testing)DISCORD_TEST_CATEGORY_ID: Separate category for test channels to keep them organizedDISCORD_TEST_ORGANIZERS_CHANNEL_ID: Separate channel for test notifications to avoid spamming production organizers
Testing the Discord Integration:
curl -X POST https://rustnyc-talks.val.run/api/discord/test \ -H "Content-Type: application/json" \ -d '{"channelName": "my-test-channel", "firstMessage": "Hello from test endpoint!"}'
Parameters:
channelName(required): Name for the test channel (will be sanitized for Discord)firstMessage(required): First message to send to the channel
This will create a test channel with the specified name, send the first message, and return an invite link. If test environment variables are configured, it will also notify the test organizers channel.
Testing Discord Invite Creation Directly:
You can also test the Discord invite creation process directly using Discord's API:
curl -X POST https://discord.com/api/v10/channels/CHANNEL_ID/invites \ -H "Authorization: Bot YOUR_BOT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "max_age": 0, "max_uses": 0, "unique": true }'
Replace CHANNEL_ID with an existing channel ID and YOUR_BOT_TOKEN with your Discord bot token. This matches exactly how the bot creates invitation links internally.
- Create a Discord application at https://discord.com/developers/applications
- Create a bot and copy the token
- Invite the bot to your server with the following permissions:
- Manage Channels
- Send Messages
- Create Instant Invite
- View Channels
The system uses SQLite with the following schema:
CREATE TABLE talk_submissions_1 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
speaker_name TEXT NOT NULL,
talk_context TEXT NOT NULL,
is_on_behalf BOOLEAN NOT NULL,
discord_channel_id TEXT,
discord_invite_link TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
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)