Updated project-context.md

This commit is contained in:
Milan Martin Jäckel 2026-06-13 18:45:49 +02:00
parent f823028d17
commit a484f13e7d

View File

@ -417,6 +417,43 @@ admin / admin
--- ---
## Restart After Local Changes
If the app is running manually in a terminal:
1. Stop it with `Ctrl+C`.
2. Make changes or pull changes from Git.
3. Restart the app.
Local restart command:
```bash
.venv/bin/python run.py
```
If dependencies changed:
```bash
.venv/bin/pip install -r requirements.txt
```
If database tables changed:
```bash
.venv/bin/python scripts/init_db.py
```
Typical local update flow:
```bash
git pull
.venv/bin/pip install -r requirements.txt
.venv/bin/python scripts/init_db.py
.venv/bin/python run.py
```
---
## Run Tests ## Run Tests
Run: Run:
@ -557,6 +594,61 @@ The active SQLite database is intentionally not committed.
--- ---
## What To Commit To Git
Safe and expected to commit:
```text
app/
scripts/
tests/
app.py
run.py
requirements.txt
.gitignore
project-context.md
```
Also commit deletions/moves when files are refactored.
Current old paths that were replaced:
```text
init_db.py
templates/
static/
```
These old paths should remain deleted once the new `app/` package layout is committed.
---
## What Not To Commit
Keep these local only:
```text
.venv/
instance/
instance/questions.db
questions.db
.env
__pycache__/
.vscode/
.idea/
```
Reasons:
* `.venv/` is machine-specific.
* SQLite databases contain local runtime data.
* `.env` may contain secrets.
* cache/editor files are not project source.
Even with a self-hosted private Git server, avoid committing secrets.
---
# Future Admin Features # Future Admin Features
## Dashboard Version 2 ## Dashboard Version 2
@ -707,7 +799,119 @@ Potential providers:
# Future Raspberry Pi Deployment # Future Raspberry Pi Deployment
Not currently being worked on. Local Raspberry Pi testing is currently done manually on the home network.
The future goal is to run the app as a managed service with `systemd`, then later put it behind Gunicorn/Nginx for production.
---
## Raspberry Pi Local Network Test Setup
Install system dependencies:
```bash
sudo apt update
sudo apt install -y git python3 python3-venv
```
Clone the repo:
```bash
git clone <your-self-hosted-git-url> wyr
cd wyr
```
Create and install into a virtual environment:
```bash
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
```
Set local secrets and initialize the database:
```bash
export WYR_SECRET_KEY="$(python3 -c 'import secrets; print(secrets.token_hex(32))')"
export WYR_ADMIN_USERNAME="youradmin"
export WYR_ADMIN_PASSWORD="yourstrongpassword"
.venv/bin/python scripts/init_db.py
```
Run on the home LAN:
```bash
WYR_SECRET_KEY="$WYR_SECRET_KEY" .venv/bin/flask --app run run --host 0.0.0.0 --port 5000
```
Open from another device on the same network:
```text
http://<raspberry-pi-ip>:5000
```
Admin:
```text
http://<raspberry-pi-ip>:5000/admin/login
```
Do not port-forward this app to the public internet yet.
---
## Restart On The Pi During Manual Testing
If running manually in a terminal:
1. Press `Ctrl+C`.
2. Pull changes.
3. Install any dependency updates.
4. Run database setup if needed.
5. Start the app again.
Command sequence:
```bash
git pull
.venv/bin/pip install -r requirements.txt
.venv/bin/python scripts/init_db.py
WYR_SECRET_KEY="$WYR_SECRET_KEY" .venv/bin/flask --app run run --host 0.0.0.0 --port 5000
```
If the Pi reboots, manually `cd` back into the project and run the Flask command again.
This will become easier after adding `systemd`.
---
## Future Systemd Service
Future goal:
```bash
sudo systemctl start wyr
sudo systemctl stop wyr
sudo systemctl restart wyr
sudo systemctl status wyr
```
Benefits:
* app can start automatically after Pi reboot
* easier restart command
* logs can be viewed with `journalctl`
* app can run in the background without an open terminal
Example future log command:
```bash
journalctl -u wyr -f
```
This is not implemented yet.
---
Planned deployment stack: Planned deployment stack:
@ -741,6 +945,15 @@ On Pi:
```bash ```bash
git pull git pull
.venv/bin/pip install -r requirements.txt
.venv/bin/python scripts/init_db.py
```
Then manually restart the Flask command.
Later, after the `systemd` service exists, the Pi restart step will become:
```bash
sudo systemctl restart wyr sudo systemctl restart wyr
``` ```
@ -756,12 +969,36 @@ Local refactor and Admin Dashboard V1 are implemented.
## Next Step ## Next Step
Polish the admin flow and public UI: Add cooler layout and styling:
* improve the public voting page design
* improve the results page design
* improve admin dashboard styling
* make buttons, forms, and navigation feel more polished
* add better spacing, typography, and responsive layout
---
## After Styling
Polish the admin flow and public behavior:
* improve layout * improve layout
* add clearer success messages * add clearer success messages
* add better vote duplicate handling * add better vote duplicate handling
* improve the empty state when no question is scheduled for today * improve the empty state when no question is scheduled for today
* add CSRF protection before public internet exposure
---
## After Local Pi Testing
Implement:
* `systemd` service for easier Pi management
* automatic start on reboot
* clearer production environment variables
* basic log inspection workflow with `journalctl`
--- ---