# Story 1.3: Visualisation dans la Smart Grid (Frontend) Status: review ## Story As a Julien (Analyst), I want to see my uploaded data in an interactive high-speed grid, so that I can explore the raw data effortlessly. ## Acceptance Criteria 1. **Virtualization:** The grid renders 50,000+ rows without browser lag using TanStack Table virtualization. 2. **Arrow Integration:** The frontend reads the Apache Arrow stream from the backend API using `apache-arrow` library. 3. **Data Display:** Columns are rendered with correct formatting based on metadata (e.g., numbers right-aligned, dates formatted). 4. **Visual Foundation:** The grid uses the "Smart Grid" design (compact density, JetBrains Mono font) as defined in UX specs. 5. **Basic Interaction:** Users can scroll vertically and horizontally fluidly. ## Tasks / Subtasks - [x] **Dependencies & Setup** (AC: 2) - [x] Install `apache-arrow`, `@tanstack/react-table`, `@tanstack/react-virtual`, `zustand`. - [x] Create `frontend/src/lib/arrow-client.ts` to handle binary stream parsing. - [x] **Smart Grid Component** (AC: 1, 4, 5) - [x] Create `frontend/src/features/smart-grid/components/SmartGrid.tsx`. - [x] Implement virtualized row rendering. - [x] Apply Shadcn UI styling and "Lab & Tech" theme. - [x] **Integration** (AC: 3) - [x] Connect `upload` form success state to Grid data loading. - [x] Implement `useGridStore` (Zustand) to hold the loaded table state. - [x] Render actual data from the uploaded file. ## Dev Notes - **Performance:** Optimized binary stream parsing using Apache Arrow IPC. Zero unnecessary JSON parsing. - **State:** Zustand used for high-frequency updates and persistence across session. - **Layout:** Implemented responsive workspace with sticky header and virtualized body. ### Project Structure Notes - Organized into `features/smart-grid` and `features/uploader`. - Centralized state in `store/use-grid-store.ts`. ### References - [Source: ux-design-specification.md#Core User Experience] - [Source: architecture.md#Frontend Architecture] ## Dev Agent Record ### Agent Model Used {{agent_model_name_version}} ### Completion Notes List - Successfully integrated `apache-arrow` for binary data ingestion. - Implemented `` with `@tanstack/react-virtual` for 50k+ row performance. - Built a functional `` that communicates with the FastAPI backend. - Applied "Lab & Tech" styling with Tailwind CSS. ### File List - /frontend/src/features/smart-grid/components/SmartGrid.tsx - /frontend/src/features/uploader/components/FileUploader.tsx - /frontend/src/lib/arrow-client.ts - /frontend/src/lib/utils.ts - /frontend/src/store/use-grid-store.ts - /frontend/src/app/page.tsx