Files
Excalidraw/frontend
Tomas Dvorak f3f9e99a97 refactor(frontend): improve type safety and migrate to ESLint 9
Migrate the frontend to ESLint 9, add `eslint.config.mjs`, and replace various `any` types with more specific or safer alternatives across the codebase.

- Update `package.json` with new ESLint and TypeScript-ESLint dependencies
- Replace `any` with `Record<string, unknown>` or specific types in `TemplatePicker`, `Editor`, and `FileBrowser`
- Improve error handling in `TeamSettings` and `Templates` using type guards
- Add explicit type imports for Excalidraw elements in `Editor.tsx`
- Refactor `Modal.tsx` for cleaner conditional logic
- Add `check` script to `package.json` for type checking
2026-04-29 13:30:24 +02:00
..
2026-04-27 09:18:48 +02:00
2026-04-29 11:31:56 +02:00
2026-04-27 09:18:48 +02:00
2026-04-27 09:18:48 +02:00
2024-03-29 09:55:57 +00:00

Excalidraw FULL Frontend

Production-grade frontend for the Excalidraw FULL overhaul.

Stack

  • React 19 + TypeScript
  • Vite (fast HMR, optimized builds)
  • SCSS Modules (scoped styles)
  • Zustand (state management)
  • React Router (routing)
  • Lucide React (icons)

Design System

Excalidraw's hand-drawn aesthetic preserved:

  • Island UI: Floating panels with subtle shadows
  • Primary: Purple (#6965db)
  • Typography: Inter font, clear hierarchy
  • Shadows: Multi-layer island shadows
  • Radii: Consistent 6-12px rounding

Pages

Route Page Features
/ Dashboard Stats, recent drawings, activity, templates
/login Login Email/password + GitHub OAuth
/signup Signup Account creation
/files File Browser Folder tree, grid/list view, drawing cards
/team Team Settings Members, roles, invites
/settings User Settings Profile, account, notifications, appearance
/templates Templates Gallery with categories
/drawing/:id Editor Canvas placeholder (integrate Excalidraw)

Quick Start

npm install
npm run dev        # Development server at http://localhost:3000
npm run typecheck  # Type checking
npm run build      # Production build

API Integration

Update src/services/api.ts endpoints to match your Go backend:

  • GET /api/auth/me - Current user
  • POST /api/auth/login - Login
  • GET /api/drawings - List drawings
  • GET /api/teams - List teams

The Vite proxy forwards /api to http://localhost:3002.

Canvas Integration

To integrate the existing Excalidraw canvas:

  1. Install package: npm install @excalidraw/excalidraw
  2. Import in Editor.tsx: import { Excalidraw } from '@excalidraw/excalidraw'
  3. Replace the placeholder div with the <Excalidraw /> component
  4. Wire up onChange to save via API

Project Structure

src/
├── components/    # Reusable UI (Button, Input, Card, Layout)
├── pages/         # Route components
├── stores/        # Zustand state
├── services/      # API clients
├── types/         # TypeScript interfaces
└── styles/        # SCSS variables, global styles