Preskoči na sadržaj

Projekat 01 · Platforme i dizajn sistemi

Dizajn sistem s kojim web i mobilna verzija ostaju usklađene

CDS sam napravio nakon što sam na jedanaest projekata nailazio na istih pet problema. Ima 74 komponente i 678 testova, a na njemu radi i ovaj sajt.

AngažmanVlastiti proizvod · 6 mjeseci, u toku · samostalno · ovaj sajt radi na njemuObjavljeno

74 / 678

glavna brojka

1 ograničenje

Iste komponente morale su raditi na Next.js-u, Viteu i React Nativeu, a da se web i mobilna verzija ne raziđu.

Priča u 5 koraka

Stack

  • TypeScript
  • Next.js 16
  • React Native 0.87
  • Vite
  • styled-components
  • pnpm workspaces
  • Figma MCP
  • vlastiti ESLint plugin

01 · Kontekst

Web i mobilna verzija proizvoda krenu identično, a dvije godine kasnije dijele samo ime.

U CDS-u dizajn tokeni dolaze iz Figme automatski, preko MCP servera.
Sistem ima 74 komponente i 678 testova, a katalog od 81 stranice generiše se iz izvornog koda.

02 · Pet problema

Na svaki od ovih problema naišao sam na stvarnom projektu prije nego što sam počeo praviti CDS.

Web i mobilna verzija se razilazeRazliku između platformi spušta jedan sloj ispod mjesta poziva, pa kod koji koristi komponentu nikad ne mora provjeravati na kojoj je platformi.
Figma i kod su dva izvora istineDizajn tokeni dolaze iz Figme automatski, preko MCP servera, a ručni put postoji kao rezerva.
Konvencije zapisane u README-u prestaju se poštovatiSvaka invarijanta ima svoju provjeru i build pada čim se neka prekrši.
Svaki novi proizvod počinje sloj komponenti od nuleTo je paket koji već koristi moja finansijska platforma, a na njemu je napravljen i ovaj sajt.
Naivno postavljena tema za više brendova umnožava varijanteKomponente se na boje pozivaju samo preko imena tokena.

03 · Princip

38 od 74 komponente ima native blizanca, što zvuči kao da se pola sistema razišlo.

33 od 38 blizanaca ne uvozi nijednu drugu komponentuTo su listovi koji prevode jedan element platforme, div u View ili input u TextInput, i ne rade ništa više.
Blizanac je dozvoljen samo iz tri razloga, a dva od njih uopšte nisu vezana za elemente.
Drugačiji elementOvo važi za 33 od 38 blizanaca.

04 · Brojke

Komponente74
Sa native blizancima38, od kojih je otprilike polovina doslovno isti fajl
Testovi678 u 62 suite-a
Stranice kataloga81, tabele propsa generisane iz koda
Alati za provjeru~2.450 linija plus 4 ESLint pravila
Bundle, ulaz samo sa Box253.075 B → 241.309 B
Trajanje6 mjeseci, u toku
Koriste gaovaj sajt i moja finansijska platforma

05 · Pregled komponenti

Pregledao sam svih 75 komponenti, koliko ih je sistem tada imao, i našao 188 problema.

Labela na elementu bez ulogeaccessibilityLabel na čvoru bez uloge ne čita nijedna platforma.
Naslijeđeni prop koji nikad ne stigne do elementaOmit<BoxProps, …> ostavlja id, a11yRole, accessibilityLabel i pointerEvents u ugovoru, ali grana koja ih ne destrukturira prosljeđuje ih u ...box, a odatle u style helper koji vraća samo $ propse.
Komentar koji opisuje raniju verziju sistemaBilješka opisuje neko ograničenje, ograničenje se kasnije ukloni, a bilješka ostane.

Povezane usluge

Usluge koje se oslanjaju na ovaj projekat.

Povezani tekstovi

Tekstovi nastali iz ovog projekta.

Projekat 01

Radite na sličnom problemu? Odgovaramo u roku od jednog radnog dana.

Prvi poziv traje 30 minuta i ni na šta vas ne obavezuje.

Opišite nam svoj projekatcontact@microtech.consulting