Elektronické hlasovanie, nástenka a správa vlastníkov pre slovenské bytové spoločenstvá. V súlade so zákonom č. 182/1993 Z.z. Zadarmo, bez predplatného, plne pod vašou kontrolou.
Navrhnuté pre slovenské právne prostredie, prístupné pre každého – aj pre dôchodcov.
Tri metódy hlasovania podľa § 14 zákona 182/1993 Z.z.: podľa podielu, podľa bytov, podľa plochy. Tri typy kvóra (nadpolovičná väčšina prítomných, všetkých, 2/3 všetkých). Každý hlas je auditovaný SHA-256 hashom.
Sčítač zadá hlas za dôchodcu, priloží foto lístka. Vlastník dostane email s potvrdením.
Splnomocnenie s úradne overeným podpisom podľa § 14 ods. 5. Vlastník deleguje hlas susedovi pre konkrétne hlasovanie. Reťazové mandáty nie sú povolené.
Oznamy, udalosti, opravy. Možnosť cieliť na konkrétny vchod. 4 kategórie: info, náliehavé, udalosť, údržba.
Jedno spoločenstvo, viacero vchodov. Každý byt má definovaný spoluvlastnícky podiel a plochu.
Po hlasovaní automaticky vygenerovaná zápisnica s audit logom a QR kódom. Predseda ju podpíše fyzicky.
Hlasovací modul je navrhnutý podľa zákona o vlastníctve bytov a nebytových priestorov v znení neskorších predpisov.
| Požiadavka zákona | Status |
|---|---|
| Hlasovanie podľa spoluvlastníckeho podielu | ✅ |
| Nadpolovičná väčšina všetkých vlastníkov | ✅ |
| Dvojtretinová väčšina všetkých vlastníkov | ✅ |
| Písomné hlasovanie (per rollam) | ✅ |
| Hlasovanie na schôdzi (len papierové hlasy) | ✅ |
| Splnomocnenie s úradne overeným podpisom | ✅ |
| Zákaz reťazenia splnomocnení | ✅ |
| Hlasovanie iniciované ¼ vlastníkov | ✅ |
| Overovateľ hlasovania | ✅ |
| Auditný záznam (SHA-256 + email) | ✅ |
| Nájomníci nemajú hlasovacie právo | ✅ |
| Zápisnica z hlasovania (PDF) | ✅ |
Každý vidí len to, čo mu patrí. Roly sú pridelené správcom bytovky.
Ovežené technológie, ktoré vám uľahčia deploy aj príspevky.
Na spustenie OpenResiApp potrebuješ:
ipk0/open-resiapp je dostupný na Docker Hub. Podporuje linux/amd64 a linux/arm64.
mkdir open-resiapp && cd open-resiapp
Ulož nasledovný obsah ako docker-compose.yml:
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: resiapp
POSTGRES_USER: postgres
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
app:
image: ipk0/open-resiapp:latest
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/resiapp
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_URL: ${APP_URL}
AUTH_TRUST_HOST: "true"
APP_NAME: ${APP_NAME:-Bytove spolocenstvo}
LANGUAGE: ${LANGUAGE:-sk}
volumes:
- uploads:/app/uploads
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- caddy_data:/data
depends_on:
- app
command: caddy reverse-proxy --from ${APP_DOMAIN} --to app:3000
volumes:
postgres_data:
uploads:
caddy_data:
Vytvor súbor .env s týmito hodnotami:
APP_NAME="Bytove spolocenstvo Hlavna 12"
APP_URL=https://yourdomain.sk
APP_DOMAIN=yourdomain.sk
POSTGRES_PASSWORD=changeMe_veryLongPassword123
NEXTAUTH_SECRET=changeMe_anotherRandomString456
# Generate secrets: openssl rand -base64 32
docker compose up -d
Docker automaticky stiahne obrazy z Docker Hub, vytvorí databázu a spustí app. Migrácie sa spustia automaticky.
Otvor súbor .env a uprav nasledovné hodnoty:
APP_NAME="Bytove spolocenstvo Hlavna 12"
APP_URL=https://yourdomain.sk
APP_DOMAIN=yourdomain.sk
POSTGRES_PASSWORD=changeMe_veryLongPassword123
NEXTAUTH_SECRET=changeMe_anotherRandomString456
# Generate secrets: openssl rand -base64 32
.env a nedávaj ho do Gitu. Súbor .gitignore ho automaticky vylučuje.
Po spustení overte, že všetko beží:
docker compose ps
Všetky tri služby (app, db, caddy) musia mať status Up.
Otvor prehliadač na http://localhost:3000 – uvidíš prihlasovací formulár.
Pre rýchle otestovanie môžeš načítať ukážkové dáta:
docker compose exec app npm run db:seed
Toto vytvorí testovacích vlastníkov, byty a jedno aktívne hlasovanie. Prihlasovacie údaje admina:
Email: admin@test.sk
Heslo: Admin123!
Uprav .env:
APP_URL=https://bytovka.mojadomena.sk
APP_DOMAIN=bytovka.mojadomena.sk
Nastav DNS A záznam tvojej domény na IP adresu servera:
bytovka.mojadomena.sk. A 1.2.3.4
DNS zmeny sa môžu šíriť 5–60 minút.
OpenResiApp používa Caddy ako reverse proxy, ktorý automaticky zaobstará a obnovuje SSL certifikát cez Let's Encrypt. Nemusíš nič ručne nastavovať.
Po nastavení domény reštartuj stack:
docker compose down
docker compose up -d
Všetky dáta sú v PostgreSQL databáze a v priečinku uploads/. Odporúčame zálohovať denne.
docker compose exec db pg_dump -U postgres resiapp | gzip > backup_$(date +%Y%m%d).sql.gz
Pridaj do cronu pre denné zálohy:
(crontab -l 2>/dev/null; echo "0 3 * * * cd /path/to/project && docker compose exec -T db pg_dump -U postgres resiapp | gzip > /backups/resiapp_\$(date +\%Y\%m\%d).sql.gz") | crontab -
gunzip < backup_20260309.sql.gz | docker compose exec -T db psql -U postgres resiapp
Aktualizácia je jednoduchá – nové migrácie sa spustia automaticky pri štarte.
docker compose pull
docker compose up -d
Toto stiahne najnovší Docker image a reštartuje app. Migrácie databázy sa spustia automaticky – žiadne manuálne kroky.
Pri prvom spustení v produkcii vytvor admin účet cez príkazový riadok:
docker compose exec app \
npx tsx src/scripts/create-admin.ts \
--email predseda@bytovka.sk \
--name "Ján Novák"
Príkaz vytlačí dočasné heslo. Po prvom prihlásení si ho zmeň v nastaveníach.
Po prihlásení ako admin:
Ako admin choď do Hlasovanie → Nové hlasovanie:
Všetkým vlastníkom príde email s odkazom. Výsledky sú viditeľné v reálnom čase. Po skončení môžeš vygenerovať PDF zápisnicu.