Files
Excalidraw/frontend
Tomas Dvorak 910546230d
Docker Images / Build and push (push) Failing after 21s
refactor(editor): improve type safety and optimize build chunks
Refactor the Editor component to replace `any` types with explicit interfaces for Excalidraw props, library items, and elements, improving type safety and developer experience.

Additionally, update the Vite configuration to implement manual chunking for large dependencies like Excalidraw, React, and Zustand to optimize bundle loading and improve build performance.
2026-05-09 19:27:36 +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
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