- TypeScript 71%
- JavaScript 26.3%
- CSS 1.3%
- Dockerfile 0.8%
- HTML 0.6%
| backend | ||
| frontend | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
JellyPick
Vote pour le film de ta soirée Jellyfin 🍿
JellyPick est une application web permettant de voter pour un film lors d'une soirée cinéma organisée sur Jellyfin. Inspiré de Jellyseer, il permet à tous les utilisateurs ayant un compte Jellyfin de voter pour un film via la recherche TMDB.
Fonctionnalités
- 🔐 Authentification Jellyfin — Connexion avec vos identifiants Jellyfin
- 🎬 Recherche TMDB — Recherche de films en temps réel via l'API TMDB
- 📅 Soirées films — Créez et gérez des soirées film (admins uniquement)
- 🗳️ Votes — Chaque utilisateur vote pour un film par soirée (modifiable)
- 📊 Résultats — Visualisez les votes de tous les participants en temps réel
- 🐳 Docker — Déploiement simplifié via Docker Compose
Prérequis
Démarrage rapide
1. Cloner le dépôt
git clone https://github.com/alt-dev7/JellyPick.git
cd JellyPick
2. Configurer les variables d'environnement
cp .env.example .env
Éditez .env et renseignez :
| Variable | Description | Exemple |
|---|---|---|
JELLYFIN_URL |
URL de votre serveur Jellyfin | http://192.168.1.10:8096 |
TMDB_API_KEY |
Clé API TMDB | abc123... |
JWT_SECRET |
Secret JWT (générez-en un fort) | openssl rand -hex 32 |
PORT |
Port exposé de l'app | 3000 |
3. Lancer avec Docker Compose
docker compose up -d
L'application est accessible sur http://localhost:3000 (ou le port configuré).
Configuration de Jellyfin
Par défaut, JellyPick essaie de contacter Jellyfin via l'URL JELLYFIN_URL. Assurez-vous que :
- Le serveur Jellyfin est accessible depuis le conteneur Docker
- Si Jellyfin tourne sur le même host, utilisez
http://host.docker.internal:8096ou l'IP LAN
Utilisation
Connexion
Connectez-vous avec vos identifiants Jellyfin. Si vous êtes administrateur sur Jellyfin, vous aurez les droits d'administration sur JellyPick.
Créer une soirée (admin)
- Cliquez sur "+ Nouvelle soirée" dans la navigation
- Renseignez le nom, la description et la date
- La soirée est créée avec les votes ouverts
Voter
- Cliquez sur une soirée depuis le tableau de bord
- Recherchez un film dans la barre de recherche
- Confirmez votre vote
Chaque utilisateur ne peut voter qu'une fois par soirée, mais peut changer son vote à tout moment tant que les votes sont ouverts.
Fermer les votes (admin)
Sur la page d'une soirée, les admins peuvent fermer/rouvrir les votes et supprimer la soirée.
Développement local
Backend
cd backend
npm install
cp .env.example .env # configurer les variables
npm run dev
Frontend
cd frontend
npm install
npm start
Architecture
JellyPick/
├── backend/ # API Node.js/Express
│ ├── src/
│ │ ├── routes/ # auth, movies, events, votes
│ │ ├── middleware/
│ │ └── db/ # SQLite via better-sqlite3
│ └── Dockerfile
├── frontend/ # React + TypeScript + Tailwind CSS
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── services/
│ │ └── hooks/
│ └── Dockerfile
└── docker-compose.yml
Crédits
- Données films : The Movie Database (TMDB)
- Authentification : Jellyfin
This product uses the TMDB API but is not endorsed or certified by TMDB.