- Fork elmeg-demo codebase for multi-band support - Add data importer infrastructure with base class - Create band-specific importers: - phish.py: Phish.net API v5 - grateful_dead.py: Grateful Stats API - setlistfm.py: Dead & Company, Billy Strings (Setlist.fm) - Add spec-kit configuration for Gemini - Update README with supported bands and architecture
121 lines
2.8 KiB
Markdown
121 lines
2.8 KiB
Markdown
# Fediversion
|
|
|
|
**The ultimate HeadyVersion platform for ALL jam bands.**
|
|
|
|
Fediversion is a unified setlist tracking, rating, and community platform supporting multiple jam bands from a single account.
|
|
|
|
## Supported Bands
|
|
|
|
| Band | Data Source | Status |
|
|
|------|-------------|--------|
|
|
| 🦆 Goose | El Goose API | ✅ Active |
|
|
| 🐟 Phish | Phish.net API v5 | 🔄 Ready |
|
|
| 💀 Grateful Dead | Grateful Stats API | 🔄 Ready |
|
|
| ⚡ Dead & Company | Setlist.fm | 🔄 Ready |
|
|
| 🎸 Billy Strings | Setlist.fm | 🔄 Ready |
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Python 3.11+
|
|
- Node.js 18+
|
|
- PostgreSQL (optional, SQLite works for dev)
|
|
|
|
### 1. Backend (Port 8000)
|
|
|
|
```bash
|
|
cd backend
|
|
pip install -r requirements.txt
|
|
|
|
# Set API keys for data import (optional)
|
|
export PHISHNET_API_KEY="your-key"
|
|
export SETLISTFM_API_KEY="your-key"
|
|
|
|
# Run migrations
|
|
alembic upgrade head
|
|
|
|
# Start server
|
|
uvicorn main:app --reload --port 8000
|
|
```
|
|
|
|
### 2. Frontend (Port 3000)
|
|
|
|
```bash
|
|
cd frontend
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### 3. Import Band Data
|
|
|
|
```bash
|
|
cd backend
|
|
|
|
# Import Goose (existing)
|
|
python import_elgoose.py
|
|
|
|
# Import Phish
|
|
python -m importers.phish
|
|
|
|
# Import Grateful Dead
|
|
python -m importers.grateful_dead
|
|
|
|
# Import Dead & Company
|
|
python -m importers.setlistfm deadco
|
|
|
|
# Import Billy Strings
|
|
python -m importers.setlistfm bmfs
|
|
```
|
|
|
|
## API Keys
|
|
|
|
| Service | Get Key At | Required For |
|
|
|---------|------------|--------------|
|
|
| Phish.net | <https://phish.net/api> | Phish data |
|
|
| Setlist.fm | <https://api.setlist.fm> | D&C, Billy Strings |
|
|
| Grateful Stats | <https://gratefulstats.com> | Grateful Dead |
|
|
|
|
## Architecture
|
|
|
|
```
|
|
fediversion/
|
|
├── backend/
|
|
│ ├── importers/ # Band-specific data importers
|
|
│ │ ├── base.py # Abstract base class
|
|
│ │ ├── phish.py # Phish.net API
|
|
│ │ ├── grateful_dead.py # Grateful Stats API
|
|
│ │ └── setlistfm.py # D&C, Billy Strings
|
|
│ ├── routers/ # API endpoints
|
|
│ ├── models.py # SQLModel database models
|
|
│ └── main.py # FastAPI app
|
|
├── frontend/
|
|
│ ├── app/ # Next.js 14 app router
|
|
│ └── components/ # React components
|
|
└── docker-compose.yml
|
|
```
|
|
|
|
## Core Concept: Verticals
|
|
|
|
Fediversion uses the "Vertical" model to support multiple bands:
|
|
|
|
```python
|
|
class Vertical(SQLModel):
|
|
name: str # "Phish"
|
|
slug: str # "phish"
|
|
description: str
|
|
|
|
class Show(SQLModel):
|
|
vertical_id: int # Links to band
|
|
# ...
|
|
```
|
|
|
|
Routes support both single-band (`/shows`) and multi-band (`/phish/shows`) patterns.
|
|
|
|
## Based On
|
|
|
|
Fediversion is forked from [elmeg-demo](https://git.runfoo.run/runfoo-org/elmeg-demo) (elmeg.xyz), the Goose setlist platform.
|
|
|
|
## License
|
|
|
|
MIT
|