Skip to content

SetTimes Troubleshooting Guide

Common Issues and Solutions


Table of Contents

  1. Login & Authentication Issues
  2. Event Management Issues
  3. Venue Management Issues
  4. Performer Management Issues
  5. Publishing & Display Issues
  6. Performance & Loading Issues
  7. Mobile & Browser Issues
  8. API & Integration Issues
  9. Database & Data Issues
  10. Security & Session Issues

Login & Authentication Issues

"Invalid email or password"

Problem: Cannot log in to the admin panel.

Solutions:

  1. Check credentials:
  2. Email is case-sensitive
  3. Password is case-sensitive
  4. Ensure no extra spaces before/after

  5. Try password reset:

  6. Contact your administrator
  7. Request password reset link

  8. Check account status:

  9. Account may be disabled
  10. Contact administrator to verify

  11. Clear browser cache:

# Chrome/Edge: Ctrl+Shift+Delete
# Firefox: Ctrl+Shift+Delete
# Safari: Cmd+Opt+E
  1. Try incognito/private mode:
  2. Rules out browser extension conflicts
  3. Tests with fresh session

Still not working? Contact support with your email address.


"Session expired. Please log in again."

Problem: Logged out unexpectedly during work.

Cause: The admin session hit an enforced timeout. Admin sessions currently expire after 15 minutes of inactivity or after 8 hours total, whichever comes first.

Solutions:

  1. Log in again:
  2. Save any work in progress first
  3. Re-authenticate at /admin

  4. Prevent in future:

  5. Don't leave the admin panel idle for extended periods
  6. Save work frequently
  7. Use the Stay signed in prompt when it appears before idle logout

  8. If you saw this during a temporary outage:

  9. Reload and sign in again once the service is healthy
  10. Temporary 5xx failures during session verification should not normally force logout on their own

Note: Session timeout is a security feature to protect your data.


"Too many failed login attempts. Please try again later."

Problem: Account temporarily locked due to failed login attempts.

Cause: 5 failed login attempts within 10 minutes triggers 1-hour lockout.

Solutions:

  1. Wait 1 hour:
  2. Lockout automatically expires after 1 hour
  3. Timer shown in error message

  4. Contact administrator:

  5. Admin can manually reset lockout
  6. Requires database access

  7. Prevent in future:

  8. Use password manager to avoid typos
  9. Ensure Caps Lock is off
  10. Double-check email address

Administrator Reset:

-- Via wrangler CLI
wrangler d1 execute settimes-db --command="DELETE FROM auth_audit WHERE ip_address = 'XX.XX.XX.XX'"

Event Management Issues

"An event with this slug already exists"

Problem: Cannot create event with desired slug.

Cause: Event slugs must be unique across all events (published and drafts).

Solutions:

  1. Choose a different slug:
  2. spring-festspring-fest-2025
  3. vol-6vol-6-december
  4. music-crawlmusic-crawl-downtown

  5. Check existing events:

  6. Go to Events tab
  7. Search for similar slugs
  8. Delete or rename old event if no longer needed

  9. Use date suffix:

  10. Always include year: event-name-2025
  11. Include month if multiple per year: event-name-may-2025

Note: Changing slugs after publishing breaks existing links. Choose carefully!


"Cannot delete event - bands are assigned"

Problem: Event has bands assigned and cannot be deleted.

Cause: Foreign key constraint prevents orphaned band data.

Solutions:

  1. Delete all bands first:
  2. Go to Performers tab
  3. Filter by event
  4. Delete all performers
  5. Then delete event

  6. Archive instead:

  7. Edit event
  8. Uncheck "Published"
  9. Mark as archived
  10. Keeps historical data

Administrator Alternative:

-- WARNING: Deletes event and all bands (irreversible!)
DELETE FROM bands WHERE event_id = <event_id>;
DELETE FROM events WHERE id = <event_id>;

"Date must be in YYYY-MM-DD format"

Problem: Event date validation error.

Cause: Invalid date format.

Solutions:

  1. Use correct format:
  2. ✅ Correct: 2025-05-17
  3. ❌ Wrong: 05/17/2025
  4. ❌ Wrong: May 17, 2025
  5. ❌ Wrong: 17-05-2025

  6. Use date picker:

  7. Click calendar icon
  8. Select date visually
  9. Auto-formats correctly

Venue Management Issues

"A venue with this name already exists"

Problem: Cannot create venue with duplicate name.

Cause: Venue names must be unique.

Solutions:

  1. Check existing venues:
  2. Go to Venues tab
  3. Search for venue name
  4. Use existing venue instead of creating duplicate

  5. Use slightly different name:

  6. The Analog CafeAnalog Cafe
  7. Black CatBlack Cat Tavern
  8. Room 47Room 47 Downtown

  9. Edit existing venue:

  10. Update address or details
  11. Rather than creating new one

Best Practice: Keep venue names consistent across all events.


"Cannot delete venue with assigned performances"

Problem: Venue has bands assigned and cannot be deleted.

Cause: Foreign key constraint prevents orphaned band data.

Solutions:

  1. Reassign all bands:
  2. Go to Performers tab
  3. Find all bands at this venue
  4. Edit each band
  5. Change venue to different one
  6. Then delete venue

  7. Delete all bands:

  8. If bands no longer needed
  9. Delete them first
  10. Then delete venue

Warning: Deleting a venue used in multiple events affects all events!


Performer Management Issues

"The venue dropdown is empty"

Problem: Cannot add performer because no venues available.

Cause: No venues have been created yet.

Solutions:

  1. Add venues first:
  2. Go to Venues tab
  3. Click "Add Venue"
  4. Create at least one venue
  5. Return to Performers tab

Best Practice: Always create events and venues before adding performers.


"This band overlaps with X other band(s) at the same venue"

Problem: Scheduling conflict detected.

Cause: Two bands scheduled at same venue with overlapping times.

Solutions:

  1. Adjust times:
  2. Change start time to after previous band
  3. Change end time to before next band
  4. Leave 15-30 minute buffer between sets

  5. Change venue:

  6. Move band to different venue
  7. Avoids conflict entirely

  8. Accept conflict (rare):

  9. Some events intentionally overlap
  10. Multiple stages at same venue
  11. Conflicts shown in red for review

Example Conflict:

Band A: 7:00 PM - 8:00 PM (Analog Cafe)
Band B: 7:30 PM - 8:30 PM (Analog Cafe) ❌ CONFLICT

Fixed:

Band A: 7:00 PM - 8:00 PM (Analog Cafe)
Band B: 8:30 PM - 9:30 PM (Analog Cafe) ✅ NO CONFLICT

"End time must be after start time"

Problem: Invalid time range.

Cause: End time is before or equal to start time.

Solutions:

  1. Check AM/PM:
  2. 8:00 PM20:00
  3. 9:00 AM09:00

  4. Use 24-hour format:

  5. Prevents AM/PM confusion
  6. 20:00 to 21:00 (correct)
  7. 08:00 to 09:00 (correct)

  8. Ensure logical order:

  9. Start: 19:00
  10. End: 20:00
  11. Duration: 1 hour ✅

"Times must be in HH:MM format"

Problem: Time validation error.

Cause: Invalid time format.

Solutions:

  1. Use correct format:
  2. ✅ Correct: 19:00
  3. ✅ Correct: 08:30
  4. ❌ Wrong: 7:00 (missing leading zero)
  5. ❌ Wrong: 19:00:00 (too many colons)
  6. ❌ Wrong: 7pm (not numeric)

  7. Use time picker:

  8. Click clock icon
  9. Select time visually
  10. Auto-formats correctly

Publishing & Display Issues

"My event isn't showing on the public timeline"

Problem: Event not visible on settimes.ca.

Diagnostic Checklist:

  • [ ] Is the event Published (not Draft)?
  • [ ] Is the event date in the future or recent past?
  • [ ] Does the event have at least one band assigned?
  • [ ] Have you waited 1-2 minutes for cache update?

Solutions:

  1. Publish the event:
  2. Go to Events tab
  3. Click "Edit" on event
  4. Check "Published" checkbox
  5. Click "Save"

  6. Wait for cache update:

  7. Changes take 1-2 minutes to appear
  8. Cloudflare cache TTL: 5 minutes
  9. Refresh page after waiting

  10. Clear browser cache:

  11. Hard refresh: Ctrl+Shift+R (Windows) or Cmd+Shift+R (Mac)
  12. Or try private/incognito window

  13. Check event date:

  14. Very old events may not appear
  15. Check date is correct format

Still not showing? Check browser console for errors (F12).


"Band profile page returns 404"

Problem: Band profile links show "Page Not Found".

Cause: URL format incorrect or band not properly assigned to event.

Solutions:

  1. Check URL format:
  2. Correct: settimes.ca/bands/[event-slug]/[band-name-slug]
  3. Example: settimes.ca/bands/spring-fest-2025/the-sunset-trio

  4. Verify event is published:

  5. Band profiles only work for published events
  6. Publish event first

  7. Check event slug:

  8. Must match event's slug exactly
  9. Case-sensitive

  10. Check band is assigned to event:

  11. Go to Performers tab
  12. Verify band has event association
  13. Edit band if needed

  14. Wait for cache update:

  15. New bands take 1-2 minutes to appear
  16. Clear browser cache

"Changes aren't showing on public schedule"

Problem: Updates to events/bands not appearing.

Cause: Cloudflare cache or browser cache.

Solutions:

  1. Wait for cache expiration:
  2. Public API cached for 5 minutes
  3. Wait 5 minutes for changes to appear

  4. Hard refresh browser:

  5. Windows/Linux: Ctrl+Shift+R
  6. Mac: Cmd+Shift+R

  7. Clear Cloudflare cache (admin only):

  8. Cloudflare Dashboard → Caching
  9. Purge Everything
  10. Changes appear immediately

  11. Test in private window:

  12. Rules out local browser cache
  13. Verifies backend changes

Performance & Loading Issues

"Admin panel is loading slowly"

Problem: Pages take a long time to load.

Diagnostic Steps:

  1. Check network speed:
  2. Run speed test: fast.com
  3. Minimum 1 Mbps recommended

  4. Check browser console:

  5. Press F12
  6. Look for red errors
  7. Screenshot errors for support

  8. Check number of records:

  9. Large events (100+ bands) may load slowly
  10. Consider pagination (admin feature)

Solutions:

  1. Close unused tabs:
  2. Frees browser memory
  3. Improves performance

  4. Clear browser cache:

  5. Removes old cached files
  6. Forces fresh load

  7. Try different browser:

  8. Chrome (recommended)
  9. Firefox
  10. Safari
  11. Edge

  12. Disable browser extensions:

  13. Ad blockers may interfere
  14. Try incognito/private mode

"Infinite loading spinner"

Problem: Page shows loading spinner indefinitely.

Cause: JavaScript error or network issue.

Solutions:

  1. Check browser console:
  2. Press F12
  3. Look for red errors
  4. Common: "Failed to fetch" or "CORS error"

  5. Refresh page:

  6. Ctrl+R or Cmd+R
  7. Sometimes simple refresh fixes it

  8. Check internet connection:

  9. Test with other websites
  10. Verify VPN isn't blocking

  11. Try different browser:

  12. Rules out browser-specific issues

  13. Contact support:

  14. Include browser console screenshot
  15. Include browser name and version

Mobile & Browser Issues

"Buttons are hard to tap on mobile"

Problem: Buttons too small or miss-tap often.

Note: SetTimes uses 44x44px minimum touch targets (WCAG AAA compliance).

Solutions:

  1. Zoom in:
  2. Pinch to zoom on mobile
  3. Buttons become easier to tap

  4. Use landscape orientation:

  5. More screen space
  6. Larger buttons

  7. Update browser:

  8. Old browsers may not render correctly
  9. Update to latest version

Report Issue: If buttons are genuinely too small, please report with screenshot.


"Admin panel doesn't work on my phone"

Problem: Features not working on mobile device.

Diagnostic Checklist:

  • [ ] Are you using a modern browser (Chrome, Safari, Firefox)?
  • [ ] Is your browser up to date?
  • [ ] Is JavaScript enabled?
  • [ ] Do you have internet connection?

Solutions:

  1. Update browser:
  2. iOS: Update Safari via iOS update
  3. Android: Update Chrome via Play Store

  4. Try different browser:

  5. Chrome (recommended for Android)
  6. Safari (recommended for iOS)
  7. Firefox

  8. Enable JavaScript:

  9. Required for SetTimes to function
  10. Check browser settings

  11. Clear browser data:

  12. Settings → Privacy → Clear browsing data
  13. Select "Cached images and files"

"Safari won't let me log in"

Problem: Login fails on Safari (common issue).

Cause: Safari's strict cookie policies or cached data.

Solutions:

  1. Enable cross-site tracking:
  2. Settings → Safari → Privacy
  3. Uncheck "Prevent Cross-Site Tracking"
  4. Refresh page and try again

  5. Clear website data:

  6. Settings → Safari → Advanced → Website Data
  7. Find settimes.ca
  8. Swipe left and delete
  9. Refresh and try again

  10. Try private browsing:

  11. Tap tabs button
  12. Tap "Private"
  13. Navigate to settimes.ca/admin

  14. Use Chrome instead:

  15. Download Chrome for iOS
  16. Better compatibility

API & Integration Issues

"API returns 401 Unauthorized"

Problem: API requests failing with 401 status.

Cause: Missing or invalid authentication.

Solutions:

  1. Check session cookie:
  2. Ensure credentials: 'include' in fetch()
  3. Session cookie must be present

  4. Re-authenticate:

  5. Call /api/admin/auth/login first
  6. Obtain new session cookie
  7. Retry API request

  8. Check cookie domain:

  9. Cookies only work on same domain
  10. settimes.cawww.settimes.ca

Example:

// Correct
fetch('https://settimes.ca/api/admin/events', {
  credentials: 'include', // Important!
});

// Wrong
fetch('https://settimes.ca/api/admin/events');
// Missing credentials - 401 error

"API returns 403 CSRF validation failed"

Problem: POST/PUT/DELETE requests failing with 403.

Cause: Missing or invalid CSRF token.

Solutions:

  1. Include CSRF token:
// Get CSRF token from cookie
const csrfToken = document.cookie
  .split('; ')
  .find((row) => row.startsWith('csrf_token='))
  .split('=')[1];

// Include in request header
fetch(url, {
  method: 'POST',
  headers: {
    'X-CSRF-Token': csrfToken,
  },
  credentials: 'include',
});
  1. Refresh CSRF token:
  2. Call /api/admin/auth/login to get new token
  3. CSRF tokens expire with session

"API returns 429 Too Many Requests"

Problem: Rate limited.

Cause: Exceeded rate limit (100 requests/minute).

Solutions:

  1. Wait before retrying:
  2. Check X-RateLimit-Reset header
  3. Wait until reset time

  4. Implement exponential backoff:

async function fetchWithRetry(url, options, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await fetch(url, options);
    if (response.status === 429) {
      // Wait 2^i seconds before retry
      await new Promise((resolve) =>
        setTimeout(resolve, Math.pow(2, i) * 1000)
      );
      continue;
    }
    return response;
  }
}
  1. Reduce request frequency:
  2. Cache responses client-side
  3. Batch operations when possible
  4. Don't poll more than necessary

Database & Data Issues

"Database error: Failed to fetch events"

Problem: 500 Internal Server Error.

Cause: Database connection issue or query error.

Solutions (User):

  1. Refresh page:
  2. Temporary glitch may resolve

  3. Try again later:

  4. Database may be under maintenance

  5. Contact administrator:

  6. Persistent errors need admin investigation

Solutions (Administrator):

  1. Check D1 database status:
wrangler d1 info settimes-db
  1. Check error logs:
wrangler tail --status error
  1. Verify database bindings:
  2. Check wrangler.toml
  3. Ensure DATABASE binding exists

  4. Test database connection:

wrangler d1 execute settimes-db --command="SELECT 1"

"Data appears corrupted or missing"

Problem: Events/venues/bands showing incorrect data.

Cause: Database corruption or accidental deletion.

Solutions (Administrator):

  1. Restore from backup:
wrangler d1 execute settimes-db --file=backups/settimes-20251119.sql
  1. Check audit logs:
SELECT * FROM audit_logs
WHERE action LIKE '%delete%'
ORDER BY created_at DESC LIMIT 50;
  1. Verify data integrity:
-- Check for orphaned bands
SELECT b.* FROM bands b
LEFT JOIN events e ON b.event_id = e.id
WHERE e.id IS NULL;

-- Check for orphaned venues
SELECT v.* FROM venues v
LEFT JOIN bands b ON v.id = b.venue_id
WHERE b.id IS NULL AND v.created_at < datetime('now', '-30 days');

Security & Session Issues

"Suspicious activity detected"

Problem: Account flagged for unusual activity.

Cause: Multiple failed logins or unusual access patterns.

Solutions:

  1. Change password immediately:
  2. Contact administrator for password reset
  3. Use strong, unique password

  4. Review audit logs:

  5. Check recent login attempts
  6. Verify IP addresses are yours

  7. Enable 2FA (if available):

  8. Adds extra security layer

Administrator Actions:

-- View recent logins
SELECT * FROM audit_logs
WHERE action LIKE '%login%'
AND user_id = <user_id>
ORDER BY created_at DESC LIMIT 20;

-- Force logout all sessions
DELETE FROM sessions WHERE user_id = <user_id>;

"CORS error in browser console"

Problem: Cross-origin request blocked.

Cause: API called from unauthorized origin.

Solutions (Administrator):

  1. Add origin to allowed list:
  2. Edit functions/api/_middleware.js
  3. Add origin to CORS headers

  4. Check request origin:

// Allowed origins
const allowedOrigins = [
  'https://settimes.ca',
  'https://dev.settimes.ca',
  'http://localhost:5173',
];

Note: CORS is a security feature to prevent unauthorized API access.


Getting Help

Before Contacting Support

Gather this information:

  1. Error details:
  2. Exact error message
  3. Screenshot of error
  4. Browser console errors (F12)

  5. Environment:

  6. Browser name and version
  7. Operating system
  8. Device type (desktop/mobile/tablet)

  9. Steps to reproduce:

  10. What you were trying to do
  11. Steps that led to error
  12. When error first occurred

  13. Account info:

  14. Your email address
  15. User role (admin/editor/viewer)
  16. Event name (if applicable)

Contact Support

GitHub Issues: github.com/BreakableHoodie/settimesdotca/issues

Include in your report:

  • Clear description of problem
  • Steps to reproduce
  • Expected vs actual behavior
  • Screenshots or error messages
  • Browser/device information

Emergency Contacts

Critical Issues (site down, data loss, security breach):

  1. Create urgent GitHub issue with [URGENT] prefix
  2. Contact administrator directly
  3. Do not share sensitive information publicly

Appendix: Common Error Messages

Error Message Cause Solution
"CSRF validation failed" Missing CSRF token Include X-CSRF-Token header
"Session expired" Idle timeout or maximum session lifetime reached Log in again
"Validation error" Invalid input data Check field requirements
"Slug already exists" Duplicate slug Use unique slug
"Event not found" Invalid event ID Verify event exists
"Unauthorized" Not logged in Log in first
"Forbidden" Insufficient permissions Contact admin for role upgrade
"Rate limited" Too many requests Wait and retry
"Database error" Server issue Retry or contact admin

Version: 1.0 Last Updated: November 2025 For: SetTimes Platform (settimes.ca)


Still stuck? Don't hesitate to create a GitHub issue. We're here to help!