Παράκαμψη στο περιεχόμενο
← Όλα τα Case Studies

SaaS / Live Chat

1ChatGo (Wideview)

Live chat SaaS με PWA, iOS TestFlight & multi-site widget σε 5 domains

Supabase edge functions + APNs push + agency multi-site dashboard

5
Domains
marketing, widget, app, admin, db
217KB / 59KB gz
Widget bundle
Preact + Shadow DOM
Build 53
iOS TestFlight
v1.3.5 current
40+
Edge functions
Deno + 12 pg_cron jobs
APNs .p8
Push delivery
token-based
Multi-month, ongoing iteration + iOS app cycle2025-2026

Challenge

Τι έπρεπε να λυθεί

Έπρεπε να χτιστεί live chat που να ενσωματώνεται σε WordPress, Next.js και static sites χωρίς να σπάει CSP, να δουλεύει σε mobile Safari, και να επιτρέπει σε έναν organization owner να εξυπηρετεί ταυτόχρονα dosmart.gr και άλλα Wideview brands από ένα app. Παράλληλα, native iOS app για πραγματικό push delivery αντί για web push που πέφτει στο iOS, AI co-pilot με openai/anthropic, και agency-ready features (per-agent permissions, cost cap, smart routing, agent availability).

Solution

Τι χτίσαμε

Αρχιτεκτονική 5 ξεχωριστών domains σε s3 Coolify: marketing static, widget bundle σε CDN, customer panel σε React + Vite, super admin σε React + Vite, και self-hosted Supabase (project xrbw34) με 40+ Deno edge functions και 12 active pg_cron jobs. Widget σε Preact + TypeScript με Vite IIFE bundle, Shadow DOM για style isolation, 217KB raw / 59KB gzipped. iOS app σε Expo SDK με APNs push μέσω .p8 token-based key (Team R52V8JPQJC).

Custom Modules

Τι το κάνει διαφορετικό

01

5-domain architecture

1chatgo.com marketing (static + dogfood widget embedded), widget.1chatgo.com cache-friendly bundle με 1y immutable + version-tagged URL, app.1chatgo.com customer panel, admin.1chatgo.com super admin, db.1chatgo.com self-hosted Supabase. Ξεχωριστά containers σε s3 Coolify, ξεχωριστό deploy, μηδενική σύζευξη.

02

Supabase + 40+ edge functions για conversation routing

Self-hosted Supabase project xrbw34 (14 containers σε Coolify). Deno edge functions handle: widget-init με rich visitor data + UA parsing + GeoIP, send-message με spam filter, ai-reply, send-notification (Mailgun mg.1chatgo.com), execute-flow-action, transcribe-voice, summarize-stale, translate-kb. RLS-first σε κάθε table, agent_sites scoping ώστε operator A να μη βλέπει conversations του operator B.

03

Native iOS app (Expo) με APNs push

Currently TestFlight v1.3.5 build 53. Expo SDK με dev client + EAS build pipeline. APNs Auth Key .p8 (key id 2H4B4Q5XJ3, Team R52V8JPQJC) για token-based push αντί για certificate-based, ώστε να μη λήγει. Mobile parity ~92% με web (AI Copilot, Team Chat, Visitor Sheet, Dashboard SVG charts). Build 51 ήταν το App Store mega sprint 2026-04-29/30.

04

Embeddable widget σε Preact + Shadow DOM

Preact + TypeScript + Vite IIFE, 217KB raw / 59KB gzipped. Shadow DOM για style isolation από το host site, postMessage protocol για cross-origin events, ESM + UMD outputs. 10 theme presets (incl. Bold, Brutalist), resume conversation banner, branching pre-chat survey, voice messages, file attachments direct σε Supabase Storage (bypass edge fn).

05

Multi-site model + agency features

Site είναι first-class entity (όχι org→site override). Per-site branding + settings + widget_key, domain enforcement, site filter στα conversations. Agent_sites RLS scoping, per-agent permissions matrix (T2.6), per-site cost cap, /leads cross-site dashboard, smart routing, agent availability schedule. Phase 1 widget rollout: dosmart.gr LIVE, pending wideview.co + mysupport.gr + social24.gr.

06

PWA fallback για Android + desktop

Όπου δεν υπάρχει native app, PWA με service worker handles web push, manifest.json, iOS meta tags, app icons. Installable, offline-first για ήδη loaded conversations.

07

Flow engine + AI features

Client-side flow execution στο widget (flowEngine.ts) με 8 trigger types και 8 step types. Visual flow editor στο admin panel. AI Knowledge Base με embeddings (pgvector ivfflat). AI summary inbox, persona auto-tune, A/B testing visual editor, funnel chart με qualified_at/won_at schema, Mark-as-won button.

Live από production

Πώς δείχνει στην πράξη

Screenshots από το ζωντανό site. Τιμές, ονόματα πελατών και ευαίσθητα στοιχεία είναι μασκαρισμένα με skeleton blur ώστε να φαίνεται μόνο το functionality.

SaaS landing page σε mobile, hero με dual CTA

Mobile

Hero mobile, AI-powered live chat positioning

SaaS landing desktop με live demo widget και script tag preview

Desktop

Hero desktop με embedded chat preview και one-line install

Pricing tiers desktop, Free / Pro / Enterprise σε 3-col grid

Desktop

Pricing με Most Popular tier highlight

Tech Stack

Με τι χτίστηκε

React 19 + VitePreact (widget)Supabase self-hostedDeno Edge FunctionsExpoAPNsTypeScriptPostgreSQL RLS + pgvectorCoolify

Όλο το stack είναι τυποποιημένο. Δεν βασίζεται σε κρυφά παραμετροποιημένα plugins ή proprietary cloud services. Μπορεί να μεταφερθεί ή να συντηρηθεί από οποιαδήποτε ομάδα γνωρίζει το stack.

FAQ

Συχνές ερωτήσεις

Επηρεάζει το widget την ταχύτητα του site μου;

Το widget bundle είναι 217KB raw / 59KB gzipped, χτισμένο με Preact + Vite IIFE σε Shadow DOM. Φορτώνεται async, οπότε δε μπλοκάρει το first paint του host site. Σε Lighthouse mobile tests σε dosmart.gr, το performance score έπεσε 0-1 point μετά την εγκατάσταση του widget. Επιπλέον το bundle έχει 1y immutable cache με version-tagged URL, οπότε επόμενες σελίδες το διαβάζουν από browser cache χωρίς network request.

Δουλεύει σε WordPress, Shopify και custom sites χωρίς conflicts;

Ναι. Το widget χρησιμοποιεί Shadow DOM για style isolation, που σημαίνει ότι το CSS του δεν επηρεάζει το CSS του host site και αντίστροφα. Το bundle είναι IIFE με ESM + UMD outputs, οπότε ταιριάζει σε WordPress (μέσω plugin ή snippet στο header), Shopify (μέσω theme.liquid), Next.js, static HTML, και οποιαδήποτε άλλη πλατφόρμα. Cross-origin events γίνονται μέσω postMessage protocol.

Γιατί native iOS app αντί για web push σε mobile Safari;

Το web push σε iOS είναι unreliable: notifications δε φτάνουν αν το browser είναι κλειστό, και δε δουλεύουν καθόλου σε iPhone iOS κάτω από συγκεκριμένη version. Native iOS app στο TestFlight (currently v1.3.5 build 53) χρησιμοποιεί APNs Auth Key .p8 (key id 2H4B4Q5XJ3, Team R52V8JPQJC) για token-based push, που σημαίνει ποτέ δε λήγει το push capability. Mobile parity με web είναι ~92% (AI Copilot, Team Chat, Visitor Sheet, Dashboard SVG charts όλα παρόντα).

Πώς διαχειρίζεται ένας organization owner πολλά sites από ένα inbox;

Το site είναι first-class entity (όχι org→site override). Per-site branding, settings, widget_key, domain enforcement, και site filter στα conversations. Agent_sites RLS scoping σημαίνει ότι operator A που είναι αναθετημένος μόνο σε site X δε βλέπει conversations του site Y που χειρίζεται operator B. Per-agent permissions matrix και per-site cost cap επιτρέπουν agency setups όπου διαφορετικά teams χειρίζονται διαφορετικά clients.

Στηρίζεται AI co-pilot και πόσο κοστίζει;

Ναι. AI features περιλαμβάνουν Knowledge Base με embeddings (pgvector ivfflat στο self-hosted Supabase), AI summary inbox, persona auto-tune, και AI reply suggestions. Τα LLM calls πάνε σε OpenAI ή Anthropic ανάλογα με task type. Έχει στηθεί per-site cost cap ώστε να μην ξεφεύγει το spend, και smart routing που προτείνει AI reply αλλά απαιτεί human approval πριν σταλεί, εκτός αν agent ξεκινήσει AI auto-mode.

Πώς χειρίζεται το widget visitors που δε θέλουν να επανασυνδεθούν σε παλιά conversation;

Resume conversation banner εμφανίζεται όταν επιστρέφει visitor με υπάρχον conversation. Ο visitor μπορεί να επιλέξει continue ή start new. Branching pre-chat survey ρωτάει qualifying questions πριν συνδεθεί με agent, οπότε το routing γίνεται στο σωστό team από την αρχή. Voice messages και file attachments υποστηρίζονται και τα attachments πάνε direct σε Supabase Storage (bypass edge function για να μην επηρεάζεται upload speed από function cold start).

Παρόμοιο project σε εξέλιξη;

Αν χτίζεις κάτι παρόμοιο και ψάχνεις partner που να ξέρει το τεχνικό terrain, πες μας. 30λεπτη συζήτηση χωρίς δέσμευση.