Genetec UI Kit - Event Manager
Tutti i progetti

Genetec · 2025

Genetec UI Kit - Event Manager

Rilasciato
Genetec UI Kit - Event Manager logo
ReactTypeScriptViteZustandTanStack TableReact Hook FormZodshadcn/uiRadix UITailwind CSSSonner

Panoramica

Genetec is a global physical security technology company headquartered in Montreal, delivering unified platforms for video surveillance, access control, and license plate recognition. The test task required building a small library of three reusable, production-quality components and showcasing them in a realistic demo app. The DataGrid handles 200 mock events with client-side pagination, sorting, multi-column filtering, configurable column visibility and labels, and loading/empty/error states. The Timeline renders events grouped by calendar day with full keyboard navigation (Left/Right between groups, Up/Down within groups) and aria-live screen-reader announcements on focus move. The Event Form modal uses React Hook Form + Zod - validates required title and date, shows field-level messages, focuses the first invalid field on submit, and provides cancel/save flow with a success region. All three components are wired through a domain-split Zustand store so adding an event from the form updates both the DataGrid and the Timeline in real time.

La Sfida

The task required three independently reusable components - not just a monolithic page. Each had accessibility requirements (WCAG 2.1 AA keyboard navigation, aria-live announcements) and had to share state cleanly. DataGrid needed configurable columns (hide/show, relabel, custom accessor) and explicit loading/empty/error states. The Form had to focus the first invalid field on submit - a detail that requires deliberate DOM management.

La Soluzione

Built with Vite + React 19 + TypeScript. Zustand store is split into domain slices (event, datagrid, timeline, modal) - each component owns its slice, shared data flows through the event slice. TanStack Table v8 drives the DataGrid. Timeline keyboard navigation is custom-built with aria-live="polite" for screen reader announcements. React Hook Form + Zod handle validation with useRef-based focus management for the first invalid field. shadcn/ui + Radix UI provide accessible primitive components throughout.

Il Mio Ruolo

Sole developer - designed and built the entire application as a technical test assignment for the React Developer position at Genetec.

Risultati

  • DataGrid: 200 righe, paginazione, ordinamento, multi-filtro, visibilità colonna configurabile
  • Timeline: eventi raggruppati per giorno, navigazione con tasti freccia, annunci aria-live
  • Modulo evento: validazione Zod, focus del primo campo non valido, regione di successo
  • Nuovo evento dal modulo aggiorna DataGrid e Timeline in tempo reale
  • Store Zustand diviso per dominio - ogni porzione di componente è indipendentemente riutilizzabile

Stack Tecnologico

ReactTypeScriptViteZustandTanStack TableReact Hook FormZodshadcn/uiRadix UITailwind CSSSonner

Progetto simile?

Discutiamo i tuoi requisiti e costruiamo qualcosa di grande.

Avvia un progetto