https://github.com/baqqer/Ugeplanen

OBS: Projektet er vibecoded

Ugeplanen er en letvægts opgaveplanlægger designet specielt til lokale netværk.

Projektet er født ud af et ønske om at skabe et lynhurtigt og fuldstændigt selvstændigt system uden unødvendige tunge JavaScript-frameworks eller komplekse databaser. Hele applikationen kompileres til én enkelt binær fil, som kører uden eksterne afhængigheder og gemmer alt lokalt i en simpel JSON-fil.

ugeplanen


Teknologistak

Ugeplanen er bygget med fokus på minimalisme, ydeevne og langtidsholdbar kode:

  • Backend: Skrevet i Go og anvender udelukkende standardbiblioteket.
    • net/http
    • html/template
    • encoding/json
  • Frontend: Ren Vanilla HTML, CSS og JavaScript.
    • Ingen tunge frameworks.
    • Asynkrone opdateringer klares med simpel AJAX (Fetch API) i JavaScript.
    • Rent og let-modificerbart design.
  • Database: En enkelt bærbar fil. Skrivninger foregår atomic for at forhindre korruption af data.

Nøglefunktioner

  • Skabelonsystem: Definer dine faste ugentlige rutiner (såsom pligter, madplan, fritidsaktiviteter eller lektier) én gang. Den aktive uge kan til enhver tid nulstilles tilbage til grundskabelonen.
  • Ad-hoc Opgaver: Tilføj engangsopgaver direkte på den ønskede ugedag. Disse kan oprettes, udføres eller slettes løbende og nulstilles automatisk, når en ny uge starter.
  • Dansk & Engelsk Sprogstøtte: Applikationen understøtter både dansk og engelsk. Sprogindstillingen gemmes i brugerens profil og opdaterer hele interfacet med det samme.
  • Optimeret til Mobil & Tablets:
    • Touch-venlig tilstand: Forstørrer tjekbokse og knapper for at imødekomme touch-brugere.
    • Tryk overalt på rækken: Markér eller afmærk nemt en opgave ved blot at trykke et vilkårligt sted på opgaven.
    • Automatisk mobillayout: Registrerer mobile enheder og stabler knapper lodret, så de er nemme at ramme med én hånd.
  • Automatisk Ugenulstilling: En valgfri indstilling, der automatisk detekterer skift i kalenderugen og automatisk ruller en ny uge på baseret på grundskabelonen.
  • Docker-understøttelse: Simpel Dockerfile.

Projektets Struktur

Projektet er struktureret fladt og overskueligt. Det skal være nemt at forstå, modificere og udvide:

ugeplanen/
├── main.go                 # Server, routing, API-endpoints og JSON-lagring
├── main_test.go            # Unittests og validering af rendering
├── plan.json               # JSON-database (genereres automatisk ved første kørsel)
├── templates/
│   ├── dashboard.html      # Det primære uge-dashboard og ugeoversigt
│   ├── settings.html       # Indstillinger (sprog, layout, touch-indstillinger)
│   └── manage_templates.html # Redigering af den faste ugentlige skabelon
└── static/
    ├── css/
    │   └── style.css       # Layout
    └── js/
        └── app.js          # Asynkron kommunikation med Go-API'et

Hvorfor Go Standardbiblioteket?

Ved udelukkende at benytte standardbiblioteket opnår Ugeplanen nogle unikke fordele. For det første starter serveren op på under et millisekund, og hele applikationen bruger under 15MB RAM. Derudover slipper man fuldstændigt for problemer med dependency rot eller sikkerhedssårbarheder i eksterne biblioteker over tid. Go er bare sejt nok i sig selv til at kunne levere komplette, moderne webapplikationer.