f4eea48e4d8c53c09d3aabc9a9b74bc5eac8a289
Website Checker — Desktop App
A Tkinter-based desktop application for shift-based website monitoring, backed by a remote MySQL database.
Project Structure
website_checker/
├── app.py ← Entry point & main application shell
├── config.py ← DB config, connection pool, schema init
├── models.py ← All database access (CRUD + logging)
├── requirements.txt
├── utils/
│ └── ui_helpers.py ← Theme, colour constants, reusable widgets
└── views/
├── login_view.py ← Login screen
├── admin_users_view.py ← Admin: User Management
├── admin_websites_view.py ← Admin: Website Link Management
├── admin_log_view.py ← Admin: Activity Log
└── user_dashboard_view.py ← User: Shift Checklist Dashboard
Prerequisites
- Python 3.9 or newer (must include Tkinter — standard on Windows/macOS)
- A remote MySQL 5.7+ / MariaDB 10.3+ server
- The database and a user with CREATE / INSERT / UPDATE / DELETE privileges
Setup Instructions
1. Install Python dependencies
pip install -r requirements.txt
2. Configure the database connection
Open config.py and update the DB_CONFIG dictionary:
DB_CONFIG = {
"host": "your-mysql-host", # ← change this
"port": 3306,
"database": "website_checker", # ← create this DB first
"user": "your-db-user", # ← change this
"password": "your-db-password", # ← change this
}
Important: Create the database on your MySQL server first:
CREATE DATABASE website_checker CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. Run the application
python app.py
On first launch, the app automatically creates all required tables and seeds a default admin account:
| Field | Value |
|---|---|
| Username | admin |
| Password | admin123 |
Change the admin password immediately after first login.
Feature Overview
Admin Role
| Feature | Description |
|---|---|
| User Management | Create, edit, deactivate, and delete users; assign admin or regular role |
| Website Management | Add sites with name, URL, multiple login credentials, and notes |
| Activity Log | View a chronological audit trail of all create/edit/delete/login events |
| Shift Dashboard | Admins can also use the shift checklist like regular users |
Regular User Role
| Feature | Description |
|---|---|
| Login | Secure username/password login |
| Shift Checklist | See all active websites; click URL to open in browser; check off each site |
| Credentials Popup | Clicking a site shows its stored login credentials with a password reveal toggle |
| Notes | Write or update a per-site note for each shift day |
| Progress Bar | Visual indicator of how many sites have been checked this shift |
Activity Logging
Every significant action is recorded in the activity_log table:
| Action | Trigger |
|---|---|
LOGIN / LOGOUT |
User authentication events |
CREATE_USER |
Admin creates a new user |
UPDATE_USER |
Admin edits a user |
DELETE_USER |
Admin deletes a user |
CREATE_WEBSITE |
Admin adds a website |
UPDATE_WEBSITE |
Admin edits a website |
DELETE_WEBSITE |
Admin soft-deletes a website |
CHECK_WEBSITE |
User marks a website as checked |
UPDATE_NOTE |
User updates their shift note |
Logs are also written to app.log in the application directory.
Database Schema (auto-created on first run)
users— application accounts with role-based accesswebsites— monitored siteswebsite_credentials— multiple username/password pairs per siteshift_checks— one record per user per site per dayactivity_log— full audit trail
Notes
- Websites are soft-deleted (flagged inactive) to preserve historical check records.
- Passwords are stored as SHA-256 hashes. For production, consider upgrading to
bcrypt. - The connection pool size is set to 5; increase
pool_sizeinconfig.pyfor larger teams.
Languages
Python
100%