Operations
Same MariaDB `reminders` table as the Flask app. Edit here; open the public site when you are off the LAN.
| Title | Due | Priority | Repeat | |
|---|---|---|---|---|
|
My Test 5 PM
My Test
|
May 7, 2026 8:00 AM | Normal | 1 | |
|
rv refund M&T Bank
rv refund
|
May 6, 2026 8:00 AM | Normal | 0 | |
|
Ciara put on blog
Ciara put on blog
|
May 6, 2026 8:00 AM | Normal | 0 | |
|
Flask shopping list
Flask shopping list
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Wisperflow
https://github.com/dimastatz/whisper-flow
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
MariaDB Ellas
database ellas_alterations User ella_user
CREATE USER 'ella_user'@'localhost' IDENTIFIED BY 'Dfsipc12!'; GRANT ALL PRIVILEGES ON ellas_alterations.* TO 'ella_user'@'localhost'; FLUSH PRIVILEGES; sudo mysql -u root -e "ALTER USER 'ella_user'@'localhost' IDENTIFIED BY 'Dfsipc12!'; FLUSH PRIVILEGES;" sudo mysql -u root -e "ALTER USER 'ella_user'@'localhost' IDENTIFIED BY 'EllaReminders2024!'; FLUSH PRIVILEGES;" cat > /tmp/dbtest.py << 'EOF' import pymysql try: conn = pymysql.connect( host='localhost', user='ella_user', password='EllaReminders2024!', database='ellas_alterations' ) print('DB connection OK') conn.close() except Exception as e: print(f'DB connection FAILED: {e}') EOF venv/bin/python /tmp/dbtest.py The << 'EOF' (with quotes around EOF) tells bash to treat everything inside literally and not expand the !. Once that prints DB connection OK you're good to start the app: bashcd ~/reminders nohup venv/bin/python app.py > flask.log 2>&1 & echo "Started! Visit http://$(hostname -I | awk '{print $1}'):5000" Sonnet 4.6Extended -- ============================================================ -- Ella's Alterations – Database Setup (v2) -- Run: sudo mysql -u root < setup.sql -- ============================================================ CREATE DATABASE IF NOT EXISTS ellas_alterations CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE ellas_alterations; -- App user CREATE USER IF NOT EXISTS 'ella_user'@'localhost' IDENTIFIED BY 'EllaReminders2024!'; GRANT ALL PRIVILEGES ON ellas_alterations.* TO 'ella_user'@'localhost'; FLUSH PRIVILEGES; -- ── Users ──────────────────────────────────────────────── CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, password_hash VARCHAR(64) NOT NULL, active TINYINT(1) NOT NULL DEFAULT 1, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ── Reminders ──────────────────────────────────────────── CREATE TABLE IF NOT EXISTS reminders ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, item VARCHAR(255) NOT NULL, description TEXT, `repeat` INT UNSIGNED NOT NULL DEFAULT 1, DueDate DATETIME DEFAULT NULL, completed TINYINT(1) NOT NULL DEFAULT 0, -- NEW: soft-complete priority ENUM('Low','Normal','High') NOT NULL DEFAULT 'Normal', -- NEW last_notified DATETIME DEFAULT NULL, -- NEW: tracks last notification created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), INDEX idx_duedate (DueDate), INDEX idx_completed (completed) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ── Notification log ───────────────────────────────────── -- NEW: permanent history of every notification sent CREATE TABLE IF NOT EXISTS notification_log ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, reminder_id INT UNSIGNED NOT NULL, sent_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, channel VARCHAR(50) NOT NULL DEFAULT 'telegram', message TEXT, success TINYINT(1) NOT NULL DEFAULT 1, PRIMARY KEY (id), INDEX idx_reminder (reminder_id), INDEX idx_sent (sent_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ── Settings ───────────────────────────────────────────── CREATE TABLE IF NOT EXISTS settings ( `key` VARCHAR(100) NOT NULL, value TEXT, label VARCHAR(200) DEFAULT NULL, hint VARCHAR(500) DEFAULT NULL, sort_order INT NOT NULL DEFAULT 99, PRIMARY KEY (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- ── Seed settings ──────────────────────────────────────── INSERT INTO settings (`key`, value, label, hint, sort_order) VALUES ('app_name', "Ella's Alterations – Reminders", 'Application Name', 'Displayed in the browser title and header', 1), ('default_repeat_days', '1', 'Default Repeat (days)', '1 = Daily. 7 = Weekly. 0 = No repeat.', 2), ('default_notification_time', '08:00', 'Default Notification Time', 'Time of day (HH:MM, 24h) used when rescheduling repeat reminders', 3), ('notification_lookahead_hours','1', 'Notification Lookahead (hours)', 'How many hours ahead the scheduler looks. Keep at 1 to match hourly cron.', 4), ('catchup_hours', '24', 'Catch-up Window (hours)', 'How many hours back to look for missed reminders (e.g. if server was down). Set 0 to disable.', 5), ('timezone', 'America/New_York', 'Timezone', 'pytz timezone name used throughout the app. e.g. America/New_York, Europe/London, Australia/Sydney', 6), ('flask_port', '5000', 'Flask Port', 'Port the web app listens on. Restart the app after changing.', 7), ('telegram_token', '', 'Telegram Bot Token', 'From @BotFather on Telegram. Format: 1234567890:ABCdef…', 8), ('telegram_chat_id', '', 'Telegram Chat ID', 'Your personal chat ID – get it from @userinfobot on Telegram', 9) ON DUPLICATE KEY UPDATE label=VALUES(label), hint=VALUES(hint), sort_order=VALUES(sort_order); -- ── Seed admin user ────────────────────────────────────── INSERT INTO users (name, email, password_hash, active) VALUES ('Ella', 'peterdixon5775@outlook.com', SHA2('Dfsipc12!', 256), 1) ON DUPLICATE KEY UPDATE password_hash=SHA2('Dfsipc12!', 256), active=1; -- ── Migration: add new columns to existing installs ────── -- Safe to run even if columns already exist (IF NOT EXISTS syntax) ALTER TABLE reminders ADD COLUMN IF NOT EXISTS completed TINYINT(1) NOT NULL DEFAULT 0 AFTER DueDate, ADD COLUMN IF NOT EXISTS priority ENUM('Low','Normal','High') NOT NULL DEFAULT 'Normal' AFTER completed, ADD COLUMN IF NOT EXISTS last_notified DATETIME DEFAULT NULL AFTER priority; |
Feb 28, 2026 8:00 AM | Normal | 0 | |
|
OpenClaw
Install OpenClaw on 143
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Claude email
Claude Prompts for Offline Side Jobs
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
ArtWork
Approve artwork - approved need to put on website
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Umami Fixes
Umami report and duckdb report and interface
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Internxt
Internxt Ella box rclone
|
May 6, 2026 8:00 AM | Normal | 0 | |
|
LUXLife
finish LUXlife
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Ellas Flask
Start Creating tables with flask on ssh kefa@192.168.7.202 database ellas_alterations User ella_user to be able to migrate everything
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Sayidoapp
Sayidoapp
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Post
A Tailor’s Guide What Is The Head to Toe Suit Overview
|
Apr 11, 2026 8:00 AM | Normal | 0 | |
|
Email Reviews
Print out Email Reviews
|
Apr 11, 2026 8:00 AM | Normal | 0 |