OOOC Fête Finder implements multiple layers of abuse protection to prevent spam, bot submissions, and malicious activity while maintaining a seamless user experience.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/KingPsychopath/oooc-fete-finder/llms.txt
Use this file to discover all available pages before exploring further.
Event submission protection
Event submissions are the most critical entry point for potential abuse. Multiple checks are performed before accepting a submission.Content fingerprinting
Each event submission generates a unique fingerprint based on core event details:Identical submissions (same fingerprint) are blocked for 24 hours
buildEventSubmissionFingerprint in features/events/submissions/store.ts:110.
Honeypot field
The event submission form includes a hidden honeypot field that should remain empty in legitimate submissions.The honeypot field is hidden via CSS and should not be visible to human users. Bots that auto-fill all form fields will typically fill this field, marking the submission as spam.
- If the
honeypotfield contains any value, the submission is flagged withhoneypot_filledspam signal - The submission is still accepted but marked for review
features/events/submissions/store.ts:146.
Completion time detection
The form tracks how long a user takes to complete the submission. Submissions completed too quickly are likely automated.Submissions completed in less than 4 seconds are flagged as suspicious
- Frontend captures
formStartedAttimestamp when the form is opened - Backend calculates elapsed time:
(now - formStartedAt) / 1000 - If elapsed time < 4 seconds, submission is flagged with
completed_too_fastspam signal
computeCompletionSeconds in features/events/submissions/store.ts:125.
Spam signal evaluation
All submissions are evaluated for spam signals before storage:- Accepted with 200 status (to avoid revealing detection)
- Stored in the database with spam flags
- Automatically flagged for manual review
evaluateSubmissionSpamSignals in features/events/submissions/store.ts:141.
Multi-factor rate limiting
Event submissions are protected by three concurrent rate limits:- IP-based limit: 20 submissions per 10 minutes per IP
- Email+IP limit: 5 submissions per hour per email/IP combination
- Fingerprint limit: 1 submission per 24 hours per unique content fingerprint
See the rate limiting page for complete rate limit details.
Authentication protection
User authentication via email is protected against brute force and enumeration attacks.Email verification rate limits
Prevents single IP from overwhelming the verification endpoint
Prevents targeted attacks against specific email addresses
app/api/auth/verify/route.ts:59.
Input validation
Email validation:- Must match email regex pattern:
/^[^\s@]+@[^\s@]+\.[^\s@]+$/ - Automatically normalized to lowercase
- Maximum 254 characters (RFC 5321 limit)
- First and last name must be at least 2 characters
- Whitespace is trimmed and normalized
app/api/auth/verify/route.ts:75.
Consent requirement
Tracking protection
Analytics tracking endpoints have generous rate limits to avoid blocking legitimate user activity:| Endpoint | IP Limit | Session Limit |
|---|---|---|
/api/track | 240/min | 200/min |
/api/track/discovery | 180/min | 150/min |
When rate limits are exceeded, tracking requests return 202 Accepted without recording the event. This prevents breaking the user experience while stopping abuse.
Data privacy in abuse detection
All abuse detection mechanisms respect user privacy:- IP addresses are HMAC-hashed before storage in rate limit counters
- Email addresses are HMAC-hashed in rate limit keys
- Raw IPs and emails are never persisted in the rate limit database
- Fingerprints are content-based (not device-based)
AUTH_SECRET as the HMAC key:
Admin controls
Event submission can be globally disabled via admin settings:- Stored in
EventSubmissionSettingsStore - When disabled, all submissions return 503 Service Unavailable
- Enables quick response to abuse waves
app/api/event-submissions/route.ts:71.
Spam submission review
Submissions flagged with spam signals are stored but require manual review:- Admin dashboard shows spam signal flags
- Submissions can be approved or rejected
- Legitimate submissions caught by spam filters can be recovered