Open Source · Self-hosted · Cloud · Docker Hub · § 182/1993 Z.z. · SK & CZ

Elektronické hlasovanie
a správa bytovky
pre ľudí, nie pre právnikov

Online hlasovanie vlastníkov bytov, nástenka, mandáty a PDF zápisnice pre SVB, bytové družstvá a české SVJ. Plus susedská komunita: burza, výpomoc, udalosti, adresár. V súlade so zákonom č. 182/1993 Z. z. Open-source, alebo cloud od 4 €/mes.

bash
# Stiahni a spusti – to je všetko
mkdir open-resiapp && cd open-resiapp
curl -O https://raw.githubusercontent.com/open-resiapp/open-resiapp/main/setup.sh
chmod +x setup.sh && ./setup.sh

Doména: dom.example.sk
Admin: admin@dom.example.sk
Pulling ipk0/open-resiapp:latest...
✓ Databáza pripravená
✓ Migrácie hotové
✓ Admin účet vytvorený
✓ App beží na https://dom.example.sk

Pre SVB, bytové družstvá aj české SVJ

Jedna platforma pre tri právne formy správy bytových domov – slovenské aj české.

🏛️

Spoločenstvá vlastníkov bytov (SVB)

Pre slovenské SVB podľa zákona č. 182/1993 Z. z. Elektronické hlasovanie podľa podielu, bytov alebo plochy. Tri typy kvóra. Mandáty s úradne overeným podpisom. Predseda + rada.

🏗️

Bytové družstvá

Pre družstevný sektor – členské schôdze, hlasovanie online aj na schôdzi, evidencia bytov a podielov, nájomcovia bez hlasovacieho práva, správca s prístupom k oznamom.

🇨🇿

Společenství vlastníků jednotek (SVJ)

Pro česká SVJ podle zákona č. 89/2012 Sb. Lokalizovaná terminologie (shromáždění, výbor), česká kvóra a hlasovací pravidla. Stejná aplikace, country config přepne kontext.

Všetko čo bytovka potrebuje

Hlasovanie, nástenka, mandáty, PDF zápisnice. Navrhnuté pre slovenské aj české právne prostredie, prístupné pre každého – aj pre dôchodcov.

🗳️

Váhované hlasovanie

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.

📄

Papierové hlasy

Sčítač zadá hlas za dôchodcu, priloží foto lístka. Vlastník dostane email s potvrdením.

✍️

Mandáty

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é.

📋

Nástenka

Oznamy, udalosti, opravy. Možnosť cieliť na konkrétny vchod. 4 kategórie: info, náliehavé, udalosť, údržba.

🏠

Viac vchodov

Jedno spoločenstvo, viacero vchodov. Každý byt má definovaný spoluvlastnícky podiel a plochu.

📊

Zápisnice PDF

Po hlasovaní automaticky vygenerovaná zápisnica s audit logom a QR kódom. Predseda ju podpíše fyzicky.

V súlade so zákonom č. 182/1993 Z.z.

Hlasovací modul je navrhnutý podľa zákona o vlastníctve bytov a nebytových priestorov v znení neskorších predpisov.

§ 14a ods. 1–2
Písomné hlasovanie (per rollam) aj hlasovanie na schôdzi
§ 14a ods. 4
Splnomocnenie s úradne overeným podpisom, bez reťazového delegovania
§ 14b ods. 1–2
Tri typy kvóra – nadpolovičná väčšina prítomných, všetkých vlastníkov, alebo 2/3 všetkých vlastníkov
§ 14 ods. 2
Tri metódy: podľa spoluvlastníckeho podielu, podľa bytov, podľa plochy
§ 14b ods. 5
Štvrtina vlastníkov môže iniciovať hlasovanie
SHA-256
Každý hlas auditovaný kryptografickým hashom s e-mailovým potvrdením

Súlad so zákonom

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)

Päť rolí, jasné hranice

Každý vidí len to, čo mu patrí. Roly sú pridelené správcom bytovky.

Admin / Predseda
  • Vytvára hlasovania
  • Spravuje vlastníkov a byty
  • Publikuje oznamy
  • Prideľuje roly
  • Generuje zápisnice
Vlastník
  • Hlasuje elektronicky
  • Udeľuje mandát
  • Vidí výsledky hlasovaní
  • Číta nástenku
  • Sťahuje dokumenty
Nájomca
  • Číta nástenku
  • Vidí dokumenty
  • Dostáva notifikácie
Sčítač hlasov
  • Zadáva papierové hlasy
  • Fotí hlasovací lístok
  • Rola platí len pre 1 hlasovanie
Správca
  • Číta nástenku
  • Vidí nastavenia budovy
  • Publikuje oznamy

Nielen správa, ale aj komunita susedov

Konkurencia rieši paragrafy. My riešime aj život v dome. Štyri sekcie pre sused-na-suseda interakciu – bez Facebooku, bez bazoša, bez cudzincov.

🛍️

Susedská burza

Predám, darujem, požičiam – medzi vlastníkmi a nájomcami v dome. Filter podľa typu, jedna foto per post, označenie „Vyriešené / Predáné“. Voliteľne obmedzené len na konkrétny vchod.

🤝

Susedská výpomoc

„Prosím o pomoc“ vs „Ponúkam pomoc“ ako dva oddelené typy. Zalievanie kvetov počas dovolenky, IT pomoc, drobné opravy, vyvenčenie psa. Bez platieb – toto je susedská výpomoc.

🎉

Susedské udalosti

Grilovačka na dvore, brigáda, vianočné stretnutie, zbierka. RSVP „Áno / Možno / Nie“ s počítadlom účastníkov. Email pripomienka deň pred udalosťou. Nadchádzajúce vs ukončené udalosti.

📒

Adresár susedov (opt-in)

Sused si sám zvolí, či zdieľa telefón, email, poznámku a zručnosti (elektrikár, IT, záhrada). Nemusíte víckrát hľadať elektrikára cez Google – býva o tri poschodia nižšie.

✉️ Email notifikácie a auto-expirácia. Autor postu dostane email pri každej reákcii. Staršie posty sa automaticky expirujú. Pripomienky udalostí chodía 1 deň vopred. Cron job to všetko rieši automaticky.

Postavené na moderne

Ovežené technológie, ktoré vám uľahčia deploy aj príspevky.

Next.js 16 App Router
React 19 UI
TypeScript Strict
Tailwind CSS Styling
Drizzle ORM Database
PostgreSQL 16 Storage
NextAuth v5 Auth
Docker Deploy
Caddy HTTPS
Nodemailer Email
next-intl i18n
react-pdf PDF export

Nechcete sa starať o server?

Spustíme to za vás. Rovnaká aplikácia, žiadna údržba. 7 dní zadarmo.

Spustené za 5 minút

Žiadny server, žiadny Docker, žiadna konfigurácia. Zaregistrujte sa a vaša bytovka beží v cloude.

🔒

Zálohy a bezpečnosť

Automatické denné zálohy, SSL, izolácia dát. Každá bytovka beží v samostatnom prostredí.

💶

Od 4 €/mesiac

Platíte len za aktívne bytovky. Čím viac bytoviek, tým nižšia cena za jednu.

Počet bytoviek Cena za bytovku
17 €/mes.
2–36 €/mes.
4–55 €/mes.
6+4 €/mes.
Vyskúšajte 7 dní zadarmo →

Bez kreditnej karty. Plné funkcie počas skúšobného obdobia.

Ako to rozbehnúť

Požiadavky

Na spustenie OpenResiApp potrebuješ:

  • Docker 24+ a Docker Compose plugin
  • Server alebo VPS s min. 1 GB RAM a 10 GB disku
  • Doménu alebo subdoménu (pre HTTPS)
  • SMTP prístup (pre emaily)
💡 Na lokálne testovanie stačí aj tvoj laptop – Docker Desktop na Windows alebo macOS.

Inštalácia

&x2139;️ Docker obraz ipk0/open-resiapp je dostupný na Docker Hub. Podporuje linux/amd64 a linux/arm64.

Automatický setup (odporúčané)

Skript sa opýta na doménu a názov budovy, vygeneruje bezpečné heslá a vytvorí všetky súbory:

mkdir open-resiapp && cd open-resiapp
curl -O https://raw.githubusercontent.com/open-resiapp/open-resiapp/main/setup.sh
chmod +x setup.sh
./setup.sh
docker compose up -d
💡 Skript automaticky generuje POSTGRES_PASSWORD a NEXTAUTH_SECRET cez openssl rand. Nemusíš nič ručne kopírovať.

Manuálny setup

Ak uprednostňuješ manuálnu inštaláciu:

1. Vytvor docker-compose.yml

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:

2. Nastav .env

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

3. Spusti

docker compose up -d

Docker automaticky stiahne obrazy z Docker Hub, vytvorí databázu a spustí app. Migrácie sa spustia automaticky.

Konfigurácia .env

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
&x26A0;️ Nikdy nezdieľaj súbor .env a nedávaj ho do Gitu. Súbor .gitignore ho automaticky vylučuje.

Prvé spustenie

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.

Seed dáta pre testovanie

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!
&x26A0;️ Seed dáta používaj len na testovanie. V produkcii ich nespušťaj.

Vlastná doména

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.

HTTPS (automaticky)

OpenResiApp používa Caddy ako reverse proxy, ktorý automaticky zaobstará a obnovuje SSL certifikát cez Let's Encrypt. Nemusíš nič ručne nastavovať.

&x2139;️ HTTPS funguje len ak je doména verejne dostupná. Na lokálnom testovania (localhost) je HTTP v poriadku.

Po nastavení domény reštartuj stack:

docker compose down
docker compose up -d

Zálohovanie

Všetky dáta sú v PostgreSQL databáze a v priečinku uploads/. Odporúčame zálohovať denne.

Automatická záloha

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 -

Obnova zo zálohy

gunzip < backup_20260309.sql.gz | docker compose exec -T db psql -U postgres resiapp

Aktualizácia na novú verziu

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.

&x26A0;️ Pred každou aktualizáciou urob zálohu databázy.

Admin účet

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.

Pridanie vlastníkov

Po prihlásení ako admin:

  • Choď do Nastavenia → Byty a vchody – vytvor vchody a byty s podielmi
  • Choď do Vlastníci → Pozvať vlastníka – zadaj email a priraď byt
  • Vlastník dostane email s odkazom na nastavenie hesla
&x2139;️ Spoluvlastnícky podiel (napr. 75/10000) nájdeš na liste vlastníctva z katastra nehnuteľností.

Prvé hlasovanie

Ako admin choď do Hlasovanie → Nové hlasovanie:

  • Zadaj názov a popis
  • Nastav dátum začiatku a konca
  • Voliteľne priraď sčítača hlasov pre papierové lístky
  • Klikni Spustiť 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.