Shopkeep is a Discord bot that integrates with the Etsy API to deliver shop notifications and shop insights directly into a Discord server.
- 📦 Real-time Etsy order notifications
- 💬 Discord slash commands for shop info
- 📊 Basic shop statistics and metrics
- 🗄️ Optional data storage for orders and shop data
- Python — backend and bot logic
- discord.py — Discord API integration
- Etsy API — shop, order, and listing data
- Docker — containerized development
- Tilt — local container orchestration
- PostgreSQL — data persistence
🚧 Early development Initial work is focused on Etsy API integration and Discord notifications for the MVP.
Shopkeep is not affiliated with or endorsed by Etsy or Discord. This project is for educational use.
- Python 3.10+
- Task - Task runner
- Discord Bot Token (Get one here)
- OR Docker & Tilt (for containerized development)
-
Clone the repository:
git clone <your-repo-url> cd shopkeep
-
Set up environment variables: Create a
.envfile in the project root:DISCORD_BOT_TOKEN=your_discord_bot_token_here
-
Start Tilt:
tilt up
This will:
- Build the Docker image
- Deploy the bot
- Watch for file changes and auto-reload
- Open the Tilt UI in your browser
-
View logs:
- Use the Tilt UI (opens automatically)
- Or press
spacein the terminal to open the UI
-
Stop Tilt:
- Press
Ctrl+Cin the terminal - Or run:
tilt down
- Press
-
Clone the repository:
git clone <your-repo-url> cd shopkeep
-
Install dependencies:
task install-dev
-
Set up environment variables: Create a
.envfile in the project root:DISCORD_BOT_TOKEN=your_discord_bot_token_here
-
Install pre-commit hooks:
task setup-hooks
python -m src.bot.discord_botOr use the task runner:
task runView all available tasks:
task helpCommon commands:
task install-dev- Install all dependenciestask format- Auto-format code (ruff + black)task lint- Run all linterstask pre-commit- Run pre-commit on all filestask run- Run the Discord bottask clean- Clean Python cache files
This project uses:
- ruff - Fast Python linter (replaces flake8, isort, and more)
- black - Code formatting
- mypy - Type checking
- pre-commit - Git hooks for automatic checks
Pre-commit hooks run automatically on git commit. To run manually:
task lintMadison Webb