6fbd24e36e15b438e571537a084d34576c6497f4
• Files changed: app/controllers/pages_controller.rb, app/models/party.rb, app/views/pages/home.html.erb, db/migrate/20250823145902_create_parties.rb, db/schema.rb, db/seeds.rb • Nature of changes: Added image support to parties, updated homepage to dynamically display parties, enhanced seed data with parties and ticket types, schema updates for foreign keys • Purpose: Enable dynamic event display on homepage with real data instead of static placeholders, add image support for parties, improve database relationships • Impact: Homepage now shows real party data from database, parties can have images, database schema improved with proper foreign keys • Commit message: feat: implement dynamic event display with party images and seed data
Aperonight - Party Booking Platform
🌃 Overview
Aperonight is a two-sided marketplace connecting party-goers with nightlife promoters in Paris. The platform allows:
- Customers to discover/book tickets for upcoming parties
- Promoters to create/manage events and validate tickets at venue entrances
🎯 Key Features
For Party-Goers
✔ Browse upcoming parties with filters (date, location, music genre) ✔ Book tickets with multiple bundle options (VIP, group passes, etc.) ✔ Secure payment processing (credit cards, Apple/Google Pay) ✔ Mobile-friendly e-tickets with QR codes
For Promoters
✔ Event creation dashboard with ticket type customization ✔ Real-time ticket validation via mobile scanning ✔ Sales analytics and attendee tracking ✔ Automatic aggregation of events from partner platforms
🛠 Technical Stack
Backend
- Ruby on Rails 7 (API mode)
- MariaDB database
- ActiveJob for background processing
Frontend
- Hotwire (Turbo + Stimulus) for reactive UI
- Tailwind CSS for styling
- React Native for promoter mobile app (ticket scanning)
Key Integrations
- Stripe Connect for payments & promoter payouts
- Shogun/Bizouk/Weezevent APIs for event aggregation
📊 Database Schema (Simplified)
erDiagram
USER ||--o{ BOOKING : makes
USER {
integer id
string email
string encrypted_password
}
PROMOTER ||--o{ PARTY : creates
PROMOTER {
integer id
string stripe_account_id
}
PARTY ||--o{ TICKET_TYPE : has
PARTY {
integer id
datetime start_time
}
BOOKING ||--o{ TICKET : generates
BOOKING {
integer id
decimal total_price
}
TICKET_TYPE ||--o{ TICKET : defines
TICKET_TYPE {
integer id
string name
}
TICKET {
integer id
string qr_code
}
Description
Languages
HTML
49.6%
Ruby
34.8%
CSS
8.8%
JavaScript
6%
Dockerfile
0.4%
Other
0.4%
