- Rust 74.9%
- PLpgSQL 15.1%
- JavaScript 3.7%
- TypeScript 1.8%
- Dockerfile 1.6%
- Other 2.8%
| .github/workflows | ||
| backend | ||
| frontend | ||
| scripts/prek | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| CHANGELOG.md | ||
| compose.yml | ||
| Dockerfile | ||
| ferrflow.toml | ||
| LICENSE | ||
| prek.toml | ||
| README.md | ||
Timbre
Timbre is a self-hostable language learning app, based on the principles of Fluent Forever, which revolve around making the target language feel like a new way of thinking instead of just another way of thinking the same things.
Table of Contents
Installation
Docker
Images are published to ghcr.io/code-barru/timbre.
Save this as compose.yaml and run docker compose up -d:
services:
timbre:
image: ghcr.io/Code-Barru/timbre:latest
restart: unless-stopped
depends_on:
database:
condition: service_healthy
environment:
DATABASE_URL: postgres://timbre:CHANGE_ME@database/timbre
PORT: 3000
DB_MAX_CONNECTIONS: 10
PUBLIC_URL: https://timbre.example.com
SESSION_TTL_DAYS: 30
# Set to false if you serve over http
COOKIE_SECURE: "true"
# Set to false if you want to disable account creation
ALLOW_REGISTRATION: "true"
ports:
- "3000:3000"
database:
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_USER: timbre
POSTGRES_PASSWORD: CHANGE_ME
POSTGRES_DB: timbre
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U timbre -d timbre"]
interval: 5s
timeout: 5s
retries: 10
volumes:
db-data:
Quick Start
Usage
Contributing
License
Timbre is free software, licensed under the GNU AGPLv3. The full text is in LICENSE.
Contributions are accepted under the same license.
Acknowledgments
Timbre stands on other people's work.
Gabirel Wyner, whose book Fluent Forever is the sole reason this project exists. Every steps of the timbre workflow comes from this book. If Timbre is useful to you and you want to understand why it works, please read the book.
FSRS and the open-spaced-repetition community, for the scheduling algorithms. Timbre implements FSRS-6, which was not deisgn by us.
Anki, for two decades of prior art. The note / note type / card / deck model Timbre uses is Anki's.
Forvo, for pronunciations recorded by native speakers, which is what makes audio cards worth doing at all.
Timbre is an independent project. It is inspired by the Fluent Forever method but is not affiliated with, endorsed by, or connected to Fluent Forever Inc. or its app. "Fluent Forever" is their trademark.