vault backup: 2025-12-21 14:40:49
All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m44s
All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m44s
This commit is contained in:
9
content/.obsidian/workspace.json
vendored
9
content/.obsidian/workspace.json
vendored
@@ -13,13 +13,13 @@
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Anatomi & Histologi 2/Gamla tentor/2022-01-15/1.md",
|
||||
"file": "Anatomi & Histologi 2/Schema.md",
|
||||
"mode": "source",
|
||||
"source": true,
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "1"
|
||||
"title": "Schema"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -213,9 +213,10 @@
|
||||
},
|
||||
"active": "baa45c5e57825965",
|
||||
"lastOpenFiles": [
|
||||
"z-Tech/Quiz-app.md",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2022-01-15/1.md",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2022-01-15/!2022-01-15-0032-BWD.pdf",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2022-01-15/!2022-01-15-0032-BWD.md",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2022-01-15/1.md",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2025-06-03/24.md",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2025-06-03/25.md",
|
||||
"Anatomi & Histologi 2/Gamla tentor/2025-06-03/30.md",
|
||||
|
||||
69
content/z-Tech/Quiz-app.md
Normal file
69
content/z-Tech/Quiz-app.md
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
Här är en sammanfattning av arkitekturen och besluten vi spikat, redo att användas som specifikation när du börjar koda.
|
||||
|
||||
### 1. Teknikstack
|
||||
|
||||
* **Backend:** Django (Micro-framework stil, allt i en fil).
|
||||
* **Databas:** SQLite (med WAL-mode aktiverat för prestanda).
|
||||
* **Frontend:** Django Templates + **HTMX** (för SPA-känsla utan build-steg).
|
||||
* **Server:** Gunicorn (kör appen) bakom **Caddy** (hanterar HTTPS och statiska filer).
|
||||
### 2. Filstruktur & Setup
|
||||
|
||||
Projektet består primärt av **en enda Python-fil** (`quiz.py`) som innehåller:
|
||||
|
||||
* Django Settings.
|
||||
* Modeller (`User`, `Question`, `Option`, `QuizResult`).
|
||||
* Vyer & URLs.
|
||||
* HTML-templates (som skrivs till disk vid start).
|
||||
* Import-logik.
|
||||
|
||||
**Mappstruktur:**
|
||||
```text
|
||||
/
|
||||
├── quiz.py # Hela applikationen
|
||||
├── db.sqlite3 # Databasen
|
||||
└── static/ # Genereras av collectstatic
|
||||
|
||||
```
|
||||
|
||||
Gamla Tentor/YYYY-mm-dd/nn.md från obsidian
|
||||
### 3. Nyckelfunktioner
|
||||
|
||||
#### A. Dataimport (Markdown)
|
||||
* **Källa:** Läser `.md`-filer från `import_folder`.
|
||||
* **Trigg:** Sker automatiskt i `AppConfig.ready()` när servern startar.
|
||||
* **Logik:** Använder filsökvägen som ID för att uppdatera frågor snarare än att skapa dubbletter.
|
||||
|
||||
#### B. Användare (Lazy Auth)
|
||||
* Ingen inloggningsskärm.
|
||||
* **Middleware:** Skapar automatiskt en osynlig `User` och loggar in besökaren om de är anonyma.
|
||||
|
||||
#### C. Quiz-flöde
|
||||
* Sidan laddas inte om.
|
||||
* `index.html` startar quizet.
|
||||
* Svar skickas via HTMX (`hx-post`) -> Servern validerar -> Returnerar nästa fråga (`partials/question.html`) som byts ut i DOM:en.
|
||||
|
||||
### 4. Deployment & Drift
|
||||
#### Gitea Action (Deploy)
|
||||
Ingen `pm2`. Vi dödar och startar om processen med enkla shell-kommandon:
|
||||
```bash
|
||||
pkill -f "gunicorn quiz:application" || true
|
||||
nohup gunicorn quiz:application --workers 3 --bind 127.0.0.1:8000 > app.log 2>&1 &
|
||||
|
||||
```
|
||||
#### Caddy (Reverse Proxy)
|
||||
Hanterar SSL och avlastar Python från att servera statiska filer.
|
||||
```caddy
|
||||
din-domän.se {
|
||||
root * /sökväg/till/static
|
||||
file_server /static/*
|
||||
reverse_proxy 127.0.0.1:8000
|
||||
}
|
||||
|
||||
```
|
||||
#### Databassäkerhet
|
||||
För att undvika "Database locked" vid omstarter/concurrent writes:
|
||||
```sql
|
||||
PRAGMA journal_mode = WAL;
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user