Fractional Real Estate Platform
Odpovědi na otázky pro vývojovou firmu (bod 16) · Plnění povinných výstupů (bod 14) · Akceptační kritéria (bod 15)
Proč ASP.NET Core 9 (C#)?
Proč React SPA jako frontend?
Přihlášení:
Proč JWT tokeny?
Role a oprávnění:
| Role | Oprávnění | Poznámka |
|---|---|---|
| Klient / investor | Vidí výhradně svá data (filtr OwnerId = currentUser na každém dotazu) | Nejpřísnější izolace |
| Administrátor SWEIQO | Správa všech entit – klienti, nemovitosti, podíly, termíny, dokumenty | |
| Superadmin | Správa rolí, systémových nastavení, auditů | |
| Lokální partner | Omezený přístup ke konkrétní nemovitosti | Budoucí fáze, architektura počítá s touto rolí od začátku |
2FA pro administrátory: TOTP (kompatibilní s Google Authenticator / Authy) jako povinný druhý krok pro role Admin a Superadmin.
Produkce: vlastní doména SWEIQO nasazená na aspone.cz, při větším růstu migrace na VPS nebo Azure.
| Počet uživatelů | Hosting | Databáze | Celkem / měsíc |
|---|---|---|---|
| 100 | Stávající Windows plán | Stávající MS SQL | ~500–800 Kč |
| 1 000 | Vyšší Windows plán aspone | Větší plán MS SQL | ~1 500–3 000 Kč |
| 10 000 | VPS nebo Azure App Service | Azure SQL / dedikovaný | ~5 000–15 000 Kč |
Proč aspone.cz?
GET /api/documents/{id}/download/documents/smlouva-jan-novak.pdf). Přístup je vždy ověřen tokenem na backendu.
Plán po fázích:
POST /api/pms/sync, kam PMS posílá nové rezervace → automatický zápis do DB| Co | Jak využít |
|---|---|
| Schválená UX logika a flow | Přesně zkopírovat do komponent – to je referenční vzor |
| Barevná paleta a dark theme | Extrahovat jako CSS proměnné / design tokeny |
| HTML struktura komponent | Jako vzor pro React komponenty |
| Obchodní logika (výpočty v JS) | Přepsat do C# (backend) + TypeScript (frontend), nepřebírat starý JS |
| Hardcoded testovací data | Nahradit real-time API voláním na backend |
navrh_mobil.html slouží jako specifikace chování a vizuálu, ne jako zdrojový kód produkce.
Architektura, DB schéma, projekt, CI/CD skripty, schválení klientem
Auth, admin, klienti, nemovitosti, podíly, kalendář, základy dokumentů
Pronájmy, výnosy, hlasování, prodej podílu, příležitosti, notifikace
PMS/channel manager, push, platby, pokročilé funkce
Odhad zahrnuje vývoj, unit testy obchodní logiky a QA průchod před předáním každé fáze.
| Typ testu | Co testovat | Nástroj |
|---|---|---|
| Unit testy (C#) | Rotační logika, výpočet sezón, fond údržby 5 %, kapacita x/8 | xUnit |
| API integrační testy | Přihlášení, role, klient A ≠ data klienta B | xUnit + HttpClient |
| Smoke testy UI | Základní průchody po každém deployi | Playwright |
| Manuální QA | Plný průchod Android/iOS/desktop před každým releasem | Dle checklistu v65 |
| # | Požadovaný výstup | Stav | Kde |
|---|---|---|---|
| 1 | Návrh technické architektury | ✓ Splněno | Část A, otázka 13 |
| 2 | Návrh autentizace a oprávnění | ✓ Splněno | Část A, otázka 14 |
| 3 | Návrh datového modelu a hlavních vazeb | → Připravit | ER diagram – doplníme po schůzce |
| 4 | Návrh verzování a nasazování | ✓ Splněno | dotnet publish + FTP skripty (stávající workflow) |
| 5 | Návrh zálohování a obnovy | ✓ Splněno | Část A, otázka 17 |
| 6 | Návrh monitoringu a logování | ✓ Splněno | Serilog + stdout log soubory na aspone.cz |
| 7 | Popis řešení PWA | ✓ Splněno | Service Worker + Manifest v React buildu |
| 8 | Seznam externích služeb a náklady | ✓ Splněno | Část A, otázka 15 (aspone.cz, SMTP, PMS) |
| 9 | Odhad práce a ceny po fázích | ✓ Splněno | Část A, otázka 20 |
| 10 | Identifikace rizikových bodů | → Doplnit | Viz níže |
| 11 | Integrační strategie Booking/Airbnb | ✓ Splněno | Část A, otázka 18 |
| 12 | Potvrzení vlastnictví kódu a přístupů SWEIQO | ✓ Splněno | Potvrzujeme. Součástí smlouvy. |
Aplikace musí být flexibilní – přímé spoluvlastnictví, lokální s.r.o., jiná vhodná struktura. Potřeba upřesnit pro první konkrétní nemovitosti ještě před fází 1.
Slot nesmí být narušen při prodeji podílu. Vyžaduje přesnou specifikaci edge-cases (co se stane s termíny in-flight, rezervacemi apod.).
Referenční tržní hodnota pronájmu musí být někde uložena – kdo ji zadává? Admin ručně? Automaticky z dat trhu? Potřeba rozhodnutí před implementací.
Kdo a kdy schvaluje alias „Mallorka" → „Mallorca"? Potřeba definovat workflow pro admin frontu a kdo má pravomoc schvalovat.
Sdílíme DB server s ostatními projekty. Nutno prefixovat tabulky (sweiqo_) a sledovat výkon. Při větším počtu klientů uvažovat o dedikované DB instanci.
Safari má omezení pro Service Worker a push notifikace. Potřeba otestovat rozsah funkčnosti a jasně komunikovat klientům co iOS zvládne a co ne.
Každý API endpoint filtruje podle OwnerId = currentUser. Automatický integrační test simuluje útok (přístup s tokenem klienta A na data klienta B) a musí vrátit 403.
Backend ověří vlastnictví podílu před vrácením dat. Přepínač UI volá /api/properties/{id}/context a vrací kompletní kontext pro daného klienta.
Unit testy pokrývají přestupné roky, přechod roku, okrajové týdny. Rotační logika je testována nezávisle na UI.
Tabulka sweiqo_auditlog – každá citlivá operace zapíše: kdo, kdy, co, stará a nová hodnota.
Admin UI s formuláři napojenými na REST API. Bez přístupu k serveru nebo DB konzoli.
Upload přes /api/documents/upload + výběr oprávnění (konkrétní klient, nemovitost nebo všichni admini).
Tabulky sweiqo_income_records a sweiqo_cost_records vázané na ShareId + Period. Filtrování a export po obdobích.
Unit test: vytvoření příležitosti, ověření že dostupná kapacita = 7 (ne 8), pokus o překročení vyvolá chybu validace.
Pole RawLocationText + StandardizedLocationId (nullable). Nejasné případy → admin fronta ke kontrole.
SaleRequest s typem QuickBuyout automaticky vytvoří záznam v sweiqo_tasks s prioritou Urgent a notifikace adminovi.
Povinný manuální QA průchod dle checklistu v65 před každým releasem. Výsledek se písemně odsouhlasí.
CSS grid/flexbox s min-width: 0, overflow: hidden, text-overflow: ellipsis. Explicitně testováno v QA průchodu.
Dokumentace + reálné provedení obnovy na stagingu před ostrým spuštěním. Bez úspěšného testu nelze projekt předat do produkce.
Navrhovaný stack ASP.NET Core 9 + MS SQL + React + aspone.cz není náhodná volba – je to přímé pokračování technologie, kterou úspěšně provozujeme u více projektů na stejném serveru. Víme přesně jak jej nasadit, testovat i obnovit ze zálohy.
Zároveň jde o průmyslový standard, který umožňuje kdykoli přivést nového vývojáře nebo projekt předat jinému týmu bez vendor lock-inu.
Splnění všech 12 výstupů bodu 14 a 13 akceptačních kritérií bodu 15 je součástí naší nabídky – nikoli volitelný bonus.