A Telegram bot built with NestJS to help you manage tasks, track focus time, and receive smart reminders.
Taskly Bot is a productivity-focused Telegram bot that helps users:
- Manage daily tasks
- Track working sessions
- Receive focus / break / half-time notifications
- View daily activity reports
- Control reminders through user settings
The bot is built with a modular NestJS structure and uses config-driven scheduling for time-based notifications.
- Add, edit, and delete tasks
- Start and end task sessions
- Prevent multiple active tasks at the same time
- Friendly inline/clickable buttons for all interactions
- Track working sessions per task
- Automatically calculate duration
- Automatically forceโcloses sessions at the end of the day
- Daily task report
- Session breakdown per task
- Total working time per day
- Daily reminders
- Focus / Break / Half-time alerts (configurable)
- User-controlled settings (on/off)
- Enable / disable reminders
- Enable / disable focus alerts
- Set preferred language (Persian ๐ฎ๐ท or English ๐ฌ๐ง)
- Language changes reflected instantly thanks to internal caching
- Designed for future extensibility
- Full Persian & English translations
- Automatic loading + caching of user language
- New default behavior:
- Existing users default to Persian
- New users default to English
Taskly supports automatic time-block notifications such as:
- ๐ฏ Focus Time
- โ Break Time
- ๐ฝ๏ธ Half Time
Defined using a JSON configuration file and scheduled automatically.
Example:
[
{
"type": "Focus",
"startTime": "08:00:00",
"endTime": "09:00:00"
},
{
"type": "Break",
"startTime": "09:00:00",
"endTime": "09:15:00"
}
]- NestJS
- Telegram Bot API
- Prisma ORM
- PostgreSQL
- node-cron
- TypeScript
git clone https://github.com/Sepehr-Aghdasi/taskly-bot.git
cd taskly-botnpm installCreate a .env file:
DATABASE_URL=postgresql://user:password@localhost:5432/taskly
TELEGRAM_TOKEN=your_telegram_bot_token
npx prisma generate
npx prisma migrate dev --name initOptional: GUI to view database content
npx prisma studionpm run start:devnpm run build
npm run start:prod/startinitializes the user- Button-based interactions for:
- Task creation
- Task list
- Daily report
- Settings
- All interactions are handled through inline keyboard buttons
Pull requests are welcome. Please keep commits clean and focused.
Built with โค๏ธ using NestJS