Service layer for category feature (Issue #86): Category Management: - add_category() - Create category (admin only, validates slug format) - delete_category() - Soft delete category (admin only) - list_categories() - List active categories - get_category() - Get category by slug Category-to-Bounty Association: - add_category_to_bounty() - Add category to bounty (admin only) - remove_category_from_bounty() - Remove category from bounty (admin only) - update_bounty_categories() - Replace all categories on bounty (admin only) All methods properly validate permissions, slug format, and existence. Soft delete preserves category data for bounties that reference it.
JIGAIDO
Named after Nanami Kento's Cursed Technique restriction. Suppresses power during normal hours, exerts it during overtime.
A bounty tracking platform. Currently ships with a Telegram bot for managing and tracking bounties in groups and DMs.
Apps
- Telegram Bot — Group and personal bounty tracking via Telegram commands, with due date reminders
Overview
- Group bounties: Each Telegram group has its own bounty list
- Personal bounties: Private DM bounty list for individuals
- Admin-only posting: Only group admins can add/update/delete bounties
- Universal tracking: Any member can track bounties to their personal list
- Due date reminders: Daily cron notifies users when bounties are due within 7 days
- Free-form dates: Natural language due dates (
"tomorrow","in 3 days","april 15") - Link deduplication: No duplicate links within the same group
Project Structure
jigaido/
├── core/ # Domain layer (pure Python, no external deps)
│ ├── models.py # Domain dataclasses (Bounty, Tracking)
│ ├── ports.py # Port interfaces
│ └── services.py # Domain services
├── adapters/ # Infrastructure adapters
│ └── storage/
│ └── json_file.py # JSON file storage implementation
├── apps/
│ └── telegram-bot/ # Telegram bot CLI application
│ ├── bot.py # Bot entry point
│ └── commands.py # Command handlers
├── tests/ # Unit tests
├── config.py # Configuration management
└── SPEC.md # Full design specification
Quick Start
# Install dependencies
pip install -r apps/telegram-bot/requirements.txt
# Set bot token
export JIGAIDO_BOT_TOKEN="your_bot_token"
# Run bot
python -m apps.telegram-bot.bot
License
MIT
Description
Bounty tracker powered by Telegram — Nanami-style cursed technique for tracking obligations and overtime.
Languages
Python
99.1%
Shell
0.9%