Dance Now Platform

Production-grade platform for managing dance competitions: registration, choreography, offline-first judging, and bilingual reporting.

JavaSpring BootVue 3ViteVuetifyRedisMariaDBHibernateSpring SecurityIndexedDBOpen GraphNginxApacheVPS

🩰 Dance Now Platform

Dance Now Platform is a production-grade web platform managing the full lifecycle of national and international dance competitions - from registration to real-time judging, automated bilingual reporting, and awards generation.

📊 Impact:
✅ Used at 50+ national competitions
✅ Serving 50+ judges and 1000+ dance clubs
✅ Managing 2,000+ choreography entries annually
✅ 99.8% uptime during live events

👉 Live demo: dancenowportal.com


⚙️ Tech Stack

Backend: Spring Boot 3 (Java 21), Spring Security, Hibernate, Redis Pub/Sub
Frontend: Vue 3, Vite, Vuetify
Database: MariaDB
Hosting: Self-managed VPS (Debian 12), Nginx reverse proxy, Apache static assets
Offline: IndexedDB with auto-sync
Integrations: Google Drive API (music storage), server-side Open Graph image generation


🧠 Engineering Highlights

🔌 Offline-First Judging System

Challenge:
Competitions happen in sports halls with unreliable WiFi. During live events, network outages caused judges to lose votes, requiring manual score reconstruction.

Solution:

  • IndexedDB queue: Votes stored locally if network unavailable
  • Automatic sync: Background worker pushes queued data when connection restored
  • Conflict resolution: Backend validates vote integrity (no duplicates, complete coverage)
  • UX safeguards: Real-time sync status indicator; judges notified of skipped choreographies with option to return

Result:
Zero lost votes across 15+ competitions, even during 5+ minute outages.


⚡ Multi-Stage & Multi-Competition Architecture

Challenge:
Large competitions with 1000+ choreographies require splitting across multiple stages to avoid 20+ hour events. System must support concurrent competitions and stage-specific judge assignments without cross-contamination.

Solution:

  • Granular access control: Admin assigns judges to specific stages; judges see only their assigned choreographies
  • Redis channel isolation: Each stage/competition runs on dedicated channel (comp:A:stage:1, comp:B:stage:2)
  • Judge rotation support: Mid-event judge substitutions (e.g., due to fatigue); system tracks who scored what in audit logs
  • Concurrent competition support: Tested with multiple simultaneous competitions sharing infrastructure
  • Real-time synchronization: Vote aggregation happens per-stage with cross-stage result merging

Result:
Successfully handled competitions with 1000+ choreographies across multiple stages; supports concurrent events without performance degradation.


✅ Fair Scoring Validation

Fairness rule:
Every judge must score all choreographies OR none (partial scoring forbidden). This accommodates real-world scenarios: clubs arriving late, performers unable to compete due to illness/injury, or last-minute withdrawals.

Technical enforcement:

  • Backend validates "all-or-nothing" per judge before aggregation
  • Admin dashboard shows completion matrix with color-coded status
  • Lock mechanism prevents post-finalization edits
  • Audit trail tracks all changes (which judge scored which choreography, timestamp, old/new values)

Impact: Zero result calculation errors; eliminated partial-scoring disputes; full transparency for organizers.


🎤 Backstage Coordination System

Problem:
Hosts don't know which dancers are ready backstage. Announcing absent performers causes awkward delays during live events.

Solution:

  • Backstage panel: Coordinators mark choreographies as "ready/not ready"
  • Host panel: Real-time readiness indicators for upcoming performances
  • Host announces next available performer, skipping those still preparing
  • Admin dual-role support: Single interface if admin also acts as host

Impact: Eliminated dead air and no-show announcements; ensured smooth live event flow.


🌐 Advanced Bilingual System (Serbian/English)

Full bilingual support across entire platform:
All reports, invoices, and exports are generated in both languages - not just for admin, but for clubs, organizers, judges and participants.

Complexity beyond basic i18n:

  • PDF generation with language-specific fonts (Cyrillic vs. Latin)
  • Database schema supports dual-language entity names (clubs, choreographies, awards)
  • Admin toggle: Select report language per audience (international judges, local participants, clubs)
  • Excel exports include transliterated names for archival compliance

💰 Automated Fee Calculation System

Challenge:
Competition fees vary based on multiple factors: number of entries, bulk discounts, special awards from previous competitions, and package deals (accommodation included vs. self-arranged).

Solution — Rules Engine:

  • Admin defines fee structure per competition (base price, discount thresholds, package pricing)
  • Automatic calculation as clubs register choreographies:
    • Bulk discounts (e.g., 1000+ entries → reduced per-entry fee)
    • Special awards recognition (previous winners receive fee reductions)
    • Package pricing logic (accommodation packages vs. self-arranged → different rates)
  • Bilingual invoices generated automatically (EUR/RSD dual-currency support)
  • Clubs receive detailed breakdown of all charges and discounts applied

Impact: Eliminated manual invoice errors; clubs have full transparency on fee calculations.


🏆 Dynamic Award Allocation System

Challenge:
Award allocation rules differ per competition and discipline. Manually tracking trophies, medals, diplomas, and cups for hundreds of participants is error-prone.

Solution — Configurable Award Rules:
Admin defines award allocation rules per competition discipline:

Example configurations:

  • SOLO/DUO/TRIO: 1st place → diploma + large medal, 2nd-3rd place → diploma + large medal, other placements → diploma + small medal
  • GROUPS/FORMATIONS: 1st-3rd place → trophy + diploma + large medal for all participants, other placements → diploma + large medal
  • SPECIAL AWARDS: Custom categories (e.g., "Best Costume", "Audience Favorite") with configurable prizes

System automatically calculates:

  • Total number of diplomas, trophies, medals (small/large) required
  • Award distribution per discipline and category
  • Export to Excel for procurement planning

Impact: Zero manual counting errors; organizers know exact award quantities before event starts.


📁 Music Management via Google Drive

Client requirement:
The client required Google Drive integration for music storage and playback. While this approach is not ideal for large-scale media handling, I engineered a robust and predictable solution that works reliably within the given constraints.

Engineering approach:

  • Built a dedicated Spring Boot service layer using the Google Cloud API (service account for secure server-to-server access)
  • Implemented file versioning and ID mapping - new uploads automatically replace previous versions for the same choreography
  • Added validation for file type, duration, and size to ensure consistent data quality
  • Automated pre-event synchronization: admin triggers batch download before each competition; files stored locally to eliminate network dependency during live playback
  • Files are automatically renamed ({start_number}_{choreography}_{song}.mp3) and compiled into a ready-to-play playlist matching program order

Impact:

  • Ensured 100% stable music playback during live events (no dependency on network connectivity)
  • Removed manual file handling for organizers
  • Demonstrated adaptability and engineering reliability under fixed client requirements

🖼️ Dynamic Open Graph Images

  • Server-side OG image generation for competitions and choreographies (Spring Boot service)
  • Improves social media shareability with custom previews on Facebook, WhatsApp, etc.
  • Generated on-demand with competition-specific branding and metadata

🧩 Key Features

🕺 Competition Management

  • Club and choreography registration
  • Granular role-based access control: Admin assigns judges to specific stages; judges access only assigned choreographies
  • Editable programs and scheduling tools
  • Multi-competition support: Run multiple competitions simultaneously on shared infrastructure

📊 Reporting & Exports

  • Dynamic ranking and placement generation
  • Dual-currency payment reports (EUR/RSD) with automatic discount logic
  • Excel and PDF exports for programs, top-5 rankings, gala events, diplomas
  • Audit reports: Full transparency on who scored what and when
  • Bilingual support: All reports available in Serbian and English

🏨 Accommodation Module (in progress)

  • Organizers define hotels, rooms, and prices
  • Clubs use temporary credentials to manage bookings

🚀 Infrastructure Highlights

  • Zero-downtime deployments during live competitions (blue-green strategy)
  • JVM and MariaDB tuning for high-concurrency scenarios (500+ concurrent users)
  • Custom retry logic for vote sync (exponential backoff + conflict resolution)
  • SSL/TLS hardening and Nginx rate limiting for production security

📈 Results

Reliability: 99.8% uptime during critical live events
Data integrity: Zero lost votes despite network instability
Scalability: Successfully handled competitions with 1000+ choreographies across multiple stages
Flexibility: Supports multiple simultaneous competitions and mid-event judge rotations
Business automation: Eliminated manual errors in fee calculation and award logistics
User satisfaction: Judges report 80% faster scoring workflow vs. paper-based system


👉 Live demo: dancenowportal.com