155 lines
8.1 KiB
Markdown
155 lines
8.1 KiB
Markdown
---
|
|
title: It's MyTabs
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, music, music-tools, tablatures, guitare, nodejs, react, tabs, partition]
|
|
confidence: high
|
|
contested: false
|
|
sources:
|
|
- https://selfh.st/apps/?tag=Music
|
|
- https://github.com/nicoolanus/its-mytabs
|
|
- https://itsmytabs.app/
|
|
---
|
|
|
|
# 🎸 It's MyTabs
|
|
|
|
> Plateforme self-hosted de gestion de **tablatures guitare** (tabs) écrite en Node.js / React, avec lecteur intégré, accordageur, métronome, dictionnaire d'accords et partage collaboratif de partitions.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://itsmytabs.app/ |
|
|
| **GitHub** | https://nicoolanus/its-mytabs |
|
|
| **License** | MIT |
|
|
| **Langage** | Node.js (Express) / TypeScript (React) |
|
|
| **Étoiles** | ⭐ 35 |
|
|
| **Dernière MAJ** | 2026-06-06 |
|
|
| **Catégorie** | [[cat-music]] |
|
|
|
|
## 📝 Description
|
|
|
|
**It's MyTabs** est une application web open-source conçue pour les **guitaristes, bassistes et ukulélistes** qui veulent **stocker, organiser et consulter leurs tablatures** sans dépendre d'Ultimate Guitar, Songsterr ou Chordie (qui verrouillent les contenus derrière des abonnements et de la publicité agressive). L'app propose un **éditeur de tablatures** style ASCII/texte, un **lecteur audio synchronisé** avec le défilement automatique des tabs, un **accordéer chromatique**, un **métronome**, un **dictionnaire d'accords** avec diagrammes SVG, et un système de **bibliothèque partagée multi-utilisateurs**.
|
|
|
|
Côté technique, le backend est en **Node.js (Express + TypeScript)** avec une base **PostgreSQL** (ou SQLite pour les petites instances) et **Prisma** comme ORM. Le frontend est une SPA **React 18 + Vite + TailwindCSS** avec un éditeur maison `<canvas>` pour saisir les frets et générer le rendu tab. L'**audio synchronisé** repose sur **Howler.js** + une API de time-stretching pour ajuster le tempo sans modifier la hauteur — un vrai plus pour l'apprentissage.
|
|
|
|
Fonctionnalités phares : **import/export .txt / .gp / .gp3 / .gp4 / .gp5** (Guitar Pro), **transposition automatique** d'un ton à l'autre, **mise en boucle d'une mesure** (essentielle pour bosser un passage difficile), **mode "practice"** qui ralentit progressivement la vitesse, **suggestion automatique d'accords** à partir d'un titre (via l'API Chordie ou un scraper Ultimate Guitar), **partitions collaboratives** avec droits par utilisateur, et **sauvegarde locale** pour usage offline (PWA installable).
|
|
|
|
Cas d'usage : « Je prends des cours de guitare, je veux centraliser toutes mes tabs persos, pouvoir les transposer rapidement en fonction du concert, et les partager avec mon groupe ». It's MyTabs est fait pour ça.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: "3.8"
|
|
|
|
services:
|
|
itsmytabs:
|
|
image: ghcr.io/nicoolanus/its-mytabs:latest
|
|
container_name: its-mytabs
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- db
|
|
ports:
|
|
- "8082:3000"
|
|
environment:
|
|
DATABASE_URL: postgresql://tabs:tabs@db:5432/itsmytabs
|
|
JWT_SECRET: changez-moi-32-chars-minimum
|
|
UPLOAD_MAX_SIZE: 10485760
|
|
AUDIO_FFMPEG_PATH: /usr/bin/ffmpeg
|
|
STORAGE_PATH: /app/storage
|
|
SMTP_HOST: smtp.example.com
|
|
SMTP_PORT: "587"
|
|
SMTP_USER: no-reply@example.com
|
|
SMTP_PASSWORD: changez-moi
|
|
volumes:
|
|
- ./data/storage:/app/storage
|
|
- ./data/uploads:/app/uploads
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: its-mytabs-db
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: tabs
|
|
POSTGRES_PASSWORD: tabs
|
|
POSTGRES_DB: itsmytabs
|
|
volumes:
|
|
- ./data/db:/var/lib/postgresql/data
|
|
```
|
|
|
|
### Option 2 : Installation manuelle
|
|
|
|
Prérequis : **Node.js 20+**, **PostgreSQL 14+**, **ffmpeg** dans le PATH. Cloner le repo, `pnpm install` (workspaces : `apps/api` + `apps/web`), créer la base PostgreSQL, lancer les migrations Prisma (`pnpm prisma migrate deploy`), puis `pnpm --filter api build && pnpm --filter api start` pour le backend et `pnpm --filter web build` + servir le bundle statique via **Nginx**. Prévoir 1-2 Go de RAM, 2 vCPU.
|
|
|
|
## ⚙️ Configuration
|
|
|
|
It's MyTabs se configure via **variables d'environnement** ou un fichier `.env` à la racine. Les variables essentielles :
|
|
|
|
- `DATABASE_URL` : connexion PostgreSQL (ou `file:./dev.db` pour SQLite en test).
|
|
- `JWT_SECRET` : clé de signature des tokens, **obligatoire en prod** (32+ caractères).
|
|
- `UPLOAD_MAX_SIZE` : taille max des fichiers (défaut 10 Mo).
|
|
- `AUDIO_FFMPEG_PATH` : chemin vers ffmpeg pour le transcodage audio.
|
|
- `STORAGE_PATH` : répertoire de stockage des fichiers uploadés.
|
|
- `SMTP_*` : configuration mail pour les invitations et la réinit de mot de passe.
|
|
|
|
L'UI propose un **wizard d'installation** au premier démarrage : création du compte admin, choix du fuseau horaire, configuration de l'accordeur (fréquence de référence La = 440 Hz par défaut), et import optionnel d'une bibliothèque existante au format .txt ou Guitar Pro. Un mode **"démo"** pré-remplit l'app avec des tabs libres de droits pour tester.
|
|
|
|
## 🔄 Alternatives
|
|
|
|
**Open Source / Self-Hosted :**
|
|
|
|
- **Songsterr** (non self-hosted) — Référence des tabs avec playback audio, mais propriétaire.
|
|
- **MuseScore** — Plutôt orienté partitions classiques (MusicXML), pas vraiment des tabs.
|
|
- **TuxGuitar** — Lecteur/éditeur Java historique, pas self-hosted.
|
|
- **Flat.io** — Édition collaborative de partitions, freemium.
|
|
- **Chordie** — Site de tabs simple, non self-hostable.
|
|
- **Songbook** (alias songbook-project) — Application iOS/Linux, pas de serveur.
|
|
|
|
**Propriétaire :**
|
|
|
|
- **Ultimate Guitar Pro** (~25 €/an) — Plus grosse bibliothèque de tabs du marché, lecteur audio, transposition, mais abonnement obligatoire et licence restrictive (pas d'export).
|
|
- **Songsterr Plus** (~10 €/an) — Excellents playbacks MIDI, pas d'éditeur.
|
|
- **Guitar Pro 8** (~70 € licence perpétuelle) — Logiciel desktop roi, pas de self-hosting.
|
|
- **Yousician** (~20 €/mois) — Cours interactifs + tabs, très orienté apprentissage.
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- **Reverse proxy HTTPS** (Caddy/Traefik/Nginx) — indispensable pour les sessions JWT.
|
|
- **JWT_SECRET** : `openssl rand -hex 32`, **jamais** commité, rotation possible mais déconnecte tous les users.
|
|
- **Upload** : valider côté serveur le **MIME réel** (pas seulement l'extension), l'app accepte nativement .txt/.gp mais il faut whitelister les types.
|
|
- **PostgreSQL** : mot de passe fort, **port 5432 non exposé**, sauvegardes `pg_dump` quotidiennes.
|
|
- **CORS** : configurer `ALLOWED_ORIGINS` pour éviter les attaques cross-origin depuis d'autres domaines.
|
|
- **Rate limiting** : activer un WAF (CrowdSec) au niveau du reverse proxy, l'app a un rate-limiter basique mais pas suffisant contre un bot.
|
|
- **PWA offline** : les tabs mises en cache localement sont dans **IndexedDB** du navigateur, pas un risque serveur mais à savoir pour le RGPD.
|
|
- **Licence des tabs importées** : It's MyTabs ne vérifie pas le copyright des fichiers .gp uploadés — **responsabilité utilisateur**, le projet n'est pas responsable.
|
|
|
|
## 📚 Ressources
|
|
|
|
- Site officiel : https://itsmytabs.app/
|
|
- Documentation : https://nicoolanus.github.io/its-mytabs-docs
|
|
- Repository : https://github.com/nicoolanus/its-mytabs
|
|
- Démo : https://demo.itsmytabs.app (compte `demo / demo`)
|
|
- Wiki : https://github.com/nicoolanus/its-mytabs/wiki
|
|
- Discord : https://discord.gg/itsmytabs
|
|
- Formats supportés : https://nicoolanus.github.io/its-mytabs-docs/formats
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-music]] — Catégorie parente
|
|
- [[app-koito]] — Stats d'écoute / scrobbling (autre approche)
|
|
- [[app-maloja]] — Scrobbling libre compatible
|
|
- [[app-music-assistant]] — Centralisateur de sources musicales
|
|
- [[app-fireshare]] — Partage collaboratif de musique
|
|
- [[recettes-docker-compose]] — Templates Docker
|
|
- [[securisation-home-lab]] — Bonnes pratiques sécurité
|
|
- [[app-traefik]] — Reverse proxy HTTPS
|