Aquarium tracker for fishkeepers who care about their water.
Track water parameters, schedule maintenance, manage fish inventory, and monitor your aquarium's health — all from a clean, mobile-friendly interface.
- Water Parameters — Log temperature, pH, ammonia, nitrite, nitrate with timestamps and notes
- Charts — Visualize parameter trends over 7/30/90 days with multi-axis Chart.js graphs
- Scheduled Tasks — Recurring and one-time maintenance reminders
- Fish Inventory — Track species with held/planned counts, auto-fetched Wikipedia thumbnails and species info
- Maintenance Log — Record water changes, filter cleanings, equipment checks
- Multi-Aquarium — Manage multiple tanks from one account
- CSV Export — Export parameter data for external analysis
- PWA — Install as a standalone app on iOS/Android from the browser
- Slack Notifications — Optional DMs for due/overdue tasks and new task alerts
The UI features a dark ocean theme with animated bubbles, gradient accents, and a responsive layout that works great on phones.
- Backend: Python 3 / Flask / SQLAlchemy / PostgreSQL
- Frontend: Vanilla HTML/CSS/JS / Chart.js
- Auth: Flask-Login + bcrypt
- Deployment: Gunicorn + Nginx + systemd
- PWA: Service worker + Web App Manifest
- Python 3.10+
- PostgreSQL
# Clone
git clone https://github.com/rfcampbell/Waterscribe.git
cd Waterscribe
# Virtual environment
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Configure
cp .env.example .env
# Edit .env with your database credentials and secret key
# Database setup
createdb waterscribe
flask db upgrade
# Run
flask run# Install gunicorn
pip install gunicorn
# Run with gunicorn
gunicorn --workers 3 --bind 127.0.0.1:5000 wsgi:appSee deploy/ directory for nginx config and systemd service file examples.
Add SLACK_BOT_TOKEN and SLACK_NOTIFY_USER to your .env to enable:
- DM notifications when scheduled tasks are created
- Periodic due/overdue task alerts via
check_tasks.py(run via cron)
# Example crontab entry (8am, 12pm, 5pm)
0 8,12,17 * * * /path/to/venv/bin/python3 /path/to/check_tasks.py| Variable | Required | Description |
|---|---|---|
SECRET_KEY |
Yes | Flask session secret |
DATABASE_URL |
Yes | PostgreSQL connection string |
FLASK_ENV |
No | development or production |
SESSION_COOKIE_SECURE |
No | Set true for HTTPS |
SLACK_BOT_TOKEN |
No | Slack bot token for notifications |
SLACK_NOTIFY_USER |
No | Slack user ID for DM notifications |
MIT