AutoVotesPro

Admin Panel Guide — SuperAdmins & ShowAdmins

Quick Navigation

1. Admin Roles 2. Logging In 3. Managing Shows 4. Show Types 5. Managing Users 6. Managing Cars 7. Managing Classes 8. Vote Management & Tally 9. Show Configuration 10. Printing Cards 11. CSV & XLSX Imports 12. Site Admin 13. Sponsors 14. Social Media 15. Paper Voting Ballots 16. Dash Cards 17. Judging 18. Show Statistics 19. Publish Winners 20. Email Reports 21. Global Dashboard 22. Cleanse Show 23. Revenue Balance Sheet 24. Custom Awards 25. Photo Gallery & Car Details 26. Bulk SMS 27. Automated Backups 28. Admin as Attendee 29. Multi-Language Support 30. Door Prizes 31. Photo & Comment Management 32. Merchandise Store 33. Photo Likes & Best Photo 34. Scan Car QR 35. Judge Scoring (App) 36. Attendee & Car Count Marquee 37. Pre-Registration Flow 38. Spectator Mode 39. Paper Ballot Entry 40. Door Prize TV Display 41. User Management Features 42. Troubleshooting

1. Admin Roles

SuperAdmin

Full access to everything. Can create, edit, delete, and activate shows. Can manage all users including other SuperAdmins and ShowAdmins. Can toggle shows open/closed. Can configure site-wide settings like contact email.

ShowAdmin

Scoped to assigned shows. Can edit their assigned shows, manage users and cars within those shows, view vote tallies, and print cards. Cannot create or delete shows. Cannot see SuperAdmin accounts. Can only see shows that are open (not closed).

Judge

Scores cars using judging criteria. When judging is enabled, Judges see a scoring interface where they rate each car on defined criteria (Exterior, Interior, Engine, etc.). Judges don't vote — they provide professional scores. Can be assigned to specific shows. Supports Traditional, Freestyle, and Concours scoring formats.

FeatureSuperAdminShowAdmin
Create / Delete shows
Activate shows
Close / Open shows
Edit show details✅ (assigned only)
Manage users✅ (all)✅ (Attendees & Judges)
Reset user passwords✅ (all)✅ (Attendees & Judges)
Add users✅ (all roles)✅ (Attendees & Judges)
See SuperAdmin accounts
Manage cars✅ (show cars only)
Manage classes✅ (show classes only)
View vote tally
View judging results
Manage judging criteria
Print cards
Show configuration
Switch between shows✅ (all shows)✅ (assigned shows)
Site settings (contact email)

2. Logging In

1
Open the Admin Panel

Navigate to your server URL followed by /admin (e.g. https://autovotespro.org/admin)

2
Enter your credentials

Use your admin email and password. Default SuperAdmin: admin@autovotespro.com / Admin123!

Important: Admin accounts can only log in to the admin panel (/admin). They are blocked from the attendee app. Attendee accounts are blocked from the admin panel.

3. Managing Shows

The Shows tab displays all car shows. SuperAdmins see all shows; ShowAdmins see only their assigned open shows.

Creating a Show (SuperAdmin only)

1
Click "+ New Show"

Fill in the show name, description, show date, timezone, and vote start/end times.

2
Select Show Type

Choose Classic, Top, or Unique. This cannot be changed after creation.

3
For Top shows, set the vote limit

Enter how many total votes each attendee gets (e.g. 10 for a "Top 10" show).

Activating a Show

Click Activate on a show card to make it the active show. Only one show can be active at a time. The active show is what admins see by default.

Closing / Opening a Show

SuperAdmins can toggle a show between open and closed in the Config tab. Closed shows are hidden from ShowAdmins and attendees.

Editing a Show

Click Edit Show on the show bar or show card. You can change the name, description, dates, timezone, vote window, and open/close dates. The show type cannot be changed.

Open & Close Dates

Set when attendees can access the show. Before the open date, attendees see "Opens on [date]". After the close date, they see "Closed on [date]". Admins can always access the show regardless of these dates.

Deleting a Show (SuperAdmin only)

Warning: Deleting a show removes all associated cars, votes, classes, and show-user links. Users who are only in this show will also be deleted. Users in multiple shows will be unlinked but kept. This cannot be undone.

4. Show Types

Classic

Traditional car show format. Each car is assigned to one class. Attendees vote once per class, picking their favorite car in each. Tally shows winners per class.

Setup: Create classes, assign cars to classes, set vote window.

Top

People's choice format. No class restrictions. Each attendee gets a limited number of total votes (configurable). Tally shows overall ranking by total votes.

Setup: Set the vote limit in Config tab. Classes are optional (not used for voting). Cars don't need a class.

Unique

Every car appears in every class. Attendees vote once per class for any car. Useful for awards like "Best Paint", "Best Engine", "Best Interior" where any car can win any category.

Setup: Create classes (award categories). Cars don't need class assignments — they automatically appear in all classes.

People's Choice

No login required. Spectators scan a QR code on each car's dash card and their vote is cast instantly — one vote per person, per show. No app account needed. Great for public events where spectators walk through and pick their favorite car.

How it works: Each car's dash card QR code links to a mobile-friendly voting page. The spectator sees the car info, taps "Vote for this Car", and they're done. An anonymous token prevents double voting.

Setup: Add cars, print dash cards. No classes needed. Tally shows overall ranking by total votes.

Remember: Show type is set at creation and locked forever. Plan your show type before creating it.

5. Managing Users

The Users tab shows all users for the active show.

Adding a User

Click "+ Add User". Fill in name, email, and role. For Attendees, set the number of cars (placeholder cars are created automatically). Default password is changeme123.

Re-adding users: If a user's email already exists (e.g. from a deleted show), they will be re-linked to the current show automatically with new placeholder cars. No duplicate accounts are created.

Editing a User

Click the edit button on a user row. You can change their name, email, and role.

Pending Pre-Registration Approvals

When pre-registration is enabled, attendees who self-register appear in an amber banner at the top of the Users tab:

Tip: Pre-registered attendees are forced to complete their profile on first login, so their name and contact info will be up to date.

Resetting a User's Password

Click the purple "Reset PW" button on any user row. You'll be prompted to enter a new password (or leave blank for the default "changeme123"). The user will be forced to change their password on next login.

Tip: ShowAdmins can only reset passwords for Attendees. SuperAdmins can reset any user's password.

Password Reset via Email

Attendees can also reset their own password from the app:

The reset email is sent from noreply@autovotespro.org. If attendees report not receiving the email, remind them to check their spam/junk folder.

Toggling Active/Inactive

Click the toggle button to enable/disable a user. Inactive users cannot log in.

Assigning ShowAdmins to Shows

When creating a ShowAdmin, they are automatically linked to the current active show. To give them access to additional shows, add them as a show user via the Users tab while that show is active.

6. Managing Cars

The Cars tab shows all cars for the active show.

Cars are Auto-Created

When you add an attendee with a car count, placeholder cars (make: TBD, model: TBD) are created. Attendees fill in the details themselves via the app.

Editing Cars

Click edit on any car to change make, model, year, color, class, or upload a photo.

Class Assignment

Bulk Photo Upload

Upload a ZIP file containing car photos named by car number (e.g. 1.jpg, 2.png, 3.jpeg). Photos are matched to cars automatically.

Default Class Images

Cars without photos display a default image based on their class. 70 SVG class images are included covering common car types.

7. Managing Classes

The Classes tab shows all classes for the active show.

Adding Classes

Click "+ Add Class" and enter a class number, name, and optional description. Class numbers determine the display order.

Importing Classes

Import classes from a CSV file. The CSV must have a name column. Optional columns: description, class_number. If class_number is not provided, they are numbered automatically.

When Classes Are Needed

8. Vote Management & Tally

The Tally tab shows vote results for the active show.

Vote Window

Set vote start and end times in the show edit dialog. Voting is only allowed between these times. If no times are set, voting is always open.

Allow Self-Vote

Toggle in the Config tab. When disabled (default), attendees cannot vote for their own cars.

Tally Display by Show Type

TypeTally Format
ClassicGrouped by class. Cars ranked by votes within each class. Top car per class wins.
TopOverall ranking. All cars ranked by total votes. Selectable Top N (5, 10, 20, 50).
UniqueGrouped by class (award category). All cars ranked in each class.

Top Vote Limit

For Top shows, the vote limit can be changed in the Config tab at any time. This controls how many cars each attendee can vote for.

9. Show Configuration

The Config tab provides show-specific settings.

📍 Venue / Location

Set the show's venue — displayed on the public show details page with an embedded Google Maps widget.

Images

Colors

Set primary, secondary, and accent colors for branding. Used on cards and show materials.

Settings

Pre-Registration

Enable the "Enable Pre-Registration" checkbox to allow attendees to register themselves via a QR code or link.

Payment Configuration

In the Config tab under 💳 Payment Configuration, choose one of three options per show:

🆓 Free (Manual Approval)

💳 Stripe (Credit/Debit Cards)

🅿️ PayPal

Tip: You can change the payment type at any time. Existing registrations are not affected — only new registrations will use the new payment method. The registration page automatically shows the correct payment option based on your configuration.
Important: Keep your Stripe Secret Key and PayPal credentials secure. Never share them publicly. If compromised, rotate your keys immediately from the provider's dashboard.

Marquee / Announcements

The marquee shows scrolling messages on the attendee's dashboard. Each type can be toggled independently:

Messages cycle one at a time with dot indicators. They auto-refresh every 60 seconds on the attendee's screen.

10. Printing Cards

The Plaques tab generates printable plaques for each car.

What's on a Plaque

Printing

Click "Preview Plaques" to see them, then "Print All" or print individual plaques. Use your browser's print dialog to print on card stock.

Print Winners

After voting ends, use the Tally tab to see winners, then print winner cards or certificates.

Blank Dash Cards

In the Config tab, you can print blank cards for walk-up registrations at the show:

11. CSV & XLSX Imports

Importing Users (CSV/XLSX)

Required columns: name, email

Optional columns: role (default: Attendee), car_count (default: 1), password

A preview shows how many users will be imported before you confirm.

Tip: Users whose email already exists will be re-linked to the current show with new placeholder cars. They won't be duplicated.

Importing Classes (CSV/XLSX)

Required columns: name

Optional columns: description, class_number

File Format Tips

12. Site Admin (SuperAdmin Only)

The ⚙️ Site Admin tab is only visible to SuperAdmins and contains platform-wide settings.

🎨 App Theme

Choose a color theme that applies to both the admin panel and the attendee app.

What's Themed

Admin Panel: Top bar, active tabs, buttons all respond to theme colors.

Attendee App — all screens themed:

Tip: The attendee app reloads the theme each time the dashboard loads. After changing the theme, attendees will see the new colors next time they navigate to their dashboard.

📧 Contact Email

Set a site-wide support email displayed to attendees.

🔒 Show Status

Open or close the current show. Closed shows are only visible to SuperAdmins.

🏪 Show Purchase

Configure show purchase on the landing page — enable/disable, pricing (single show and multi-pack), payment method (Stripe or PayPal), and API keys.

🎠 Landing Page Marquee

The landing page (autovotespro.org) displays a scrolling marquee of all non-closed shows. Each poster is clickable and opens a Show Details page.

📄 Show Details Page

When a visitor clicks a show poster on the landing page, they see a full details page with:

Tip: Fill in the venue lat/lng in Config → 📍 Venue / Location to enable the map. All other fields are optional — only populated fields display.

At the top of the Config tab, SuperAdmins see a "Site Settings" section.

Contact Email

Set the support email displayed at the bottom of every attendee's dashboard. Attendees can tap it to send an email directly. Update this to the show organizer's email.

13. Sponsors

The Sponsors tab lets you showcase show sponsors to attendees.

Adding a Sponsor

Click "+ Add Sponsor" and fill in:

  • Name — sponsor company name
  • Description — brief description of the sponsor
  • Logo — upload an image file or paste a URL
  • Website URL — sponsor's website
  • Social Media — Facebook, Instagram, Twitter/X, YouTube, TikTok links
  • Tier — 💎 Platinum, 🥇 Gold, 🥈 Silver, or 🥉 Bronze (controls display size and order)
  • Sort Order — controls position within the same tier

Managing Sponsors

  • Edit — update any sponsor details
  • Hide/Show — toggle visibility without deleting
  • Delete — permanently remove a sponsor

Attendees see sponsors on their 🏅 Sponsors screen, grouped by tier with logos, descriptions, and tappable social media icons.

14. Social Media & Website

In the Config tab, the 🌐 Social Media & Website section lets you add your show's social links:

  • 🌐 Website, 📘 Facebook, 📸 Instagram, 🐦 Twitter/X, ▶️ YouTube, 🎵 TikTok
  • Only fill in the ones you use — empty fields are hidden from attendees
  • Links appear at the bottom of the attendee dashboard and the Sponsors page
  • Click the ✕ button to remove a link

15. Paper Voting Ballots

For attendees who can't vote on their phone, print paper ballots from the Cards tab.

  • Each ballot is one full 8.5×11 page (portrait), no browser headers/footers
  • Enter the number of ballots needed and click "Print Paper Ballots"
  • Ballots auto-format based on show type (Classic, Top, Unique)
  • Vote boxes: Each row has a thick navy blue bordered box for writing the car number — clear and easy to fill in
  • Two-column layout: When there are more than 12 classes or ranks, the ballot automatically splits into two side-by-side columns to fit on one page
  • Includes show name, date, voter name line, and "return to registration table" footer

Classic/Unique: Lists all class names with a blank space to write a car number vote per class.

Top: Shows numbered lines (e.g. 1-10) for the attendee to write their top car picks.

Each ballot includes the show name/logo, voter name field, car number field, voting instructions, and a ballot number. Designed to fit on one page.

16. Dash Cards

Dash cards print in landscape orientation on 8.5×11 pages with no browser headers/footers. Each card fills one full page.

Regular Dash Cards

  • Show header image at top with show name in bold navy uppercase
  • Car number (64px bold blue), year/make/model, color, owner, class badge
  • "VOTE FOR ME!" in bold red above the QR code
  • Voting instructions below QR code
  • Modifications in italic below class

Blank Dash Cards

Blank cards have fill-in lines for manual entry. Two toggles control the layout:

  • ☐ Remove car number: Shows just "#" instead of a specific number. Hides the QR code.
  • ☐ Include QR code: Only appears when "Remove car number" is checked. Adds a placeholder QR code back.
  • Fill-in lines: Owner, Year/Make, Model, Class, and two rows for Modifications
  • Lines extend to maximum width (up to the QR code area if present)
  • Car number, make/model, year, color, owner name, class, and QR code
  • Show logo/card image at the top (if configured)
  • 17. Judging

    AutoVotesPro supports professional judging with scored criteria, separate from the attendee voting system.

    Enabling Judging

    In the Config tab, find the 🏛️ Judging Configuration section:

    • Check Enable Judging to activate the judging system
    • Choose a Judging Format (see below)
    • Judging works alongside regular attendee voting — both can run simultaneously

    Judging Formats

    📋 Traditional Judging — The most common format.

    • Each judge scores ALL criteria for each car
    • If multiple judges score the same car, their scores are averaged
    • Best for shows with 1-3 judges who each evaluate the whole car

    🤝 Freestyle Judging — Great for team judging.

    • Judges can skip criteria they're not responsible for
    • One judge scores Exterior, another scores Interior, another scores Engine
    • Scores are aggregated (summed) across judges
    • Best for shows with specialized judge teams

    🏆 Concours Judging — Point deduction method.

    • Each car starts with a perfect score (default 100, configurable)
    • Judges enter deductions for defects found in each criteria area
    • Final score = Perfect Score minus total deductions
    • If multiple judges score the same car, deductions are averaged
    • Best for concours d'elegance and high-end shows

    Managing Criteria

    Go to the Judging tab to manage judging criteria:

    • Click "+ Add Criteria" to create criteria (e.g. Exterior, Interior, Engine, Paint/Body, Wheels/Tires, Undercarriage)
    • Set Max Points per criteria (default 10)
    • Set Sort Order to control the display sequence
    • Edit or delete criteria at any time (deleting removes all scores for that criteria)

    Adding Judges

    In the Users tab, add users with the Judge role:

    • Click "Add User" and select "Judge" as the role
    • Judges log in to the app and see a judging interface instead of voting
    • Judges can score cars from their phone or tablet
    • You can have as many judges as needed

    Viewing Results

    The Judging tab shows live results:

    • Cars ranked by total score (highest first)
    • Each criteria score shown per car
    • Number of judges who scored each car
    • Click "Print Results" for a printable results sheet
    Tip: Judging and attendee voting are independent systems. You can use one or both. The Vote Tally shows attendee votes; the Judging tab shows judge scores.

    18. Show Statistics

    The Stats tab shows detailed analytics for the current show.

    • SVG gauges: Voting Rate, Avg Votes/Car, Avg Votes/Voter, Cars with Votes
    • Key metrics: Attendees, Cars, Classes, Total Votes, Voters, Zero-vote Cars, Judges, Sponsors
    • Most/Least voted car with vote count
    • User breakdown by role
    • Votes by class — horizontal bar chart
    • Voting activity — timeline bar chart by hour
    • Print Stats button for a printable version

    19. Publish Winners

    In the Config tab, the 🏆 Publish Winners toggle controls whether attendees can see results.

    • Off (default): Winners are hidden — the "View Winners" button doesn't appear in the app
    • On: A gold "🏆 View Winners" button appears on the attendee dashboard
    • Winners show medals (🥇🥈🥉), car details, owner name, vote count, and car photo
    • Classic/Unique: Best in Class format. Top/People's Choice: overall ranking
    Tip: Enable this at the awards ceremony for a live reveal!

    20. Email Reports

    On both the Tally and Stats tabs, click 📧 Email Report to send a formatted HTML email to your own email address containing:

    • SVG gauge arcs for key metrics
    • Summary stats row
    • Full vote tally table with medals, class groupings, and vote counts
    • Styled with show branding

    21. Global Dashboard (SuperAdmin Only)

    The 📊 Dashboard tab shows platform-wide statistics across ALL shows.

    • Total shows (active/closed), users, cars, votes, sponsors
    • Users by role breakdown
    • Per-show comparison table with all key metrics
    • Recent votes and signups across all shows
    • Printable version

    22. Cleanse Show (SuperAdmin Only)

    Found in the Config tab, the 🧹 Cleanse section provides irreversible maintenance operations.

    • 🔢 Realign Car Numbers: Renumbers all cars sequentially (1, 2, 3...) ordered by current number
    • 🗳️ Remove All Votes: Deletes all votes — voting starts fresh
    • 👥 Remove All Attendees & Cars: Deletes all attendees, their cars, and votes. Admins and judges are kept.
    • 💣 Full Reset: Removes ALL users, cars, classes, votes, sponsors, and judging data. Only the show config remains. Requires double confirmation.
    Warning: All cleanse actions are irreversible. There is no undo.

    23. Revenue Balance Sheet

    The 💰 Revenue tab tracks income for the current show.

    • Quick stats: Cars registered, Attendees count, Total Revenue
    • Add items: Category (Car Entry, Spectator, Sponsorship, Merchandise, Food/Drink, Other), description, unit price, quantity
    • 🔄 Auto-calculate Car Entries: Enter fee per car — auto-populates with current car count
    • Table: All items with subtotals and grand total
    • Delete individual items

    24. Custom Awards

    The 🎖️ Awards tab lets you create special awards beyond voting results.

    • Create awards with icon (🏆🥇⭐👑🔥💎 etc.), name, and description
    • Examples: "Organizer's Pick", "Longest Distance Driven", "Best Engine"
    • Assign to a car via dropdown — shows car number, make, model
    • Awards appear on the car's Car Detail Page in the attendee app as gold badges
    • Delete or reassign awards at any time

    25. Photo Gallery & Car Details

    Attendees can tap any car in "All Vehicles" to see a full Car Detail Page with:

    • Hero image, car number badge, year/make/model, color
    • Owner name and city
    • Class badge and modifications
    • 🏆 Awards — any custom awards assigned to this car
    • Reactions — 6 emoji buttons (🔥 ❤️ 💪 👏 🏆 😍) that toggle on/off with counts
    • 📸 Photo Gallery — upload photos via camera or gallery, compressed automatically
    • 💬 Comments — add/delete comments (SuperAdmin can delete any)

    The 📸 Photo Gallery button on the Dashboard shows all photos from all cars in the show, with a full-screen lightbox and "View Car Details" link.

    26. Bulk SMS (SuperAdmin Only)

    In ⚙️ Site Admin, configure Twilio to send text messages to all attendees.

    • Enter Twilio Account SID, Auth Token, and Phone Number
    • Compose a message (160 chars max)
    • Click "Send SMS to All Attendees" — sends to all attendees with phone numbers in the current show
    • Requires a Twilio account

    27. Automated Backups

    A nightly cron job backs up the database automatically.

    • Runs at 3am daily via backup.sh
    • Creates compressed .sql.gz files in /opt/autovotespro/backups/
    • Keeps 14 days of backups, auto-deletes older ones
    • Optional: uncomment email line in script to receive backups by email

    28. Admin as Attendee

    SuperAdmins and ShowAdmins can join a show as an attendee to vote and register cars.

    • In the Config tab, a yellow banner appears if you're not registered as an attendee
    • Click "Join as Attendee" — auto-approved, car slot assigned
    • Admin sees both admin buttons AND attendee features (My Cars, Vote, Tally, etc.) on the app Dashboard
    • Admins can also pre-register via the registration page — same approval flow as regular attendees

    29. Multi-Language Support

    The attendee app supports 5 languages, selectable by each user from the Dashboard.

    Supported Languages

    • 🇬🇧 English (default)
    • 🇫🇷 Français (French)
    • 🇪🇸 Español (Spanish)
    • 🇩🇪 Deutsch (German)
    • 🇨🇳 中文 (Chinese Simplified)

    How It Works

    • Attendees tap a flag button at the bottom of the Dashboard to switch language
    • All buttons, labels, headers, and navigation text change instantly
    • The selection persists during the session

    What's Translated

    • Dashboard: All buttons (My Cars, Vote, Tally, Sponsors, Gallery, Winners, Help, Sign Out, etc.)
    • Navigation: ← Back button, My Shows, Edit Profile
    • Car Detail Page: Owner, Class, Modifications, Reactions, Photos, Comments, upload buttons
    • Photo Gallery: Title, Add Photo, Select Car, empty states
    • Marquee Banner: Voting expiry, incomplete cars, missing votes messages
    • Common: Loading, Error, Success, Cancel, Delete, Language

    Not Translated

    • Custom announcements: Marquee announcement text is admin-written and displays as entered
    • Show names, car data, comments: User-generated content stays in its original language
    • Admin panel: The admin interface remains in English

    30. Door Prizes

    The 🎁 Door Prizes tab lets you create prizes, draw random winners, and track prize collection.

    Creating Prizes

    • Enter Prize Name (e.g. "Clock", "$50 Gift Card"), optional Description and Sponsor
    • Click ✏️ to edit a prize name, description, or sponsor at any time

    Drawing Winners

    • Click 🎰 Draw Winner — randomly selects a registered car
    • A car can only win once across all door prizes — previous winners are excluded
    • Winner shows: Car #, Year/Make/Model, Owner name, draw time
    • Click 🔄 Redraw to clear a winner and pick again

    Tracking Collection

    • 📋 Mark Retrieved — changes card from yellow to green when attendee collects their prize
    • Mark Unretrieved — toggle back if needed
    • Summary bar shows: Total Prizes, Drawn, Retrieved, Pending

    Attendee Notification

    • Winners see a red marquee banner: "🎉 Your car #X won Door Prize #3: Clock!"
    • Banner has highest priority (shows first) and disappears once marked as retrieved
    • All attendees can tap 🎁 Door Prizes on the Dashboard to see all drawn winners
    • Winner list auto-refreshes every 15 seconds during the event

    31. Photo & Comment Management

    In the Cars tab, click 📸 Photos & Comments to manage all user-uploaded content.

    Photos

    • Grid of all uploaded photos with thumbnail preview
    • Each card shows: photo preview, car #, make/model, caption, uploader name, date
    • Delete button to remove any photo

    Comments

    • Table of all comments across all cars
    • Shows: Car, Comment text, Author, Date
    • button to delete any comment
    Tip: Photos and comments can also be deleted from the app — tap any car in "All Vehicles" to see its detail page. Admins see delete buttons on all content.

    32. Merchandise Store

    The 🛍️ Merch tab lets you sell show merchandise through the attendee app.

    Managing Items

    • Add items: Name, Description, Price, and Sizes (comma-separated, e.g. S,M,L,XL,2XL)
    • ✏️ Edit — change name, description, price, or sizes at any time
    • Mark Sold Out / Restock — sold out items are hidden from attendees
    • ✕ Delete — remove an item entirely

    Managing Orders

    Click 📋 View Orders to see all attendee orders.

    • Summary cards: Total Orders, Total Revenue, Paid count, Pending count
    • Order table: Order #, Item, Size, Qty, Total, Buyer name/email, Status, Paid
    • Change status: Pending → Completed → Cancelled via dropdown
    • 💰 Paid toggle: Mark an order as paid when attendee pays at the table
    Tip: Attendees order from the app and pay at the registration table when they pick up. No online payment required for merch.

    33. Photo Likes & Best Photo

    Attendees can like photos in the gallery by tapping the ❤️ button. Each user gets one like per photo (tap again to unlike).

    • Photos can be sorted by 🕐 Recent or ❤️ Popular
    • The photo with the most likes appears in a 🏆 Best Photo gold banner at the top of the gallery
    • Like counts are visible on both the gallery grid and the full-screen photo viewer
    • Best Photo updates live as likes come in

    34. Scan Car QR (App)

    Attendees can scan a car's QR code from the Dashboard to view its detail page.

    • Tap 📷 Scan Car on the Dashboard → opens camera → scan QR → opens Car Detail page
    • Same QR code scanned from the 🗳️ Vote screen will cast a vote instead
    • This gives QR codes dual purpose: view details OR vote, depending on context

    35. Judge Scoring (App)

    Judges can now score cars directly from the app — no admin panel needed.

    • Judges see ⚖️ Judge Scoring button on their Dashboard (only visible to Judge role)
    • Car list with progress dots: 🟢 scored, 🟡 partial, ⚪ not started
    • Scoring view: −/+ buttons, direct number input, Max/Half quick buttons
    • Color-coded score bars (green ≥80%, yellow ≥50%, red <50%)
    • Running total with percentage at top
    • Notes field for Freestyle/Concours formats
    • Pre-fills existing scores when revisiting a car
    • Supports all 3 formats: Traditional, Freestyle, Concours

    36. Attendee & Car Count Marquee

    A live count of attendees and cars can be displayed in the marquee banner.

    • Toggle in Config tab → 🚗 Attendee & Car Count
    • Shows: "🚗 47 attendees / 82 cars at the show!"
    • Only counts approved Attendee-role users (excludes admins and judges)
    • Updates live as new attendees register and are approved
    • Translated to all 5 languages
    • Lowest priority (shows after other messages)

    37. Pre-Registration Flow

    Pre-registration now assigns car numbers on approval, not on registration.

    • Attendee pre-registers → no car created yet, car count stored in show_users
    • Admin sees requested car count in ⏳ Pending Approvals to verify against payment
    • On Approve → cars created with next available numbers → alert shows assigned car numbers
    • Admin knows which dash cards to hand out: "Assigned car #5, #6"
    • On Reject → simply removed from show, no cars to clean up
    • Approve All creates cars for all pending users in one click

    38. Spectator Mode

    Spectator mode provides no-login public access to your car show. Share the link with anyone — no account needed.

    Access

    • URL: autovotespro.org/spectator?showId=X
    • Also accessible via the 👁️ Live Spectator View button on the show details page
    • Auto-refreshes every 30 seconds

    Tabs (Bottom Navigation)

    • 🚗 Cars — All vehicles with car number, make/model, owner, class, modifications, and thumbnail photo. Tap any car for full detail view
    • 📸 Photos — Photo gallery sorted by likes, Best Photo banner, full-screen viewer
    • 📊 Results — Live vote tally (handles all 4 show types). Medals on top 3
    • 🛍️ Shop — Browse merchandise with prices and sizes (read-only, must log in to order)
    • 🏅 Sponsors — Sponsors grouped by tier (Platinum/Gold/Silver/Bronze) with logos
    • 📷 Scan — Scan a car's QR code to view its detail page with photos, reactions, comments, and awards

    What Spectators See

    • Show flyer displayed at full width at the top
    • Live stats bar: Attendees, Cars, Votes, Photos
    • All content is read-only — no voting, no commenting, no photo uploads, no ordering
    Tip: Print the spectator QR code and display it at the venue entrance so walk-up visitors can follow along on their phones.

    39. Paper Ballot Entry

    Access from Tally tab → 📝 Paper Ballot (red button). Allows admins to enter votes from paper ballots on behalf of attendees.

    How It Works

    • Step 1: Select an attendee from the dropdown
    • Step 2: Depends on show type (see below)
    • Step 3: Tap a car to cast the vote

    Show Type Behavior

    • Classic: Select a class → shows only cars assigned to that class → one vote per class
    • Unique: Select a class → shows ALL cars → one vote per class, same car can win in multiple classes
    • Top (e.g. Top 10): No class selection → shows all cars → tap to vote up to the limit
    • People's Choice: Paper ballot not needed (anonymous QR voting)

    Features

    • Classes show ✅ green when voted, ⬜ yellow when not yet voted
    • ✕ button to remove a vote
    • Progress bar shows votes cast vs total
    • All voting rules enforced (no self-vote, no duplicates, class limits)
    • Fast loading — single API call, class switching is instant

    40. Door Prize TV Display

    A standalone page designed for projecting on a TV or monitor at the venue.

    Access

    https://autovotespro.org/app/door-prize-display.html?showId=X

    Features

    • Auto-scrolling prize cards (seamless vertical loop)
    • Color-coded: 🟡 unclaimed (pulsing red border), 🟢 retrieved (green), ⬜ not yet drawn (dim)
    • Stats bar: total prizes, drawn, retrieved, unclaimed
    • Show logo and name in header
    • Auto-refreshes every 60 seconds — new winners appear automatically
    • Hover pauses scrolling
    • No login required

    41. User Management Features

    Color-Coded User Rows

    • Red background: SuperAdmin
    • Orange background: ShowAdmin
    • Purple background: Judge
    • Blue background: Attendee (approved)
    • Yellow background: Pre-Registered (pending)

    Search Bar

    Type in the search bar at the top of the Users tab to filter both pending approvals and the user table by name or email. Instant filtering, no page reload.

    Car Count Dropdown

    Each pending approval shows a Cars dropdown (1-10). If the attendee entered the wrong number, change it before approving. Increasing the count triggers a payment verification warning.

    Revoke Approval

    Click ↩ Revoke on any approved attendee to move them back to Pre-Registered status. This deletes their cars, votes, photos, and comments for the show. Confirmation dialog required.

    Approve from Users Tab

    Click ✅ Approve on any pre-registered user to approve them directly from the Users tab, without going to the Pending Approvals section.

    42. Troubleshooting

    Communication Error on Login

    The API URL in admin.html may be incorrect. Ensure it points to the correct server address.

    ShowAdmin Sees "No Active Shows"

    All shows assigned to this ShowAdmin are closed. A SuperAdmin needs to open a show for them.

    "Email already in use" when adding users

    This should now re-link the existing user. If it still fails, the user may already be in this show. Check the Users tab.

    Password reset emails not arriving

    Reset emails are sent from noreply@autovotespro.org using the server's mail system with SPF and DKIM authentication. If emails aren't arriving:

    • Tell the attendee to check their spam/junk folder
    • Check the server logs: grep "gmail\|yahoo\|hotmail" /var/log/exim_mainlog | tail -5
    • As a fallback, use the "Reset PW" button on the Users tab to reset their password manually

    Show switching not working

    Click the purple "Switch Show" button in the show bar to switch between shows. Both SuperAdmins and ShowAdmins can switch. On the Shows tab, SuperAdmins can also click "Manage" to switch to any show, or "Activate" to make a show the system default.

    Stripe payments not working

    • Verify your Publishable Key starts with pk_live_ (or pk_test_ for testing)
    • Verify your Secret Key starts with sk_live_ (or sk_test_ for testing)
    • Make sure both keys are from the same Stripe account and mode (live or test)
    • Check the server logs: pm2 logs autovotespro --lines 20
    • Test with Stripe test card: 4242 4242 4242 4242, any future expiry, any CVC

    PayPal payments not working

    • Verify your Client ID is correct from the PayPal Developer dashboard
    • Make sure Live Mode is checked for real payments (uncheck for sandbox)
    • PayPal buttons may take a moment to load — check your internet connection
    • If buttons don't appear, the Client ID may be invalid

    Attendee paid but not approved

    If an attendee reports paying but their show still says "Pending Approval":

    • Check your Stripe dashboard or PayPal account to verify the payment
    • You can manually approve them from the Users tab → Pending Approvals
    • Check server logs for errors during the payment completion step

    Class import shows duplicates

    The same CSV was imported multiple times. Delete duplicate classes in the Classes tab, or delete all classes and re-import.

    Votes not showing in tally

    Ensure the correct show is active. The tally shows votes for the active show only.

    Car photos not loading

    Ensure the class-images folder is present on the server. Check that image uploads completed successfully.

    Attendees can't vote

    Check: Is the vote window set and currently open? Is the show active? Is the attendee assigned to the show?

    Camera scanner not working for attendees

    The QR camera scanner requires HTTPS. Ensure SSL is configured on the server. Attendees can use "Vote by Number" as an alternative.

    Server logs

    Check the logs folder in the server directory for daily error and access logs. On the server: pm2 logs autovotespro