No description
  • Python 42.1%
  • HTML 41.6%
  • CSS 11.9%
  • JavaScript 3.7%
  • Dockerfile 0.7%
Find a file
2026-08-21 16:45:47 +02:00
backend prvý commit 2026-08-21 16:45:47 +02:00
frontend prvý commit 2026-08-21 16:45:47 +02:00
.dockerignore prvý commit 2026-08-21 16:45:47 +02:00
.env.example prvý commit 2026-08-21 16:45:47 +02:00
.gitignore prvý commit 2026-08-21 16:45:47 +02:00
docker-compose.yml prvý commit 2026-08-21 16:45:47 +02:00
Dockerfile prvý commit 2026-08-21 16:45:47 +02:00
README.md prvý commit 2026-08-21 16:45:47 +02:00

LPS Krokava webová aplikácia

Webová aplikácia Lesnej pasienkovej spoločnosti, pozemkového spoločenstva Krokava.

Štruktúra projektu

lps-krokava/
├── backend/                  # Python / FastAPI
│   ├── app/
│   │   ├── main.py           # vstupný bod (uvicorn app.main:app)
│   │   ├── database.py       # SQLite schéma + predvolený obsah
│   │   ├── auth.py           # JWT cookie, roly (vynútené na backende)
│   │   ├── routers/          # auth, content, documents, users, board
│   │   └── services/         # moderation (AI), mailer (Resend)
│   └── requirements.txt
├── frontend/                 # čisté HTML / CSS / JS (bez frameworku)
│   ├── index.html            # Domov
│   ├── novinky.html
│   ├── dokumenty.html
│   ├── valne-zhromazdenie.html
│   ├── kontakt.html
│   ├── prihlasenie.html      # prihlasovacia obrazovka
│   ├── dashboard.html        # dashboard člena (len čítanie + sťahovanie)
│   ├── admin.html            # administrácia superadmina
│   ├── css/styles.css
│   └── js/common.js
├── data/                     # SQLite databáza + nahrané súbory (Docker volume)
├── Dockerfile
├── docker-compose.yml        # port 8004
├── .env.example
└── README.md

Roly a oprávnenia

user (člen) superadmin
Prihlásenie e-mail + heslo (databáza) meno superadmin + heslo z .env
Verejný obsah
Dashboard: dokumenty na stiahnutie, nástenka, zmena vlastného hesla
Editácia čohokoľvek (API vráti 403)
Redakčný systém, dokumenty, viditeľnosť dokumentov
Správa účtov (vytváranie, editácia, heslá, odoberanie)
Odblokovanie príspevkov nástenky

Oprávnenia sú vynútené na úrovni backendu user nemá v API žiadnu možnosť editácie.

Funkcie

  • Verejná časť: Domov, Novinky, Dokumenty, Valné zhromaždenie, Kontakt
  • Dokumenty: superadmin pri každom dokumente rozhoduje, či je verejne viditeľný (aj pre neprihlásených) alebo len pre prihlásených prepínateľné jedným tlačidlom, kontrolované aj pri sťahovaní
  • Nástenka s AI moderáciou (Anthropic API): neslušné / od témy odbočujúce príspevky dostanú upozornenie a sú zablokované; odblokovať môže len superadmin
  • Správa používateľov (superadmin):
    • polia účtu: Meno, Priezvisko, e-mail, tel. číslo, poznámka
    • editácia účtu, zmena hesla s opakovaním nového hesla
    • tlačidlo „Znovu odoslať prístupové údaje" (vygeneruje nové heslo + e-mail)
    • import e-mailov z Excelu (.xlsx / .csv, adresy v ľubovoľnom stĺpci)
    • hromadné vygenerovanie účtov a odoslanie údajov na viacero e-mailov naraz
  • E-maily cez Resend API, databáza SQLite (pre ~50 účtov ideálna)

Nasadenie (Debian 12 + Docker, port 8004)

# 1. Skopírujte projekt na server a vytvorte konfiguráciu
cp .env.example .env
nano .env    # nastavte JWT_SECRET, SUPERADMIN_PASSWORD, ANTHROPIC_API_KEY, RESEND_API_KEY, EMAIL_FROM, APP_URL

# 2. Zostavte a spustite
docker compose up -d --build

# 3. Aplikácia beží na http://SERVER:8004
docker ps    # kontajner lps_krokava, healthcheck /api/health

Dáta (databáza + nahrané dokumenty) sú v priečinku ./data zálohujte ho. Kontajner sa reštartuje automaticky (restart: unless-stopped).

Neskoršie nasadenie na doménu

V Caddyfile (už máte Caddy na portoch 80/443) pridajte:

lpskrokava.sk {
    reverse_proxy localhost:8004
}

a v .env zmeňte APP_URL=https://lpskrokava.sk + nastavte COOKIE_SECURE=1 a FORWARDED_ALLOW_IPS (IP Docker brány aby ochrana prihlásenia videla skutočné IP návštevníkov), potom docker compose up -d --build.

Lokálny vývoj (bez Dockera)

python3 -m venv .venv
.venv/bin/pip install -r backend/requirements.txt
cp .env.example .env    # doplňte hodnoty
cd backend && ../.venv/bin/uvicorn app.main:app --reload --port 8004
# otvorte http://localhost:8004

Prvé kroky po spustení

  1. Otvorte http://SERVER:8004/prihlasenie.html
  2. Prihláste sa ako superadmin (heslo z .env)
  3. Administrácia → Používatelia: vytvorte účty členov (jednotlivo alebo importom z Excelu) prístupové údaje im prídu e-mailom
  4. Administrácia → Obsah stránok / Novinky / Dokumenty: naplňte obsah

Poznámky

  • Hero fotografia: frontend/hero.png (vygenerovaná cez Higgsfield / Nano Banana Pro). Bez nej sa zobrazí zelený gradient. Ikony kariet sú v frontend/icons/.
  • Bez ANTHROPIC_API_KEY je moderácia vypnutá (príspevky prejdú bez kontroly). Pri výpadku API sa príspevky pozdržia na schválenie superadminom.
  • Bez RESEND_API_KEY sa účty vytvoria, ale e-maily sa neodošlú administrácia to zreteľne oznámi pri každom účte.
  • Limity: dokument max. 20 MB, hromadný import max. 200 e-mailov, príspevok max. 2000 znakov.
  • „Znovu odoslať prístupové údaje" zmení heslo člena až po úspešnom odoslaní e-mailu pri zlyhaní odoslania zostáva pôvodné heslo platné.