FeaturesTemplatesShowcaseTownie
AI
BlogDocsPricing
Log inSign up
project logo
colelrust-nyc-talk-submissions
Public
Like
rust-nyc-talk-submissions
Home
Code
5
backend
1
frontend
3
shared
1
README.md
main.tsx
Branches
1
Pull requests
Remixes
1
History
Environment variables
7
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.
Sign up now
Code
/
README.md
Code
/
README.md
Search
6/24/2025
Viewing readonly version of main branch: v11
View latest version
README.md

Talk Submission System

A complete talk submission system with Discord integration for event organizers.

Features

  • Talk Submission Form: Collects speaker name, talk context, and submission type
  • Discord Integration: Automatically creates channels and sends notifications
  • Database Storage: Tracks all submissions with SQLite
  • Responsive UI: Clean, modern interface built with React and TailwindCSS

How It Works

  1. Form Submission: Users fill out the talk submission form
  2. Database Storage: Submission is saved to SQLite database
  3. Discord Channel Creation: A dedicated channel is created for the talk discussion
  4. Organizer Notification: A message is posted to the organizers' channel
  5. Invite Link: User receives a Discord invite link to join the discussion

Project Structure

├── 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

Setup

Environment Variables

You'll need to set up the following environment variables for Discord integration:

  • DISCORD_BOT_TOKEN: Your Discord bot token
  • DISCORD_GUILD_ID: Your Discord server ID
  • DISCORD_ORGANIZERS_CHANNEL_ID: Channel ID where organizer notifications are sent
  • DISCORD_CATEGORY_ID (optional): Category ID for organizing talk channels

Discord Bot Setup

  1. Create a Discord application at https://discord.com/developers/applications
  2. Create a bot and copy the token
  3. Invite the bot to your server with the following permissions:
    • Manage Channels
    • Send Messages
    • Create Instant Invite
    • View Channels

Database

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 );

API Endpoints

  • POST /api/submissions - Submit a new talk proposal
  • GET /api/submissions - Get all submissions (admin)

Discord Integration Status

⚠️ Discord integration is currently using placeholder implementations

The following functions need to be implemented with actual Discord API calls:

  • createDiscordChannel() - Create a new channel for the talk
  • createDiscordInvite() - Generate an invite link for the channel
  • postToOrganizersChannel() - Post notification to organizers

Once you provide the Discord bot credentials, these will be fully implemented.

Usage

  1. Fill out the talk submission form
  2. Submit the form
  3. Receive a Discord invite link
  4. Join the Discord channel to discuss your talk with organizers

Tech Stack

  • Backend: Hono (API framework)
  • Frontend: React 18.2.0 with TypeScript
  • Database: SQLite
  • Styling: TailwindCSS
  • Platform: Val Town (Deno runtime)
Go to top
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Product
FeaturesVersion controlCLIAI agentsCode intelligenceSlack integrationsGTMPricing
Developers
DocsStatusAPI ExamplesNPM Package Examples
Explore
ShowcaseTemplatesNewest ValsTrending ValsNewsletter
Company
AboutBlogCareersBrandhi@val.town
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.