Files
WebChecker/README.md
T
2026-04-21 17:16:37 -04:00

137 lines
4.1 KiB
Markdown

# 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
```bash
pip install -r requirements.txt
```
### 2. Configure the database connection
Open `config.py` and update the `DB_CONFIG` dictionary:
```python
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:
> ```sql
> CREATE DATABASE website_checker CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
> ```
### 3. Run the application
```bash
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 access
- `websites` — monitored sites
- `website_credentials` — multiple username/password pairs per site
- `shift_checks` — one record per user per site per day
- `activity_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_size` in `config.py` for larger teams.