A Telegram English learning bot β study irregular verbs, build your word list, and translate on the go.
π Prerequisites: Go 1.21+, PostgreSQL 17+, Docker Desktop, Telegram Bot Token (from @BotFather)
# 1. π₯ Clone
git clone https://github.com/Sunagatov/Yulia-Lingo.git && cd Yulia-Lingo
# 2. π§ Fill in your credentials
# edit TELEGRAM_BOT_TOKEN and POSTGRESQL_PASSWORD in .env# Start only PostgreSQL
docker compose up -d postgresThen run the app from the terminal:
go run cmd/app/main.godocker compose up -d --buildProduction:
# Fill in .env.prod, then:
docker compose -f docker-compose.prod.yml up -d --buildπ§ͺ Run the tests:
go test ./...Yulia Lingo is a Telegram bot that helps you learn English interactively. Practice irregular verbs with quizzes, build a personal vocabulary list, and get instant word translations β all without leaving Telegram.
| π Category | π§ Technology |
|---|---|
| π» Language | Go 1.21 |
| ποΈ Database | PostgreSQL 17 |
| π€ Telegram | go-telegram-bot-api v5 |
| π Logging | Logrus (structured JSON) |
| π’ Deployment | Docker (multi-stage build) |
| Feature | Description | Spec |
|---|---|---|
| π Irregular Verbs | Browsable reference list of 295 verbs organized by letter | docs/features/irregular-verbs.md |
| π My Word List | Save, browse, filter, and rate your personal vocabulary | docs/features/my-word-list.md |
| π·οΈ Browse Mode | Explore words by Category, Letter, POS, Confidence, or Date with smart filters | docs/features/browse-mode-design.md |
| π€ AI Categorization | Auto-categorize words with OpenAI (Azure AI compatible) | - |
| π Translate | Instant word translation with multiple meanings and auto-save | docs/features/translate.md |
| π Language | Switch between English and Russian interface | docs/features/language.md |
Each feature has a comprehensive spec covering user stories, functional requirements, bot flows, data models, security, and acceptance criteria.
| π― Command | π Description |
|---|---|
/start |
Welcome message and main menu |
/irregular_verbs |
Start irregular verbs practice |
/my_word_list |
View and manage your word list |
/translate |
Translate a word |
/cancel |
Cancel the current operation |
cmd/app/ # Application entry point
internal/
βββ config/ # Environment-based configuration
βββ database/ # PostgreSQL connection and pooling
βββ logger/ # Structured logging
βββ telegram/ # Bot setup and update routing
β βββ handlers/ # Command and callback handlers
βββ irregular_verbs/ # Irregular verbs domain
βββ my_word_list/ # Personal word list domain
βββ translate/ # Translation service
βββ util/ # Shared utilities
| Variable | Required | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN |
β | Token from @BotFather |
POSTGRESQL_PASSWORD |
β | Database password |
POSTGRESQL_HOST |
β | Defaults to localhost |
POSTGRESQL_PORT |
β | Defaults to 5432 |
POSTGRESQL_USER |
β | Defaults to postgres |
POSTGRESQL_DATABASE_NAME |
β | Defaults to yulia_lingo |
LOG_LEVEL |
β | debug, info, warn, error |
IRREGULAR_VERBS_FILE_PATH |
β | Path to irregular verbs Excel file |
OPENAI_API_KEY |
β | OpenAI/Azure AI API key for categorization |
OPENAI_API_URL |
β | API endpoint (default: OpenAI, supports Azure AI) |
OPENAI_MODEL |
β | Model name (default: gpt-4o-mini) |
OPENAI_MAX_CALLS_PER_USER_DAY |
β | Daily AI limit per user (default: 50) |
OPENAI_MAX_CALLS_PER_USER_HOUR |
β | Hourly AI limit per user (default: 10) |
OPENAI_MAX_CALLS_GLOBAL_DAY |
β | Global daily AI limit (default: 500) |
See .env for local defaults and .env.prod for the production template.
π Contributions are welcome.
| π― Situation | π Action |
|---|---|
| π Found a bug | Open an issue with the bug label |
| π‘ Want a feature | Start a Discussion first |
| π¨βπ» Ready to code | Pick a good first issue, comment "I'm on it" |
| π§ Big change | Comment on the issue before writing code β tickets may have hidden constraints |
π CC BY-NC 4.0 β free for educational and personal use with author attribution. Commercial use requires explicit written permission from the author ([email protected]).
- π¬ Telegram community: Zufar Explained IT
- π€ Personal Telegram: @lucky_1uck
- π§ Email: [email protected]
- π Issues: GitHub Issues
β€οΈ