Initial vault setup
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
---
|
||||
title: LinguaCafe
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, books, language-learning, srs, flashcards, reader, laravel, vue, docker]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=books, https://github.com/simjanos-dev/LinguaCafe, https://simjanos-dev.github.io/LinguaCafeHome/]
|
||||
---
|
||||
|
||||
# 🌍 LinguaCafe
|
||||
|
||||
> **Plateforme de lecture multilingue avec SRS intégré** : lisez des textes en langue étrangère, surlignez les mots inconnus, et révisez-les automatiquement avec un système de cartes mémoire inspiré d'Anki — le tout auto-hébergé.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [simjanos-dev.github.io/LinguaCafeHome](https://simjanos-dev.github.io/LinguaCafeHome/) |
|
||||
| **GitHub** | [simjanos-dev/LinguaCafe](https://github.com/simjanos-dev/LinguaCafe) |
|
||||
| **Licence** | GPL-3.0 |
|
||||
| **Langage** | PHP (Laravel 11), Vue 3, Python (NLP) |
|
||||
| **Étoiles GitHub** | 1.4k ⭐ |
|
||||
| **Dernière MAJ** | 2025-03 (v0.14.1) |
|
||||
| **Catégorie** | [[cat-books]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**LinguaCafe** est une application web conçue pour les **apprenants de langues étrangères** qui veulent combiner lecture immersive et acquisition de vocabulaire. Le principe : vous importez vos textes (articles web, ebooks EPUB, fichiers PDF), vous lisez dans un **lecteur intégré** qui annote automatiquement chaque mot, vous cliquez sur un mot inconnu pour voir sa **traduction contextuelle**, et l'application l'envoie dans un **système de répétition espacée (SRS)**. Quand vous voulez réviser, vous ouvrez l'écran **Review** et l'algo vous fait réviser les mots selon la courbe de l'oubli.
|
||||
|
||||
LinguaCafe supporte **27 langues** : japonais (le mieux servi grâce à JMDict, KANJIDIC2, MeCab et furigana automatique), coréen, chinois, français, allemand, espagnol, italien, russe, portugais, néerlandais, polonais, turc, grec, latin, etc. Le niveau de support varie — japonais, anglais et français sont les plus complets, certaines langues n'ont que le tokenizer. Pour le japonais, l'application génère le **furigana** sur les kanji, supporte le **kana→kanji** (pykakasi) et lit les fichiers **EPUB avec vert/horiz**.
|
||||
|
||||
L'application propose aussi un **scanner ISBN** (mobile), une **intégration Jellyfin** (pour lire ses sous-titres de séries), une **intégration DeepL** (traduction) et une **intégration Anki** (export de paquets). C'est un outil pensé pour les apprenants **sérieux** qui veulent arrêter de gérer leurs flashcards à la main dans un tableur.
|
||||
|
||||
**Points forts** : SRS vraiment efficace, lecteur fluide avec surlignage, dictionnaire intégré, 27 langues, intégration DeepL/Anki/Jellyfin, sauvegardes automatiques (`backup.sh`).
|
||||
|
||||
**Points faibles** : mono-utilisateur (un seul compte par instance), pas d'images Docker ARM (Raspberry Pi non supporté), RAM ≥ 2 Go si toutes les langues activées, encore en développement actif (l'auteur prévient : « please test before actively using »).
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Option recommandée : Docker Compose
|
||||
|
||||
Le dépôt fournit un `docker-compose.yml` de production clé-en-main (webserver Laravel + service Python NLP + PostgreSQL + Redis).
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
linguacafe-webserver:
|
||||
image: ghcr.io/simjanos-dev/linguacafe-webserver:latest
|
||||
container_name: linguacafe-webserver
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
ports:
|
||||
- "8080:80"
|
||||
depends_on:
|
||||
- linguacafe-database
|
||||
- linguacafe-redis
|
||||
volumes:
|
||||
- linguacafe_storage:/var/www/html/storage
|
||||
|
||||
linguacafe-python-service:
|
||||
image: ghcr.io/simjanos-dev/linguacafe-python-service:latest
|
||||
container_name: linguacafe-python-service
|
||||
restart: unless-stopped
|
||||
|
||||
linguacafe-database:
|
||||
image: postgres:16-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_DB: linguacafe
|
||||
POSTGRES_USER: linguacafe
|
||||
POSTGRES_PASSWORD: change-me-strong
|
||||
volumes:
|
||||
- linguacafe_db:/var/lib/postgresql/data
|
||||
|
||||
linguacafe-redis:
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- linguacafe_redis:/data
|
||||
|
||||
volumes:
|
||||
linguacafe_storage:
|
||||
linguacafe_db:
|
||||
linguacafe_redis:
|
||||
```
|
||||
|
||||
### Installation manuelle
|
||||
|
||||
Un script Windows est fourni (`install_linguacafe.bat`). Sur Linux : cloner le dépôt, `cp .env.example .env`, `composer install`, `npm install && npm run build`, configurer PostgreSQL et Redis, puis `php artisan migrate` et `php artisan serve`. Prévoir PHP 8.3+, Node 20+, Python 3.11+ pour le service NLP.
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Choisir les langues actives** dans `.env` (variable d'activation par code langue) — chaque langue alourdit l'empreinte RAM.
|
||||
2. **Ajouter une clé DeepL** (optionnel) pour la traduction contextuelle.
|
||||
3. **Configurer l'intégration Anki** (URL + clé API) pour exporter les decks.
|
||||
4. **Connecter Jellyfin** (URL + token) si vous voulez lire les sous-titres.
|
||||
5. **Activer les sauvegardes automatiques** via le script `backup.sh` fourni (cron quotidien).
|
||||
6. **Placer derrière un reverse proxy HTTPS** (Caddy/Nginx) pour l'accès distant.
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
- [[app-readarr]] — pour l'automatisation d'acquisition de livres
|
||||
- [[app-audiobookshelf]] — focus audiobooks
|
||||
- **Anki + AnkiConnect** — SRS pur, sans lecteur intégré
|
||||
- **Lute** — lecteur SRS similaire, plus minimaliste
|
||||
- **Readlang** — équivalent web (mais fermé)
|
||||
|
||||
### Propriétaires
|
||||
- **WaniKani** — SRS japonais spécifiquement
|
||||
- **LingQ** — lecteur multilingue avec SRS, freemium, pas self-hostable
|
||||
- **Readibu** — lecteur chinois avec dictionnaire, freemium
|
||||
- **LingoDeer / Duolingo** — apps mobiles, pas de vraies lectures immersives
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- ✅ **Authentification** par email + mot de passe (Laravel Breeze/Jetstream)
|
||||
- ⚠️ **Mono-utilisateur** par instance (limitation de conception)
|
||||
- ✅ **HTTPS obligatoire** dès qu'on sort du LAN
|
||||
- ✅ **Sauvegardes automatiques** via `backup.sh` — indispensable
|
||||
- ⚠️ **Stockage local** des EPUB importés : bien protéger le volume
|
||||
- ⚠️ **DeepL API key** à garder secrète (compte payant)
|
||||
- ✅ PostgreSQL avec mot de passe fort
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Site officiel](https://simjanos-dev.github.io/LinguaCafeHome/)
|
||||
- [GitHub simjanos-dev/LinguaCafe](https://github.com/simjanos-dev/LinguaCafe)
|
||||
- [Wiki — Setup](https://github.com/simjanos-dev/LinguaCafe/wiki/2.-Setup#installation)
|
||||
- [Discord LinguaCafe](https://discord.gg/wZYZYrdaeP)
|
||||
- [Subreddit r/linguacafe](https://reddit.com/r/linguacafe)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-books]] — Catégorie Books
|
||||
- [[app-readarr]] — PVR livres/audiobooks
|
||||
- [[app-audiobookshelf]] — Streaming audiobooks
|
||||
- [[app-caddy]] — Reverse proxy HTTPS
|
||||
- [[recettes-docker-compose]] — Templates Docker
|
||||
Reference in New Issue
Block a user