Skip to content

RebelliousSmile/lyremember

Repository files navigation

LyRemember 🎵

Application desktop multiplateforme pour mémoriser et pratiquer des paroles de chansons dans plusieurs langues avec traduction automatique.

🎯 Vue d'Ensemble

LyRemember est une application moderne qui combine :

  • Desktop natif (Tauri + Vue 3)
  • Backend Rust performant (SQLite + reqwest)
  • Support multi-langues (FR, EN, JP, KR)
  • Traduction automatique (LibreTranslate, stockée offline)
  • Practice modes (Karaoke, Fill-blank, MCQ, Oral)

Note phonétique : la génération phonétique est un stub passthrough (PyO3 retiré — services/phonetic.rs retourne le texte original inchangé).

🚀 Quick Start

Prérequis

  • Rust : 1.70+ (rustup recommandé)
  • Node.js : 18+
  • pnpm : npm install -g pnpm

Installation et lancement

# Installer les dépendances frontend
pnpm --dir lyremember-app install

# Mode développement (Tauri + Vite)
pnpm --dir lyremember-app tauri dev

Note prod : définir LYREMEMBER_JWT_SECRET (voir .env.example) avant tout déploiement. À défaut, un secret éphémère est généré au démarrage et un avertissement est loggué — les JWT deviendront invalides à chaque restart.

Architecture

Vue 3 Frontend (TypeScript)
    ↓
Tauri Commands (21 commandes, préfixées cmd_)
    ↓
Rust Backend (5 services)
    ↓
SQLite + reqwest (LibreTranslate)

📂 Structure du Projet

1. Python CLI (Proof of Concept) - LEGACY (legacy/python-cli/)

cd legacy/python-cli/
pip install -r requirements.txt
pip install -e .
lyremember --help

Le CLI Python n'est plus la stack canonique — il vit comme référence dans legacy/python-cli/. La stack supportée est Rust + Tauri + Vue 3.

2. Rust Backend (Production) - ✅ COMPLET

rust-backend/
├── src/
│   ├── services/          # Auth, Phonetic (stub), Translation, Songs, Practice
│   ├── models/            # User, Song, PracticeSession
│   └── db/                # SQLite avec auto-init
└── Cargo.toml

Fonctionnalités :

  • ✅ Authentication (bcrypt + JWT)
  • ✅ SQLite persistence (4 tables)
  • ✅ LibreTranslate pour traduction auto
  • ✅ CRUD Songs
  • ✅ Practice session tracking + stats

Documentation : rust-backend/README.md

3. Tauri Application (Production) - ✅ COMPLET

lyremember-app/
├── src/                   # Frontend Vue 3 + TypeScript
│   ├── views/             # LoginView, RegisterView, DashboardView, SongsView...
│   ├── stores/            # Pinia : auth, songs, sessions, ui
│   ├── router/            # Vue Router avec guards auth
│   └── lib/
│       └── tauri-api.ts   # TypeScript API (21 commandes)
│
└── src-tauri/             # Backend Tauri
    ├── src/
    │   ├── commands.rs    # 21 Tauri commands (cmd_*)
    │   └── lib.rs         # Initialisation DB
    └── Cargo.toml

Fonctionnalités :

  • ✅ 21 Tauri commands (type-safe)
  • ✅ TypeScript API complète
  • ✅ Vue Router + guards auth
  • ✅ Pinia stores (auth, songs, sessions, ui)
  • ✅ Database auto-created in app data dir

Documentation : lyremember-app/README.md

✨ Fonctionnalités Principales

1. Multi-Langues

  • Japonais, Coréen, Français, Anglais (et autres via LibreTranslate)
  • Phonétique : stub passthrough (retourne le texte original)

2. Traduction Automatique

  • Traduction EN automatique lors de l'ajout de chanson
  • Stockée dans SQLite → usage offline
  • LibreTranslate API (gratuit)

3. Practice Modes

  • Karaoke : Défilement auto ligne par ligne
  • Fill-blank : Phrases à trous (style "N'oubliez pas les paroles")
  • MCQ : Propositions multiples
  • Oral : Reconnaissance vocale

4. Progress Tracking

  • Sessions de pratique enregistrées
  • Statistiques par utilisateur
  • Niveau de maîtrise par chanson
  • Recommandations personnalisées

🎯 Roadmap

Phase 1 : ✅ COMPLET — Backend & Intégration

  • Backend Rust complet
  • 21 Tauri commands type-safe
  • TypeScript API
  • Database auto-initialization
  • Documentation exhaustive

Phase 2 : Core UI

  • Vue Router + navigation multi-page
  • Pinia stores (state management)
  • Login/Register views
  • Dashboard view
  • Song List view

Phase 3 : Practice Modes UI

  • Karaoke mode component
  • Fill-blank mode component
  • MCQ mode component
  • Progress visualization

Phase 4 : Advanced Features

  • Genius API search & import
  • Dark mode toggle
  • i18n (FR/EN/KR/JP interface)
  • Settings page

Phase 5 : Polish

  • Icons & branding
  • Animations & transitions
  • Keyboard shortcuts
  • Error handling UI

📊 Stack Technique

Frontend :

  • Vue 3 (Composition API + TypeScript)
  • Vite (build tool + HMR)
  • Tailwind CSS
  • Pinia (state management)
  • Vue Router

Desktop :

  • Tauri 2.0 (native windows)
  • 21 Tauri commands (préfixées cmd_)

Backend :

  • Rust (lyremember_backend library)
  • SQLite (rusqlite) — auto-créée dans app data
  • bcrypt + JWT (authentication)
  • reqwest → LibreTranslate API

🤝 Contributing

Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une Pull Request.

📄 License

MIT License — voir le fichier LICENSE pour les détails.


Legacy Python CLI Documentation

Note : Le CLI Python ci-dessous est un proof of concept archivé dans legacy/python-cli/. Toutes les commandes cd lyremember, les chemins requirements.txt, data/, etc. sont à interpréter relativement à legacy/python-cli/. Pour production, utiliser l'application Tauri (lyremember-app/).

Features

Support multi-langues — Ajoutez et pratiquez des chansons dans n'importe quelle langue

🎯 Modes de pratique :

  • Fill-in-the-Blank : Des mots aléatoires sont masqués
  • Flashcard : Voyez le début d'une ligne et complétez-la
  • Line-by-Line : Saisissez chaque ligne de mémoire

📊 Suivi de progression — Statistiques détaillées, niveaux de maîtrise, recommandations

Installation

git clone https://github.com/RebelliousSmile/lyremember.git
cd lyremember
pip install -r requirements.txt
pip install -e .

Utilisation rapide

# Ajouter une chanson
lyremember add

# Lister les chansons
lyremember list

# Pratiquer
lyremember practice <song-id>
lyremember practice <song-id> --mode flashcard
lyremember practice <song-id> --difficulty 0.5

# Voir la progression
lyremember progress
lyremember progress <song-id>

About

application for memorizing and playing with lyrics in multiple languages

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors