Skip to content

Feature Request Submission System โ€‹

Welcome to the feature request submission system documentation!

๐Ÿ“š Documentation Overview โ€‹

DocumentDescriptionAudience
QUICK_START.mdQuick setup guide and usage instructionsDevelopers & Users
FEATURE_REQUEST_SYSTEM.mdComplete technical specificationDevelopers
DISCORD_BOT_SETUP.mdDiscord bot implementation guideDevelopers

๐Ÿš€ For Users โ€‹

Submitting a Request โ€‹

  1. Discord (Recommended): Use /feature or /bug slash commands in Discord
  2. In-App: Navigate to #/feedback or click "Submit Feedback" in Settings
  3. GitHub: Directly create an issue (advanced users)

Discord Commands โ€‹

  • /feature - Submit a feature request
  • /bug - Report a bug
  • /mystatus - Check status of your submissions

Submissions appear in:

  • #features - Public feature request channel
  • #bugs - Public bug report channel

How to use: Simply type / in Discord and available commands will appear in autocomplete. Commands work in any channel.

Smart Prompts: If you post a regular message in #features or #bugs, the bot will automatically suggest using the appropriate slash command with a helpful guide that auto-deletes after 30 seconds.

What to Include โ€‹

  • Title: Brief, specific summary (max 100 characters)
  • Description: Detailed explanation of what you want and why
  • Use Case: Real-world example of how you'd use it
  • Priority: How urgent is this?
  • Impact: Who would benefit from this?

๐Ÿ›  For Developers โ€‹

Quick Setup โ€‹

bash
# 1. Install dependencies
cd functions
npm install

# 2. Configure Firebase
firebase use lantern-app-dev
firebase functions:config:set \
  github.token="ghp_YOUR_TOKEN" \
  github.repo="cattreedev/lantern_app" \
  discord.webhook_url="YOUR_WEBHOOK_URL"

# 3. Deploy
firebase deploy --only functions

# 4. Test
# Visit http://localhost:5173/#/feedback

See Discord Bot Setup for Discord bot installation.

Architecture โ€‹

Discord Bot (Primary Method)

Discord User โ†’ /feature or /bug command โ†’ Discord Modal Form
         โ†“
    Bot validates & creates GitHub issue
         โ†“
    โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ†“         โ†“            โ†“
GitHub    Public       Admin
Issue     Channel      Monitor

Web Form (Alternative Method)

User โ†’ FeatureRequestForm (React) โ†’ Firebase Function
         โ†“
    GitHub Issue + Firestore Storage
         โ†“
    Admin Monitor (optional webhook)

Key Features โ€‹

โœ… Automatic GitHub Issue Creation

  • Standardized formatting
  • Auto-labeling (type, priority, environment)
  • Direct links for tracking

โœ… Duplicate Detection

  • Real-time similarity checking
  • Prevents duplicate submissions
  • Shows related existing requests

โœ… Discord Integration

  • Webhook notifications
  • Separate dev/prod channels
  • Rich embeds with metadata

โœ… Environment Awareness

  • Automatic dev vs prod detection
  • Separate Discord channels
  • Environment-specific labels

โœ… Rate Limiting

  • 5 submissions per user per 24 hours
  • Per environment (dev and prod independent)
  • Prevents spam

โœ… Security

  • Input validation and sanitization
  • Firebase Auth required
  • Anonymous submission option
  • Secrets managed via Firebase config

๐Ÿ“Š System Components โ€‹

Frontend โ€‹

  • Component: src/screens/feedback/FeatureRequestForm.jsx
  • Route: #/feedback
  • Features: Validation, character limits, duplicate warnings

Backend โ€‹

  • Functions: functions/index.js
    • createFeatureRequest - Main submission handler
    • checkDuplicates - Similarity detection
  • Firestore: featureRequests collection
  • GitHub API: Issue creation via Octokit
  • Discord: Webhook notifications

Documentation โ€‹

๐Ÿ”„ Workflow โ€‹

User Submission โ€‹

  1. User fills out form in app
  2. Client validates input
  3. Client checks for duplicates
  4. User submits request
  5. Firebase Function processes:
    • Creates GitHub issue
    • Stores in Firestore
    • Sends Discord notification
  6. User receives GitHub issue link

Team Triage โ€‹

  1. Discord notification appears in channel
  2. Team reviews GitHub issue
  3. Issue labeled: needs-triage
  4. Team adds to project board
  5. Status updates tracked in Firestore

๐Ÿšฆ Roadmap โ€‹

โœ… Phase 1: Core System (COMPLETE) โ€‹

  • [x] React form component
  • [x] Firebase Cloud Functions
  • [x] GitHub issue creation
  • [x] Discord notifications
  • [x] Duplicate detection
  • [x] Environment awareness

๐Ÿ“ Phase 2: Discord Bot (DOCUMENTED) โ€‹

  • [ ] Discord slash command
  • [ ] Modal form integration
  • [ ] Direct submission from Discord

๐Ÿ“ Phase 3: AI Refinement (DOCUMENTED) โ€‹

  • [ ] Copilot integration
  • [ ] Request improvement suggestions
  • [ ] Auto-classification

๐Ÿ“ Phase 4: Enhancements (FUTURE) โ€‹

  • [ ] Voting system
  • [ ] Comments/discussion
  • [ ] Status notifications
  • [ ] Admin dashboard

๐Ÿ”’ Security โ€‹

  • โœ… Input validation and sanitization
  • โœ… Rate limiting (5 per 24 hours)
  • โœ… Authentication required
  • โœ… Secrets in Firebase config (never committed)
  • โœ… GitHub token with minimal scope (repo only)
  • โœ… Discord webhook URLs kept secret

GitHub Repository Access โ€‹

Current Setup: Private Repository

The repository is private to protect the codebase. For internal team members:

  1. Add to GitHub Organization

    • Grant "Read" access to all employees
    • Users can view issues and code but cannot modify
    • Safe for non-technical staff - GitHub prevents editing
  2. What Users Can Do

    • โœ… View all GitHub issues
    • โœ… Browse codebase (read-only)
    • โœ… Comment on issues
    • โœ… Track their submissions
    • โŒ Cannot push code (requires Write permission)
    • โŒ Cannot merge PRs or change settings
  3. Future: Public Submissions

    • Planned enhancement to support public community feedback
    • Separate public issues repository
    • See Discord Bot README for details
    • Will maintain codebase security while enabling community engagement

๐Ÿ“ˆ Monitoring โ€‹

Metrics to Track โ€‹

  • Submissions per day/week
  • Request type distribution
  • Priority breakdown
  • Duplicate detection rate
  • Time to triage
  • Status progression

Firestore Queries โ€‹

javascript
// Submissions in last 7 days
const recent = await db.collection('featureRequests')
  .where('submittedAt', '>', sevenDaysAgo)
  .get()

// By type
const bugs = await db.collection('featureRequests')
  .where('type', '==', 'bug')
  .where('status', '==', 'submitted')
  .get()

// High priority
const urgent = await db.collection('featureRequests')
  .where('priority', '==', 'critical')
  .where('status', '!=', 'completed')
  .get()

๐Ÿ› Troubleshooting โ€‹

Common Issues โ€‹

"GitHub token not configured" โ†’ Run: firebase functions:config:set github.token="ghp_xxx"

"Function not found" โ†’ Deploy: firebase deploy --only functions

Discord notifications not appearing โ†’ Check webhook URL is set and valid

Duplicate detection not working โ†’ Verify checkDuplicates function is deployed

See QUICK_START.md for more help.

๐Ÿค Contributing โ€‹

When adding features to this system:

  1. Update relevant documentation
  2. Test in dev environment first
  3. Deploy to both dev and prod
  4. Update CHANGELOG.md
  5. Document any new config requirements

๐Ÿ“ž Support โ€‹

Built with VitePress