Selly β ein CRM, das kein Projekt ist.
GiG β GeSaast is Geil.
# ~/.config/nabez/stack.yml
languages: [Rust, SQL, TypeScript, CSS]
frontend: [Leptos, WebAssembly] # average enjoyer, wa
backend: [Axum, tokio, sqlx, PostgreSQL]
infra: [Server in DE, Docker, Caddy, GitHub Actions]
ai: [Ollama] # selbst jehostet, bleibt im Haus1.141.826 Zeilen in 7.456 Dateien davon Tests
Rust 926.998 ββββββββββββββββββββ 81 % 337.800
ββ Axum-API & Worker 433.192 ββββββββββββββββββββ 38 % 256.580
ββ Leptos-Frontend 369.061 ββββββββββββββββββββ 32 % 44.193
ββ Fachlogik, 25 Services 63.472 ββββββββββββββββββββ 6 % 11.440
ββ Kern & Infrastruktur 54.043 ββββββββββββββββββββ 5 % 22.871
ββ Server, CLI & Kleinkram 7.230 ββββββββββββββββββββ 1 % 2.716
CSS 72.564 ββββββββββββββββββββ 6 %
ββ Leptos-UI-Styles 68.840
ββ Website 3.724
TypeScript (Playwright-E2E) 50.279 ββββββββββββββββββββ 4 % 50.279
SQL (266 Migrationen) 24.794 ββββββββββββββββββββ 2 %
Doku, Config, Skripte 67.191 ββββββββββββββββββββ 6 %
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Testcode: 388.079 Zeilen β een Drittel vom Janzen, wa.
10.639 Tests Β· 293 E2E-Specs Β· 266 Migrationen Β· 45 Crates Β· 29 Leptos-Seiten Β· 1 Binary
running 9 tests
test dashboard_tickt_live_ohne_f5 .................. ok
test dashboard_laeuft_aufm_buero_tv ................ ok
test eine_million_kontakte_liste_in_5_ms ........... ok
test so_viele_server_wie_de_willst ................. ok
test prod_umzug_in_46_sekunden ..................... ok
test videocall_ohne_zoom_und_teams ................. ok
test zehn_leute_eine_liste_keiner_ruft_doppelt ..... ok
test push_aufs_iphone_ohne_app_store ............... ok
test kunde_a_sieht_nie_die_daten_von_kunde_b ....... ok
test result: ok. 9 passed; 0 failed; 0 ignored
Wie jetz? Kiek ma, so jeht dit:
- Dashboard tickt live, ohne F5 β HΓΆrma: Deal jewonnen, und zack, bei allen springt die Kachel um. Keener drΓΌckt F5, keener wartet. Dit lΓ€uft per WebSocket, een
tokio::broadcast-Kanal pro Mandant, wa. - Dashboard aufm BΓΌro-TV β Dashboard an die Wand, Alta, wie inne Kneipe dit FuΓballspiel. Im CRM kriegste Adresse und Code, der Fernseher tippt den ein β fertich. Keen Login am JerΓ€t, freijegeben wird im CRM.
- 1 Mio Kontakte, Liste in 5 ms β Wa ham dit XXL jetestet: 1,05 Millionen Kontakte, 9,76 Millionen Zeilen. Kontaktliste in 4,7 ms, Profil in 1,4 ms, Feeds aus Tabellen mit 2β3 Millionen Zeilen in 1β4 ms. Dit is schneller, als de βMoinβ sagen kannst.
- So viele Server wie de willst β Een Binary, und dit startest de so oft de willst. Alle machen OberflΓ€che und API, die Hintergrund-Jobs fΓ€hrt aber nur EENER (Postgres-Advisory-Lock). Kippt der um, ΓΌbernimmt der nΓ€chste. Automatisch, keener muss wat drΓΌcken.
- Prod-Umzug in 46 Sekunden β Neuer Server, Alta: einfrieren, Dump, rΓΌber, einspielen, hochfahren. 46 Sekunden. Zeilen jezΓ€hlt, PrΓΌfsumme gleich, nix verloren.
- Videocall ohne Zoom und Teams β Selly Meet: Jeder Termin hat seinen eigenen Videoraum. Der Kunde kommt per Link rein, ohne Konto, ohne JedΓΆns, und wartet inne Lobby, bis de ihn reinlΓ€sst. WebRTC, eigener TURN-Server.
- Zehn Leute, eine Liste, keiner ruft doppelt β Kaltakquise im Team, wa: Wer 'n Kontakt zieht, hat den 10 Minuten fΓΌr sich alleene (Claim-Lease in Postgres). Keen Lebenszeichen? Dann jeht er zurΓΌck inne Liste.
- Push aufs iPhone, ohne App Store β Web Push mit VAPID und aes128gcm, allet selbst jebaut. LΓ€uft auf Mac, iPhone (als Home-Bildschirm-App) und sogar auf der Apple Watch, Alta.
- Kunde A sieht nie die Daten von Kunde B β Row-Level-Security mit FORCE auf 210 von 225 Tabellen, dazu FremdschlΓΌssel ΓΌber
(tenant_id, id). Een Verweis auf fremde Daten kriegste physisch nich mal rinjeschrieben. Dit is dicht, Leute.
βΈ selly β dit Produkt: Multi-Tenant-CRM, een Binary, 45 Crates Β· sellycrm.de
βΈ selly-web β die Website: statisch, keen JavaScript, keene fremden Server




