Purpose: A collaborative voting platform for festival attendees to vote on their favorite artists and make collective decisions about the festival lineup.
Target Users:
- Festival attendees who want to influence the artist lineup
- Core team members who manage the festival and artist data
- Group organizers who want to create voting communities
Value Proposition: Enables democratic decision-making for festival lineups through group-based voting, artist discovery, and social features.
- Add Artists: Core team members can add new artists with details (name, genre, description, stage, Spotify/SoundCloud URLs)
- Edit Artists: Modify artist information including images and performance details
- Archive Artists: Soft delete artists while preserving votes and data
- Artist Discovery: Browse artists with rich metadata and social links
- Image Management: Artist images with fallback handling
- Vote Types:
2
= "Must Go" (highest priority)1
= "Interested" (medium priority)-1
= "Won't Go" (negative vote)
- Vote Management: Users can change or remove votes
- Real-time Updates: Vote counts update instantly across all users
- Group-filtered Voting: Votes can be filtered by group membership
- Weighted Scoring: Popularity calculated as
(2 × Must Go) + Interested
- Group Creation: Users can create voting groups for coordinated decision-making
- Invite System: Secure token-based invitations with expiration and usage limits
- Role Management: Group creators have administrative privileges
- Group-filtered Data: View voting results filtered by group membership
- Permissions: Core group members have elevated privileges for artist management
- Collaborative Notes: Users can add personal notes about artists
- Note Sharing: Notes are visible to group members for collaboration
- Rich Editing: Support for detailed artist descriptions and personal thoughts
- Privacy: Notes follow group-based visibility rules
- Magic Link Authentication: Passwordless login via email
- OTP Backup: 6-digit verification codes as fallback
- Profile Management: User profiles with customizable usernames
- Invite Integration: Seamless signup flow for group invitations
- Role-based Permissions: Different access levels for Core team vs regular users
- Multiple Filter Types:
- Music Genre filtering
- Stage filtering
- Minimum rating threshold
- Group membership filtering
- Sorting Options:
- Alphabetical (A-Z, Z-A)
- Rating (highest first)
- Popularity (weighted score)
- Performance date
- View Modes: Grid view (cards) and List view
- Real-time Search: Instant filtering and sorting
- Responsive Design: Mobile-first approach with desktop enhancement
- Dark Theme: Purple/blue gradient design optimized for festival branding
- Real-time Feedback: Instant vote updates and live collaboration
- Intuitive Voting: Clear visual feedback for vote states and counts
- Smart Onboarding: Username setup flow for new users
- Group Discovery: Easy group joining via shareable invite links
- Main dashboard with filtering and artist browsing
- Individual artist detail pages with comprehensive information
- Group management interface for creators
- Profile management for user settings
- Festival-themed purple/blue gradient backgrounds
- Semi-transparent cards with backdrop blur effects
- Semantic color system for consistent theming
- Icon-based navigation with clear visual hierarchy
Initial Development: UpLine was originally built for Boom Festival as a proof-of-concept for collaborative festival lineup voting. The platform successfully demonstrated how communities can democratically influence artist selection through group-based voting and real-time collaboration.
- Weighted voting system that prioritizes "Must Go" choices
- Group-based consensus building for friend groups
- Collaborative note-taking for artist research
- Stage and time slot management for logistics
- Genre-based discovery for music exploration
- Social proof through group voting patterns
- Real-time collaborative features
- Seamless invite-based onboarding flow
- Progressive enhancement from anonymous to authenticated usage
This project is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later) - see the LICENSE file for details.
- ✅ You can use, study, modify, and distribute this code
- ✅ You can contribute improvements back to the project
- ❌ If you use this code in a web service/SaaS, you must make your entire application open source under AGPL-3.0
- ❌ You cannot create proprietary/closed-source products using this code
Add this to the top of your main source files:
/*
* Copyright (C) 2025 [Chaim Lev-Ari]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*/