Net-Base Revija

17.04.2026

Kombiniranje Delphi namiznih aplikacij in spletnih portalov: arhitektura, vmesniki in modernizacija brez prekinitve

Mnoga podjetja upravljajo stabilne Delphi-namizne aplikacije, vendar potrebujejo tudi spletne portale za stranke, partnerje in mobilne ekipe. Prispevek prikazuje, kako lahko obe povežete preko jedra storitev: arhitekturne variante, REST-APIs, pravice in SSO, dostop do podatkov...

17.04.2026

Od teme v reviji do projektne prakse

Ustrezne strani storitev in tehnični opisi k prispevku

Video-Botschaft

Kombiniranje Delphi namiznih aplikacij in spletnih portalov: arhitektura, vmesniki in modernizacija brez prekinitve

Warum „Portal statt Desktop“ oft scheitert und wie ein gemeinsamer Service-Kern Desktop und Web-Portal konsistent verbindet – mit Fokus auf Betrieb, Rechte und wartbare Schnittstellen.

Video mit KI erstellt

Transkript anzeigen

Guten Tag. Der größte Fehler ist, Portal und Desktop getrennt weiterzuentwickeln.

Im Beitrag „Delphi Desktop und Web-Portale kombinieren: Architektur, Schnittstellen und Modernisierung ohne Bruch“ geht es genau darum. Viele Firmen haben eine stabile Delphi-Desktopanwendung.

Intern läuft damit alles schnell. Aber extern brauchen Kunden und Partner ein Web-Portal – ohne VPN und ohne Client-Rollout.

Wenn man dann nur „Masken im Browser“ nachbaut, entstehen doppelte Regeln. Das merkt man im Betrieb: andere Ergebnisse, mehr Support, schwerere Fehleranalyse.

Die saubere Lösung ist ein gemeinsamer Service-Kern. Also eine zentrale Prozessschicht, die Rechte, Prüfungen und Statuswechsel übernimmt.

Desktop und Portal greifen über definierte Schnittstellen darauf zu. So modernisieren Sie schrittweise, ohne Big-Bang.

Wenn dazu Fragen offen sind, sprechen Sie mich gern an. Wenn Sie dazu Fragen haben oder das Thema auf Ihre eigene Umgebung beziehen moechten, sprechen Sie uns gern an.

V številnih podjetjih se je strokovna „krmilna centra“ skozi leta razvila kot Delphi-namizna aplikacija: VCL-odjemalec, globoko procesno znanje, hitro vnašanje podatkov, poti za tisk in poročanje, specialna strojna oprema in pogosto neposreden dostop do baze podatkov v LAN. Hkrati rastejo pričakovanja po samoopori in zunanjem sodelovanju: stranke želijo preverjati status naročil, izmenjevati dokumente ali vnesti reklamacije – brez VPN, brez uvajanja odjemalcev in brez lokalnih instalacij.

Povezovanje Delphi namizja in spletnih portalov pomeni v praksi združiti ti dve svetovi tako, da ostaneta obvladljiva obratovanje, varnost in konsistentnost podatkov. Ključno ni „ponovno zgrajevanje“ mask v brskalniku, temveč arhitektura, ki loči procese, pravice in poteke podatkov ter omogoča obema frontendom delo po skupnih pravilih. Korist je poti modernizacije brez Big-Bang pristopa: namizje ostane produktivno, medtem ko spletni portal raste kontrolirano.

Prispevek je namenjen IT-vodstvu, administratorjem in tehničnim projektno odgovorim osebam. V ospredju so vplivi na obratovanje, administracijo, vmesnike, varnost, hranjenje podatkov in migracijo – manj podrobnosti o frameworkih. Prejeli boste praktične vzorce, kriterije odločanja in tipične pasti skupaj z nasprotnimi ukrepi.

Zakaj je »portal namesto namizja« redko realno

V B2B-okoljih obstaja veliko razlogov, zakaj je namizni odjemalec še naprej smiselno ohraniti. Administratorji to pogosto doživljajo konkretno: portal je idealen za distribuirane uporabnike, vendar so določene naloge v namizju še vedno učinkovitejše ali sploh možne.

Moči namizja, ki štejejo v vsakdanjem delu

  • Kompleksno vnašanje podatkov z zelo gosto zasnovanimi maskami, tipkovniško upravljanje, velikimi preglednicami in hitrim preklapljanjem med zapisi.
  • Periferne naprave in lokalne integracije kot so tiskalniki nalepk, čitalniki, serijske naprave ali posebne Windows komponente.
  • LAN-blizu zmogljivost, ko se obdelujejo velike količine podatkov ali ko proces zahteva izredno nizko latenco.
  • Rastoči delovni procesi z mnogimi izjemami, pri katerih prenos 1:1 v portal sprva prinaša visoka tveganja.

Moči portala, ki zadovoljijo nove zahteve

  • Zunanji dostop za stranke, dobavitelje ali partnerje, brez potrebe po nameščanju odjemalca.
  • Centrirano upravljanje (verzije, funkcije, pravice) z jasno zunanjo mejo.
  • Napravno neodvisnost (brskalnik, mobilna uporaba) za terenski servis in vodstvo.
  • Ciljno odpiranje procesov kot so poizvedbe statusov, nalaganje dokumentov, odobritve ali ticket-ti poteki.

Kombinacija prinaša vrednost: namizje ostane power-orodje za interne vloge, portal pa postane kontroliran vhod za zunanje skupine uporabnikov. Da se to ne razcepi v dve paralelni „resničnosti“, potrebujete povezovalno jedro.

Ko kombinirate Delphi namizje in spletne portale: tri ciljne arhitekture

Pri odločitvi arhitekture gre predvsem za pristojnosti: Kje leži strokovno pravilo? Kdo sme spreminjati podatke? Katera plast je „Single Source of Truth“ (torej merodajni vir pravil in stanj)? Za tehnične odločevalce je pomembno: izbira ima neposredne posledice za obratovanje, iskanje napak, upravljanje izdaj in varnost.

Varianta A: portal kot dopolnilo preko REST-API, namizje ostane vodilno

Portal pokriva izbrane use case-e, tipično „branje in sprožanje“: statusi, dokumenti, odobritve, preprosto vnašanje. Za to se uvede Delphi REST-API ali ločen REST-strežnik. Namizna aplikacija lahko sprva še naprej dostopa neposredno do baze podatkov.

Operativna prednost: hiter začetek, majhni posegi v namizje, primerno za prvi portalni dodatek vrednosti.

Tveganje: obstajata dve poti podatkov (Namizje → DB neposredno, Portal → API). Če so poslovna pravila implementirana le v namizju, nastanejo inkonzistence. Kot protiukrep naj portalne funkcije začnejo tam, kjer so pravila enostavna in jih je mogoče strežniško predstaviti (npr. priprava dokumentov, poizvedba statusov, definirane odobritvene akcije).

Varianta B: storitveno jedro kot skupna procesna plast (priporočeno pri soobratovanju)

Tukaj postopoma premestite poslovno logiko iz namizja v storitve. Namizje in portal uporabljata iste končne točke. Namizni odjemalec postane bolj bogat klient (UI, lokalne integracije), pravila in validacije pa so strežniške narave.

Operativna prednost: centralizirano mesto za pravice, audit, logiko statusov in validacije; dosledno vedenje na vseh front-endih.

Skupni napor: več na začetku, ker je treba načrtovati API-standarde, formate napak, verzioniranje, nadzor in deployment. Kasneje pa se obseg dela znatno zmanjša, saj je manj posebnih poti.

Varianta C: portal vodi, namizje ostane kot specializiran klient

Ta varianta je smiselna, če naj bi bil brskalnik strateški standardni dostop (npr. močno distribuirana organizacija), medtem ko namizje za določene vloge z ostalo specialno strojno opremo ali visokozmogljivim vnašanjem ostane. Storitveno jedro mora biti v tem primeru posebej stabilno in skalabilno.

Layer-3 arhitektura kot razumljiva vodila

Ne glede na varianto pomaga Layer-3 arhitektura: (1) predstavitev (namizje/portal), (2) aplikacijska in domena plast (use case-i, pravila), (3) infrastruktura (baza podatkov, shranjevanje datotek, messaging, zunanji sistemi). Za administratorje je to pomembno, ker postanejo meje obratovanja jasne: kaj je „frontend-problem“, kaj je „service-problem“, kaj leži v bazi ali v storage-u? Ta ločitev skrajša iskanje napak in zmanjša stranske učinke pri deploy-ih.

Praktični vidik: kako namizje in portal delita isti proces

Največji izziv redko predstavlja »zgraditi portal«, ampak vprašanje: kako naj si namizje in portal razdelita odgovornosti v istem procesu, brez dvojne implementacije pravil? Tri vzorci so v praksi posebej relevantni.

1) Use-Case-API-ji namesto tabelnih ali CRUD-API-jev

Pogosta slepa ulica je API, ki zgolj preslika podatkovne tabele („Create/Read/Update/Delete“). Potem mora portal ponovno implementirati pravila, namizje pa ostaja pri svoji logiki. Boljši so Use-Case-API-ji: končne točke opisujejo strokovne akcije, kot so „ustvari reklamacijo“, „sprosti naročilo“, „naloži dokument“, „potrdi status dostave“.

Učinek v obratovanju je opazen: validacije potekajo strežniško, napake so reproducibilne, in oba klienta (namizje in portal) sprožita isti potek prek iste logike.

2) Obvladovanje konfliktov in ponovitev

S portalom narašča verjetnost sočasnih sprememb in ponovljenih zahtevkov (npr. zaradi timeout-ov, retries ali dvojnega klika uporabnika). Pri tem pomagajo trije koncepti, brez uvajanja „trajnih zaklepov“:

  • Idempotentnost: kritične akcije so zasnovane tako, da ponovitev prinese enak učinek in ne izvede nič dvakrat. Praktično se to pogosto doseže z edinstveno identifikacijo zahtevka (Idempotency Key).
  • Optimistic Concurrency: zapis nosi informacijo o verziji (npr. „Row Version“). Pri spremembah servis preveri, ali verzija še ustreza, in konflikte lepo vrne.
  • Kratke transakcije: namesto „zakleni vse“ so pisne operacije kratke. Dolga dela (npr. izvozi, report-paketi) tečejo asinhrono.

Za tehnične odločevalce je pomembno: ti mehanizmi zmanjšajo podporni napor, ker so problemi kot „dogodilo se je dvakrat“ ali „moja sprememba je izgubljena“ bistveno redkejši.

3) Jasno modeliranje stanj in predaj

Če namizje obravnava kompleksne primere, portal pa „le“ vložke ali predstopnje, potrebujete definirane prehode stanj. Praktična razdelitev je: portal ustvari ali dopolni zadeve v jasno omejenih statusnih območjih (npr. „oddano“), namizje obravnava specialne primere, storitveno jedro odloča in protokolira spremembe statusov. Tako preprečite, da bi portalni klient posredno „pokvaril“ procese s svojo konfiguracijo.

Podatki in dokumenti: pogosto podcenjeno področje integracij

Skoraj vsak portal vključuje delo z datotekami: nalaganja, dokazila, dobavnica, slike, PDF-izvozi. Za administratorje je to ključno področje, saj vpliva na backup, pravice, pregledovanje virusov, stroške shranjevanja in zmogljivost.

Kje so shranjene datoteke: baza, datotečni share ali objektni storage?

Obstajajo tri pogoste možnosti hrambe, ki vsaka prinese drugo operativno realnost:

  • Baza podatkov (BLOB): primerno, če morajo biti transakcije strogo povezane in če naj backup/restore zajame vse kot eno enoto. Slabosti so pogosteje večje baze in daljša backup-okna.
  • Datotečni sistem/Share: tipično On-Prem, dobro vgradljivo v obstoječe backup-koncepte. Pomembne so jasne pravice in API-plast, ki nadzoruje dostop.
  • Objektni Storage: smiseln pri skaliranju, pravilih življenjskega cikla ali če želite tehnično čiste zunanje dostope. Zahteva premišljen model ključev in pravic.

Ne glede na lokacijo hrambe velja: portal ne bi smel datotek „direktno“ nalagati s share-a. Bolje je nadzorovani prenos prek servisnih končnih točk z preverjanjem pravic, protokoliranjem in po potrebi časovno omejenim URL-jem za prenos.

PDF-ji in poročila: strežniška generacija namesto dvojne implementacije

Delphi namizne aplikacije pogosto vsebujejo razvite poti za tisk in poročanje. Portali pogosto potrebujejo enake vsebine kot PDF. Namesto vzdrževanja dveh implementacij se izplača centralizirana generacija dokumentov v storitvenem jedru: predloge, verzioniranje in izhodni format so strežniško upravljani; namizje in portal porabljata rezultat. Za obratovanje to prinaša jasne prednosti: sledljivi izpisi, enotno shranjevanje in manj odvisnosti od namiznih instalacij.

REST-strežniki in storitve: Delphi, C# ali mešana arhitektura

Pri odločitvi „Delphi ali C#“ gre za podjetja manj za ideologijo kot za sposobnost ekip, obratovalno okolje in vzdržnost. V mnogih okoljih je realistična mešana arhitektura, dokler so pristojnosti jasno razmejene.

Delphi kot storitvena platforma: smiselno pri obstoječi strokovni logiki

Če sta strokovna logika in dostop do podatkov že dobro implementirana v Delphi, je Delphi-osnovan REST-strežnik lahko učinkovit. Za administratorje in odločevalce je pomembno: strežniško delovanje ni „namizje v nenehnem teku“. Producentna storitev potrebuje jasno konfiguracijo, urejene timeoute, strukturirane loge, health-checke in reproducibilen deployment.

Tudi povezava z bazo podatkov naj bo modernizirana, če se še uporabljajo stari gonilniki ali BDE. BDE-ablösung in prehod na sodobne podatkovne dostope zmanjšata motnje v obratovanju in olajšata deployment, ker je treba manj vzdrževati legacy komponent.

C# storitve v portalnem ekosistemu: pogosto zaradi hostinga in identity

Če portal nastaja v .NET-dominantnem okolju, so C# storitve pogosto logična izbira – tudi zaradi integracije identity, obstoječih operativnih standardov in hostinga za Microsoft IIS ali v kontejniranih platformah. Ključno je, da se izognete dvojni implementaciji: bodisi ostane jedro poslovne logike v Delphi-storitevah in C# prevzame robne teme (npr. portal-specifično orkestracijo), ali pa načrtujete kontrolirano migracijo logike v .NET – vendar z jasnimi mejami družbenih področij.

API-Gateway: element reda, vendar ni obvezen

API-Gateway lahko združi centralne funkcije (routing, rate-limits, logging, avtentikacija). Za manjše začetne arhitekture pogosto zadošča konsistenten API z enotnimi standardi. Ko pa obstaja več storitev in skupin uporabnikov, pomaga gateway ohraniti zunanjo mejo stabilno in centralno izvajati politike.

Avtentikacija in pravice: od internega namizja k zunanjemu portalu

Z uvedbo portala se spremeni pokrajina uporabnikov: poleg internih uporabnikov pridejo zunanji računi, vloge in najemniki. To ustvarja zahteve po identity, pravicah in auditu. Za administratorje je to relevantno, saj so identity-sistemi in model vloga kasneje težko spreminjati.

SSO s SAML 2.0 ali OIDC: manj administracije, boljši nadzor

V B2B-nastavitvah je SAML 2.0 (Single Sign-on preko Identity Providera) razširjen, ker podjetja želijo uporabiti obstoječe identitete. OIDC (OpenID Connect) je prav tako pogost, zlasti na sodobnih platformah. Klasični uporabniški/geselni prijavni postopki so možni, vendar pomenijo dodaten napor pri politiki gesel, MFA, procesih za ponastavitev in supportu.

Arhitekturno je pomembno: avtentikacija (kdo si?) in avtorizacija (kaj smeš?) morata biti preverjena strežniško – ne v portalnem front-endu.

Multi-tenantnost in model vlog: ne dodajajte „pozneje“

Kundenportal zahteva praktično vedno ločevanje najemnikov: stranka vidi le svoje podatke. To mora biti upodobljeno v storitvenem jedru, idealno preko:

  • Claims v tokenu (npr. Tenant-ID, vloge, pogodbeni kontekst), da lahko storitve sprejemajo odločitve.
  • Preverjanja na ravni zapisa (Row-Level-Checks v poslovni logiki), ne le „skrij meni“.
  • Audit-traili za pomembne akcije (kdo, kaj, kdaj), plus korelacija preko Request-ID za analizo napak.

Namizje lahko – če želite – prav tako uporablja tokene proti istemu identity-stacku. To zmanjša posebne poti in olajša sledljivost sprememb, zlasti ko portal in namizje urejata isti zapis.

Modernizacija dostopa do podatkov: FireDAC, PostgreSQL in kontrolirane poti podatkov

Mnoge Delphi namizne rešitve so zgodovinsko rasle z neposrednim DB-dostopom. Ko se doda portal, to postane arhitekturna tema: poti podatkov morajo biti obvladljive, validacije morajo delovati centralno in zmogljivost mora ostati stabilna tudi pri sočasni obremenitvi.

FireDAC kot osnova za vzdržljiv dostop do podatkov

BDE-Ablösung z nativno povezavo je v Delphi okoljih pogost standard za dostop do modernih baz podatkov. Pomembno ni toliko sama komponenta kot poenotenje: parametizirane poizvedbe, čiste transakcijske meje, enotno ravnanje z napakami in merljive izvedbe. Za obratovanje šteje, da so time-out-i in poraba virov planabilni ter da se napake reproducirajo v logih in monitoringu.

PostgreSQL z Delphi: dobro obvladljivo ob jasnem tipnem in migracijskem konceptu

PostgreSQL z Delphi je robusten, če je tipno preslikavanje (npr. UUID, časovni žigi, JSON-polja), indeksi in migracije shem pravilno urejeno. Portali generirajo veliko filtrov in listnih poizvedb. Zato naj se filtriranje, paginacija in urejanje izvajajo strežniško, da se ne prenašajo nepotrebno velike količine podatkov. To zmanjša obremenitev in izboljša uporabniško izkušnjo, ne da bi namizje upočasnilo.

Obratovanje, deployment in monitoring: doseči portalno zrelost za Delphi backende

Portal je običajno stalno dosegljiv in torej operativno intenzivnejši kot sam namizni klient. Za administratorje je to področje, kjer se dobra arhitektura takoj izplača: preko sledljivih deploymentov, jasne opaznosti (logs/metrike) in definiranih vzdrževalnih oken.

Windows-storitev ali Linux-storitev: odločilno je obratovalno ozadje

Delphi storitev se lahko izvaja kot Windows- in Linux-storitev ali kot Linux-daemon. Pomembnejši od OS so standardi, ki naredijo obrat stabilen:

  • Health-Checks za monitoring in load balancer (npr. „storitev živi“ in „baza dostopna“).
  • Strukturirano beleženje (vključno z Request-ID, uporabnik/najemnik, čas izvršitve, statusnimi kodami), da so support primeri reproducibilni.
  • Konfiguracija brez ponovnega builda (npr. okoljske spremenljivke, centralne konfiguracijske datoteke), da so deploy-i avtomatizabilni.
  • Možnost rollbacka preko jasnih verzij in migracijsko varnih sprememb v bazi podatkov.

Profil obremenitve: portal je „mnogi kratki zahtevki“ namesto „nekaj dolgih sej“

Uporaba namizja pogosto povzroča daljše delovne seje na uporabnika, medtem ko portali generirajo mnogo kratkih, sočasnih zahtevkov. Tipične tehnične ukrepe so:

  • konzistentna paginacija, strežniško filtriranje in omejene velikosti odgovorov
  • caching za osnovne podatke in redke poizvedbe
  • asinhroni jobi za dolga opravila (izvozi, paketi poročil)
  • rate-limiti in zaščitni mehanizmi proti zlorabam

Za odločevalce je tu ključno: zmogljivost ni „fine-tuning na koncu“, temveč del specifikacije API-ja (velikosti odgovorov, timeout-i, ozadinska obdelava).

Modernizacija brez Big-Bang-a: zanesljiva pot v petih korakih

Popolna prenova je redko potrebna in je pogosto tvegana, ker je procesno znanje zakoreninjeno v Delphi klientu. Učinkovit je pristop, kjer je vsaka stopnja produktivno uporabna in ne ogroža obratovanja.

1) Popis stanja: procesi, lastništvo podatkov, integracije

Ne začnite pri maskah, temveč pri use case-ih: kateri procesi naj gredo v portal? Katere podatke sme zunanji uporabnik videti ali spreminjati? Katere vmesnike imate do ERP, DMS ali CRM? Iz tega nastane prioritetni seznam API-jev, ki prinašajo resnično vrednost.

2) Določitev osnov storitev: avtorizacija, format napak, beleženje, verzioniranje

Ta osnova odloča o kasnejši vzdržnosti. Dogovorite se zgodaj o standardih za avtentikacijo/avtorizacijo, konsistentnem formatu napak, korelaciji zahtevkov, verzioniranju API-jev in telemetriji. To zmanjša trenja med portalno, backend in operativno ekipo.

3) Dostaviti prvo portalno pot end-to-end

Izberite proces z jasno ločitvijo (npr. področje dokumentov ali poizvedba statusa). Pomembno je, da je celoten verižni tok pripravljen: prijava, preverjanje pravic, API, UI, beleženje, monitoring, obratovanje. Organizacija tako zgodaj preizkusi, kateri standardi delujejo v praksi.

4) Ciljno povezovanje namizja: kritične pisne poti preko storitev

Ko so storitve stabilne, premaknite izbrane funkcije iz namizja: zlasti spremembe statusov, odobritve ali centralne validacije. Namizje ostane zmogljivo, a pravila postanejo bolj dosledna in neposreden pisni dostop do DB se postopoma zmanjša.

5) Konsolidacija: odpraviti dvojna pravila in posebne poti

S časom sicer nastaneta „dve sistemi“. Načrtujte redne konsolidacije: katera pravila obstajajo dvojno? Kje lahko portal uporabi namizno storitev? Katera poročila naj se ustvarjajo centralno? Cilj je obvladljiva platforma, ne ideološki cilj.

Tipične pasti z vidika obratovanja – in kako se jim izogniti

Pravila se v portalu ponovno implementirajo

To vodi v odstopanja in support primere. Protiukrep: Use-Case-API-ji z validacijami na strežniku, jasne napake in, če je mogoče, skupni strokovni testni scenariji.

Nejasno lastništvo podatkov med namizjem in portalom

Če oba klienta „vse“ urejata, se pojavijo konflikti. Protiukrep: model statusov, definirane pristojnosti in Optimistic Concurrency za sočasne spremembe.

Varnost kot naknadna dopolnitev

Še posebej pri kundenskem portalu sta SSO, najemniške kontrole, varni prenos datotek in audit nujni od začetka. Naknadno uveljavljanje je dražje in poveča tveganje varnostnih vrzeli.

Manjkajoča preglednost v obratovanju

Brez Request-ID-jev, strukturiranih logov in health-checkov iskanje napak postane detektivska naloga. Protiukrep: observability kot obvezna sestavina prvih izdaj storitev.

Zaključek: storitveno jedro poveže moč namizja z dosegom portala

Kombinacija Delphi namizja in spletnega portala je v mnogih podjetjih najrealnejša pot, da ohranite obstoječe jedrne procese in hkrati omogočite zunanjo sodelovanje. Ključno je, da ne upravljate dveh ločenih svetov, temveč ustvarite povezovalno storitveno jedro: Use-Case-API-ji, čiste pravice, sledljiva stanja, kontrolirane poti podatkov in obratovalni model z loggingom, monitoringom in planabilnimi deploy-i.

Tako nastane modernizacija z vmesnimi cilji: namizje ostane produktivno, portal hitro prinaša vrednost, arhitektura pa postane korak za korakom bolj konsistentna in vzdržna.

V strokovnem okolju imajo pomembno vlogo tudi Delphi Modernisierung, kadar je potrebno, da se integracije, podatkovni tokovi in nadaljnji razvoj izvedo brezhibno med seboj.

Projekt ali modernizacijski načrt z Net-Base razpravljajte.

naslednji korak

Ko iz teme nastane resničen projekt, je treba arhitekturo, obstoječe sisteme in obratovanje zgodaj obravnavati skupaj.

Ne podpiramo le pri posameznih vprašanjih, ampak tudi takrat, ko iz izrezkov izvorne kode, legacy-tem ali idej za portale nastane zanesljiv podjetniški projekt.

  • Obstoječe stanje, ciljno stanje in tehnična tveganja se ocenjujejo skupaj.
  • REST, dostop do podatkov, portali in Rollout ne bodo prestavljeni v kasnejše faze.
  • Že zgodaj vidite, katera pot je ekonomsko in operativno vzdržna.

Deli objavo

Deli ta prispevek neposredno

LinkedIn, X, XING, Facebook, WhatsApp in e-pošta so takoj na voljo. Za Instagram pripravljamo povezavo in kratek tekst.

E-pošta

Instagram se odpre v novem zavihku. Povezava in kratek opis se pred tem kopirata v odložišče.