Excalidraw - Kompletny Przewodnik po Wirtualnej Tablicy do Diagramรณw
Czym jest Excalidraw?
Excalidraw to open-source'owa wirtualna tablica do rysowania diagramรณw w charakterystycznym stylu "hand-drawn" (rฤcznie rysowanym). W przeciwieลstwie do tradycyjnych narzฤdzi do diagramรณw jak Lucidchart czy draw.io, Excalidraw celowo produkuje niedoskonaลe, "ludzkie" linie i ksztaลty, co sprawia, ลผe diagramy wyglฤ dajฤ naturalnie i nieformalnie - idealnie do szkicowania pomysลรณw, brainstormingu i komunikacji technicznej.
Excalidraw zostaล stworzony przez Christophera Chedeau (byลego inลผyniera Facebook) w 2020 roku i szybko zdobyล ogromnฤ popularnoลฤ w spoลecznoลci developerskiej. Narzฤdzie jest uลผywane przez zespoลy w firmach takich jak Meta, Google, Microsoft i Vercel do dokumentacji technicznej, projektowania systemรณw i wizualizacji architektury.
Dlaczego Excalidraw?
Kluczowe zalety
- Hand-drawn style - Naturalny, nieformalny wyglฤ d zachฤcajฤ cy do iteracji
- Instant start - Zero konfiguracji, dziaลa w przeglฤ darce
- Real-time collaboration - Wspรณลpraca w czasie rzeczywistym
- Open-source - Darmowy, moลผna hostowaฤ samemu
- Privacy-first - End-to-end encryption dla wspรณลdzielonych sesji
- Libraries ecosystem - Gotowe zestawy ikon i ksztaลtรณw
- Export flexibility - PNG, SVG, JSON, clipboard
- VS Code integration - Natywne rozszerzenie do edycji
Excalidraw vs inne narzฤdzia
| Cecha | Excalidraw | draw.io | Lucidchart | Miro |
|---|---|---|---|---|
| Styl | Hand-drawn | Clean/Formal | Formal | Mix |
| Cena | Free/OSS | Free | $7.95+/mo | $8+/mo |
| Self-host | โ Tak | โ Tak | โ Nie | โ Nie |
| Real-time collab | โ Tak | โ Tak | โ Tak | โ Tak |
| E2E encryption | โ Tak | โ Nie | โ Nie | โ Nie |
| VS Code | โ Extension | โ Nie | โ Nie | โ Nie |
| Offline | โ PWA | โ Desktop | โ Nie | โ Nie |
Podstawy Excalidraw
Interfejs uลผytkownika
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Toolbar (narzฤdzia) โ
โ [Select] [Rectangle] [Diamond] [Ellipse] [Arrow] [Line] [Text] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Canvas (nieskoลczony) โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโ โ
โ โ Twรณj diagram โโโโโโโโโโโโโโโโโโ โ
โ โ (hand-drawn) โ โ โ
โ โโโโโโโโโโโโโโโโโโโโ โผ โ
โ โโโโโโโโโโโโ โ
โ โ Element โ โ
โ โโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [Stroke] [Background] [Fill] [Stroke width] [Sloppiness] [Edge]โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโPodstawowe ksztaลty
Rectangle (R):
โโโโโโโโโโโโโโโโโโ
โ โ
โ Prostokฤ
t โ
โ โ
โโโโโโโโโโโโโโโโโโ
Diamond (D):
โ
โฑ โฒ
โฑ โฒ
โ Romb โ
โฒ โฑ
โฒ โฑ
โ
Ellipse (O):
โญโโโโโโโโโโโฎ
โฑ โฒ
โ Elipsa โ
โฒ โฑ
โฐโโโโโโโโโโโฏ
Arrow (A):
โโโโโโโโโโโโโโโโโโโโโบ
Line (L):
โโโโโโโโโโโโโโโโโโโโ
Text (T):
Dowolny tekstSkrรณty klawiszowe
NARZฤDZIA:
1 lub V - Selection (zaznaczanie)
2 lub R - Rectangle
3 lub D - Diamond
4 lub O - Ellipse (Oval)
5 lub A - Arrow
6 lub L - Line
7 lub P - Draw (wolne rysowanie)
8 lub T - Text
9 - Image
0 lub E - Eraser
EDYCJA:
Ctrl/Cmd + D - Duplicate
Ctrl/Cmd + G - Group
Ctrl/Cmd + Shift + G - Ungroup
Ctrl/Cmd + [ - Send backward
Ctrl/Cmd + ] - Bring forward
Ctrl/Cmd + Shift + [ - Send to back
Ctrl/Cmd + Shift + ] - Bring to front
Delete/Backspace - Delete selected
WIDOK:
Ctrl/Cmd + +/- - Zoom in/out
Ctrl/Cmd + 0 - Reset zoom
Ctrl/Cmd + 1 - Fit to content
Space + drag - Pan canvas
Scroll - Zoom (with Ctrl) / Pan
EKSPORT:
Ctrl/Cmd + S - Save to file
Ctrl/Cmd + Shift + E - Export image
Ctrl/Cmd + Shift + C - Copy to clipboard as PNGTworzenie diagramรณw
Diagram architektury systemu
Przykลadowy diagram architektury:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Internet โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโ
โ Cloudflare โ
โ (CDN/WAF) โ
โโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
โ Vercel โ โ Railway โ
โ (Frontend) โโโโโโโโโโโโโโโโบโ (Backend) โ
โ Next.js โ API โ NestJS โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
โ Supabase โ โ Neon โ โ Upstash โ
โ (Auth) โ โ (PostgreSQL) โ โ (Redis) โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโDatabase schema diagram
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ users โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id โ uuid โ PRIMARY KEY โ
โ email โ varchar โ UNIQUE NOT NULL โ
โ name โ varchar โ NOT NULL โ
โ created_at โ timestamp โ DEFAULT now() โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ 1:N
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ posts โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id โ uuid โ PRIMARY KEY โ
โ title โ varchar โ NOT NULL โ
โ content โ text โ โ
โ author_id โ uuid โ FOREIGN KEY โ users.id โ
โ published โ boolean โ DEFAULT false โ
โ created_at โ timestamp โ DEFAULT now() โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ N:M
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ post_tags (junction) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ post_id โ uuid โ FOREIGN KEY โ posts.id โ
โ tag_id โ uuid โ FOREIGN KEY โ tags.id โ
โ PRIMARY KEY (post_id, tag_id) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโUser flow diagram
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโ
โ Start โโโโโโบโ Landing โโโโโโบโ Sign Up โโโโโโบโ Email โ
โ โ โ Page โ โ Form โ โ Verify โ
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโฌโโโโโ
โ โ
โ Already has account โ Verified
โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Log In โโโโโโโโโโโโโโโโโโโโโโโโโโโ Dashboard โ
โ Form โ โ (Home) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโโโโโโโโ
โ โ
โ Invalid credentials โ
โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Error โ โ Feature โ
โ Message โ โ Pages โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโBiblioteki (Libraries)
Korzystanie z bibliotek
1. Kliknij ikonฤ "Library" (๐) w toolbarze
2. Browse libraries lub importuj wลasne
3. Przeciฤ
gnij elementy na canvas
Popularne biblioteki:
โโโ Software Architecture
โ โโโ AWS icons
โ โโโ Azure icons
โ โโโ GCP icons
โ โโโ Kubernetes
โ
โโโ UI/UX
โ โโโ Wireframe kit
โ โโโ Mobile UI
โ โโโ Web components
โ
โโโ Business
โ โโโ Flowchart
โ โโโ Org chart
โ โโโ Process diagrams
โ
โโโ Technical
โโโ Network diagrams
โโโ Database schemas
โโโ Sequence diagramsTworzenie wลasnej biblioteki
// Excalidraw library format (.excalidrawlib)
{
"type": "excalidrawlib",
"version": 2,
"source": "https://excalidraw.com",
"libraryItems": [
{
"id": "custom-component-1",
"status": "published",
"elements": [
{
"type": "rectangle",
"x": 0,
"y": 0,
"width": 200,
"height": 100,
"strokeColor": "#1e1e1e",
"backgroundColor": "#a5d8ff",
"fillStyle": "solid"
},
{
"type": "text",
"x": 50,
"y": 40,
"text": "Component",
"fontSize": 16
}
],
"name": "My Custom Component"
}
]
}VS Code Extension
Instalacja
# VS Code Marketplace
code --install-extension pomdtr.excalidraw-editor
# Lub przez GUI:
# Extensions โ Search "Excalidraw" โ InstallUลผycie
1. Utwรณrz plik z rozszerzeniem .excalidraw lub .excalidraw.svg
2. VS Code automatycznie otworzy edytor Excalidraw
3. Rysuj diagramy bezpoลrednio w IDE
4. Zapisz jako SVG (embeddowalne) lub JSON (edytowalne)
Struktura projektu z Excalidraw:
my-project/
โโโ docs/
โ โโโ architecture.excalidraw.svg
โ โโโ database-schema.excalidraw
โ โโโ user-flow.excalidraw.png
โโโ src/
โโโ README.mdEmbedowanie w Markdown
<!-- W README.md lub dokumentacji -->
## Architektura Systemu

## Database Schema

## User Flow
<img src="./docs/user-flow.excalidraw.svg" alt="User Flow" width="800">Excalidraw API i integracja
React Component
// Instalacja
npm install @excalidraw/excalidraw
// App.tsx
import { Excalidraw } from '@excalidraw/excalidraw'
function DiagramEditor() {
const [excalidrawAPI, setExcalidrawAPI] = useState(null)
const handleChange = (elements, appState, files) => {
console.log('Elements changed:', elements)
// Zapisz do bazy danych lub localStorage
localStorage.setItem('diagram', JSON.stringify(elements))
}
const handleExport = async () => {
if (!excalidrawAPI) return
// Export jako PNG
const blob = await excalidrawAPI.exportToBlob({
mimeType: 'image/png',
exportWithDarkMode: false,
exportBackground: true
})
// Download
const url = URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = 'diagram.png'
link.click()
}
return (
<div style={{ height: '600px', width: '100%' }}>
<Excalidraw
excalidrawAPI={(api) => setExcalidrawAPI(api)}
onChange={handleChange}
initialData={{
elements: JSON.parse(localStorage.getItem('diagram') || '[]'),
appState: { viewBackgroundColor: '#ffffff' }
}}
UIOptions={{
canvasActions: {
export: { saveFileToDisk: true }
}
}}
/>
<button onClick={handleExport}>Export PNG</button>
</div>
)
}Collaborative mode
import { Excalidraw } from '@excalidraw/excalidraw'
import { useCollaboration } from './useCollaboration'
function CollaborativeDiagram({ roomId }) {
const {
elements,
collaborators,
onPointerUpdate,
onElementsChange
} = useCollaboration(roomId)
return (
<Excalidraw
initialData={{ elements }}
onChange={onElementsChange}
onPointerUpdate={onPointerUpdate}
isCollaborating={true}
renderTopRightUI={() => (
<div className="collaborators">
{collaborators.map(user => (
<Avatar key={user.id} name={user.name} color={user.color} />
))}
</div>
)}
/>
)
}
// Hook do real-time collaboration (przykลad z Socket.io)
function useCollaboration(roomId) {
const [elements, setElements] = useState([])
const [collaborators, setCollaborators] = useState([])
const socketRef = useRef(null)
useEffect(() => {
const socket = io('wss://your-server.com')
socketRef.current = socket
socket.emit('join-room', roomId)
socket.on('elements-update', (newElements) => {
setElements(newElements)
})
socket.on('collaborators-update', (users) => {
setCollaborators(users)
})
return () => socket.disconnect()
}, [roomId])
const onElementsChange = useCallback((newElements) => {
setElements(newElements)
socketRef.current?.emit('elements-change', {
roomId,
elements: newElements
})
}, [roomId])
return { elements, collaborators, onElementsChange }
}Export do rรณลผnych formatรณw
import { exportToSvg, exportToBlob, serializeAsJSON } from '@excalidraw/excalidraw'
// Export do SVG
const exportSVG = async (elements, appState) => {
const svg = await exportToSvg({
elements,
appState,
files: null,
exportPadding: 10
})
// SVG jako string
const svgString = new XMLSerializer().serializeToString(svg)
return svgString
}
// Export do PNG/JPEG
const exportImage = async (elements, appState, mimeType = 'image/png') => {
const blob = await exportToBlob({
elements,
appState,
mimeType,
quality: 0.9, // dla JPEG
exportWithDarkMode: false
})
return blob
}
// Export do JSON (do pรณลบniejszej edycji)
const exportJSON = (elements, appState) => {
return serializeAsJSON(elements, appState, {}, 'local')
}
// Import z JSON
const importFromJSON = (jsonString) => {
const data = JSON.parse(jsonString)
return {
elements: data.elements,
appState: data.appState
}
}Self-hosting Excalidraw
Docker
# Dockerfile
FROM node:20-alpine AS builder
WORKDIR /app
# Clone Excalidraw
RUN git clone https://github.com/excalidraw/excalidraw.git .
# Install dependencies
RUN yarn install --frozen-lockfile
# Build
RUN yarn build
# Production image
FROM nginx:alpine
COPY /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]# docker-compose.yml
version: '3.8'
services:
excalidraw:
build: .
ports:
- "8080:80"
restart: unless-stopped
# Opcjonalnie: backend dla collaboration
excalidraw-room:
image: excalidraw/excalidraw-room
ports:
- "3002:80"
environment:
- PORT=80Kubernetes
# excalidraw-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: excalidraw
spec:
replicas: 2
selector:
matchLabels:
app: excalidraw
template:
metadata:
labels:
app: excalidraw
spec:
containers:
- name: excalidraw
image: excalidraw/excalidraw:latest
ports:
- containerPort: 80
resources:
limits:
memory: "256Mi"
cpu: "200m"
---
apiVersion: v1
kind: Service
metadata:
name: excalidraw
spec:
selector:
app: excalidraw
ports:
- port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: excalidraw
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: excalidraw.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: excalidraw
port:
number: 80Excalidraw+ (Premium)
Funkcje premium
Excalidraw+ ($7/miesiฤ
c lub $60/rok):
โ
โโโ End-to-end encryption
โ โโโ Klucz szyfrujฤ
cy tylko u uลผytkownika
โ
โโโ Wiฤkszy storage
โ โโโ Unlimited diagrams
โ โโโ Wiฤksze pliki
โ
โโโ Custom fonts
โ โโโ Import wลasnych fontรณw
โ
โโโ Password-protected links
โ โโโ Dodatkowa warstwa bezpieczeลstwa
โ
โโโ Custom branding
โ โโโ Logo na exportach
โ
โโโ Priority support
โ โโโ Szybsza pomoc
โ
โโโ Cloud backup
โโโ Automatyczne backupyZastosowania praktyczne
1. Dokumentacja techniczna
# System Architecture
## Overview
Nasz system skลada siฤ z trzech gลรณwnych komponentรณw:

### Frontend
Aplikacja Next.js hostowana na Vercel...
### Backend
API NestJS na Railway...
### Database
PostgreSQL na Neon z branching...2. Code review diagrams
PR #123: Refactor authentication flow
Before:
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Client โโโโโโบโ Server โโโโโโบโ DB โ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ โ
โ Password โ Check password
โ (plain!) โ (slow query!)
โโโโโโโโโโโโโโโโโโ
After:
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Client โโโโโโบโ Server โโโโโโบโ Redis โโโโโโบโ DB โ
โโโโโโโโโโโโ โโโโโโโโโโโโ โ (cache) โ โโโโโโโโโโโโ
โ โ โโโโโโโโโโโโ
โ Hashed โ Session
โ password โ check first
โโโโโโโโโโโโโโโโโโ3. Meeting notes
Sprint Planning - 2025-01-24
Epic: User Dashboard Redesign
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Dashboard MVP โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ Stats โ โ Chart โ โ Recent โ โ
โ โ Cards โ โ Widget โ โ Activity โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Data Table โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tasks:
โโโ [x] Stats cards component (2 pts) - @alice
โโโ [ ] Chart integration (5 pts) - @bob
โโโ [ ] Activity feed (3 pts) - @charlie
โโโ [ ] Data table with pagination (5 pts) - @david4. Onboarding dokumentacja
New Developer Onboarding
Day 1: Setup
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Clone โโโโโโบโ Install โโโโโโบโ Run โ
โ Repo โ โ Deps โ โ Dev โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโ
โ Explore UI โ
โ on :3000 โ
โโโโโโโโโโโโโโโ
Day 2: First PR
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Read โโโโโโบโ Pick โโโโโโบโ Create โ
โ CLAUDE โ โ Issue โ โ Branch โ
โ .md โ โโโโโโโโโโโ โโโโโโฌโโโโโ
โโโโโโโโโโโ โ
โผ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Code โโโโโโบโ Test โโโโโโบโ Push โ
โ Change โ โ Local โ โ PR โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโTips & Tricks
Stylizacja elementรณw
Stroke styles:
โโโ Solid โโโโโโโโโโโโ
โโโ Dashed - - - - - -
โโโ Dotted ยทยทยทยทยทยทยทยทยทยทยทยท
Fill styles:
โโโ Solid [โ โ โ โ โ โ โ โ ]
โโโ Hachure [////////]
โโโ Cross-hatch [XXXXXXXX]
โโโ None [ ]
Sloppiness (hand-drawn intensity):
โโโ Architect (0) - Clean lines
โโโ Artist (1) - Slight wobble
โโโ Cartoonist (2) - Very wobbly
Edge style:
โโโ Sharp โโโโโโโ
โโโ Round โญโโโโโโฎKeyboard workflow
Efektywny workflow:
1. R โ Narysuj rectangle
2. T โ Dodaj tekst wewnฤ
trz
3. A โ Poลฤ
cz strzaลkฤ
z innym elementem
4. Ctrl+D โ Duplikuj i przesuล
5. Ctrl+G โ Grupuj powiฤ
zane elementy
6. Ctrl+Shift+E โ Eksportuj gotowy diagramCanvas organization
Duลผe diagramy - organizacja:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TITLE AREA โ
โ System Architecture v2.1 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ SECTION 1 โ โ SECTION 2 โ โ
โ โ Frontend โ โ Backend โ โ
โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ SECTION 3 โ โ SECTION 4 โ โ
โ โ Database โ โ External โ โ
โ โ โ โ Services โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ LEGEND: [Component] โโโบ [Dependency] ยทยทยท> [Optional] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโFAQ - Czฤsto zadawane pytania
Czy Excalidraw jest darmowy?
Tak, podstawowa wersja Excalidraw jest caลkowicie darmowa i open-source. Moลผesz uลผywaฤ excalidraw.com bez konta, a takลผe hostowaฤ wลasnฤ instancjฤ. Excalidraw+ to opcjonalna pลatna wersja z dodatkowymi funkcjami jak szyfrowanie i wiฤkszy storage.
Jak zapisaฤ diagram offline?
- Export do pliku .excalidraw - Peลna edytowalnoลฤ, moลผna otworzyฤ pรณลบniej
- Export do SVG - Wektor, moลผna edytowaฤ w Figma/Illustrator
- Export do PNG - Raster, do dokumentacji
- Copy to clipboard - Szybkie wklejanie do innych aplikacji
Czy mogฤ uลผywaฤ Excalidraw w VS Code?
Tak, zainstaluj rozszerzenie "Excalidraw" od pomdtr. Umoลผliwia tworzenie i edycjฤ plikรณw .excalidraw bezpoลrednio w IDE.
Jak wspรณลpracowaฤ w czasie rzeczywistym?
- Kliknij "Live collaboration" w menu
- Udostฤpnij wygenerowany link
- Kaลผdy z linkiem moลผe edytowaฤ
- Sesje sฤ E2E encrypted
Excalidraw vs Mermaid?
- Excalidraw - Wizualny, drag & drop, hand-drawn style
- Mermaid - Tekstowy (code-based), auto-layout, formal style
Oba majฤ zastosowania - Mermaid do prostych flowcharts w markdown, Excalidraw do bardziej kreatywnych diagramรณw.
Podsumowanie
Excalidraw to doskonaลe narzฤdzie do:
- Szkicowania architektury - System design, infrastruktura
- Database schemas - Wizualizacja relacji
- User flows - UX documentation
- Wireframes - Szybkie prototypy UI
- Meeting notes - Wizualne notatki
- Technical docs - Diagramy w dokumentacji
- Code reviews - Wyjaลnianie zmian wizualnie
Hand-drawn style sprawia, ลผe diagramy wyglฤ dajฤ nieformalnie, co zachฤca do iteracji i dyskusji - idealne dla zespoลรณw agile i dokumentacji technicznej.
Excalidraw - a complete guide to the virtual whiteboard for diagrams
What is Excalidraw?
Excalidraw is an open-source virtual whiteboard for drawing diagrams in a distinctive "hand-drawn" style. Unlike traditional diagramming tools such as Lucidchart or draw.io, Excalidraw intentionally produces imperfect, "human" lines and shapes, making diagrams look natural and informal - perfect for sketching ideas, brainstorming, and technical communication.
Excalidraw was created by Christopher Chedeau (a former Facebook engineer) in 2020 and quickly gained enormous popularity in the developer community. The tool is used by teams at companies like Meta, Google, Microsoft, and Vercel for technical documentation, system design, and architecture visualization.
Why Excalidraw?
Key advantages
- Hand-drawn style - Natural, informal look that encourages iteration
- Instant start - Zero configuration, works in the browser
- Real-time collaboration - Work together in real time
- Open-source - Free, can be self-hosted
- Privacy-first - End-to-end encryption for shared sessions
- Libraries ecosystem - Ready-made icon and shape sets
- Export flexibility - PNG, SVG, JSON, clipboard
- VS Code integration - Native extension for editing
Excalidraw vs other tools
| Feature | Excalidraw | draw.io | Lucidchart | Miro |
|---|---|---|---|---|
| Style | Hand-drawn | Clean/Formal | Formal | Mix |
| Price | Free/OSS | Free | $7.95+/mo | $8+/mo |
| Self-host | โ Yes | โ Yes | โ No | โ No |
| Real-time collab | โ Yes | โ Yes | โ Yes | โ Yes |
| E2E encryption | โ Yes | โ No | โ No | โ No |
| VS Code | โ Extension | โ No | โ No | โ No |
| Offline | โ PWA | โ Desktop | โ No | โ No |
Excalidraw basics
User interface
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Toolbar (tools) โ
โ [Select] [Rectangle] [Diamond] [Ellipse] [Arrow] [Line] [Text] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Canvas (infinite) โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโ โ
โ โ Your diagram โโโโโโโโโโโโโโโโโโ โ
โ โ (hand-drawn) โ โ โ
โ โโโโโโโโโโโโโโโโโโโโ โผ โ
โ โโโโโโโโโโโโ โ
โ โ Element โ โ
โ โโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [Stroke] [Background] [Fill] [Stroke width] [Sloppiness] [Edge]โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโBasic shapes
Rectangle (R):
โโโโโโโโโโโโโโโโโโ
โ โ
โ Rectangle โ
โ โ
โโโโโโโโโโโโโโโโโโ
Diamond (D):
โ
โฑ โฒ
โฑ โฒ
โ Diamond โ
โฒ โฑ
โฒ โฑ
โ
Ellipse (O):
โญโโโโโโโโโโโฎ
โฑ โฒ
โ Ellipse โ
โฒ โฑ
โฐโโโโโโโโโโโฏ
Arrow (A):
โโโโโโโโโโโโโโโโโโโโโบ
Line (L):
โโโโโโโโโโโโโโโโโโโโ
Text (T):
Any text hereKeyboard shortcuts
TOOLS:
1 or V - Selection (select elements)
2 or R - Rectangle
3 or D - Diamond
4 or O - Ellipse (Oval)
5 or A - Arrow
6 or L - Line
7 or P - Draw (freehand drawing)
8 or T - Text
9 - Image
0 or E - Eraser
EDITING:
Ctrl/Cmd + D - Duplicate
Ctrl/Cmd + G - Group
Ctrl/Cmd + Shift + G - Ungroup
Ctrl/Cmd + [ - Send backward
Ctrl/Cmd + ] - Bring forward
Ctrl/Cmd + Shift + [ - Send to back
Ctrl/Cmd + Shift + ] - Bring to front
Delete/Backspace - Delete selected
VIEW:
Ctrl/Cmd + +/- - Zoom in/out
Ctrl/Cmd + 0 - Reset zoom
Ctrl/Cmd + 1 - Fit to content
Space + drag - Pan canvas
Scroll - Zoom (with Ctrl) / Pan
EXPORT:
Ctrl/Cmd + S - Save to file
Ctrl/Cmd + Shift + E - Export image
Ctrl/Cmd + Shift + C - Copy to clipboard as PNGCreating diagrams
System architecture diagram
Example architecture diagram:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Internet โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโ
โ Cloudflare โ
โ (CDN/WAF) โ
โโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
โ Vercel โ โ Railway โ
โ (Frontend) โโโโโโโโโโโโโโโโบโ (Backend) โ
โ Next.js โ API โ NestJS โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ
โ Supabase โ โ Neon โ โ Upstash โ
โ (Auth) โ โ (PostgreSQL) โ โ (Redis) โ
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโDatabase schema diagram
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ users โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id โ uuid โ PRIMARY KEY โ
โ email โ varchar โ UNIQUE NOT NULL โ
โ name โ varchar โ NOT NULL โ
โ created_at โ timestamp โ DEFAULT now() โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ 1:N
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ posts โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id โ uuid โ PRIMARY KEY โ
โ title โ varchar โ NOT NULL โ
โ content โ text โ โ
โ author_id โ uuid โ FOREIGN KEY โ users.id โ
โ published โ boolean โ DEFAULT false โ
โ created_at โ timestamp โ DEFAULT now() โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ N:M
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ post_tags (junction) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ post_id โ uuid โ FOREIGN KEY โ posts.id โ
โ tag_id โ uuid โ FOREIGN KEY โ tags.id โ
โ PRIMARY KEY (post_id, tag_id) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโUser flow diagram
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโ
โ Start โโโโโโบโ Landing โโโโโโบโ Sign Up โโโโโโบโ Email โ
โ โ โ Page โ โ Form โ โ Verify โ
โโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโฌโโโโโ
โ โ
โ Already has account โ Verified
โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Log In โโโโโโโโโโโโโโโโโโโโโโโโโโโ Dashboard โ
โ Form โ โ (Home) โ
โโโโโโโโฌโโโโโโโ โโโโโโโโโโโโโโโ
โ โ
โ Invalid credentials โ
โผ โผ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Error โ โ Feature โ
โ Message โ โ Pages โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโLibraries
Using libraries
1. Click the "Library" icon in the toolbar
2. Browse libraries or import your own
3. Drag elements onto the canvas
Popular libraries:
โโโ Software Architecture
โ โโโ AWS icons
โ โโโ Azure icons
โ โโโ GCP icons
โ โโโ Kubernetes
โ
โโโ UI/UX
โ โโโ Wireframe kit
โ โโโ Mobile UI
โ โโโ Web components
โ
โโโ Business
โ โโโ Flowchart
โ โโโ Org chart
โ โโโ Process diagrams
โ
โโโ Technical
โโโ Network diagrams
โโโ Database schemas
โโโ Sequence diagramsCreating your own library
{
"type": "excalidrawlib",
"version": 2,
"source": "https://excalidraw.com",
"libraryItems": [
{
"id": "custom-component-1",
"status": "published",
"elements": [
{
"type": "rectangle",
"x": 0,
"y": 0,
"width": 200,
"height": 100,
"strokeColor": "#1e1e1e",
"backgroundColor": "#a5d8ff",
"fillStyle": "solid"
},
{
"type": "text",
"x": 50,
"y": 40,
"text": "Component",
"fontSize": 16
}
],
"name": "My Custom Component"
}
]
}VS Code extension
Installation
code --install-extension pomdtr.excalidraw-editor
# Or via GUI:
# Extensions โ Search "Excalidraw" โ InstallUsage
1. Create a file with the .excalidraw or .excalidraw.svg extension
2. VS Code will automatically open the Excalidraw editor
3. Draw diagrams directly in your IDE
4. Save as SVG (embeddable) or JSON (editable)
Project structure with Excalidraw:
my-project/
โโโ docs/
โ โโโ architecture.excalidraw.svg
โ โโโ database-schema.excalidraw
โ โโโ user-flow.excalidraw.png
โโโ src/
โโโ README.mdEmbedding in Markdown
<!-- In README.md or documentation -->
## System architecture

## Database schema

## User flow
<img src="./docs/user-flow.excalidraw.svg" alt="User Flow" width="800">Excalidraw API and integration
React component
npm install @excalidraw/excalidraw
// App.tsx
import { Excalidraw } from '@excalidraw/excalidraw'
function DiagramEditor() {
const [excalidrawAPI, setExcalidrawAPI] = useState(null)
const handleChange = (elements, appState, files) => {
console.log('Elements changed:', elements)
localStorage.setItem('diagram', JSON.stringify(elements))
}
const handleExport = async () => {
if (!excalidrawAPI) return
const blob = await excalidrawAPI.exportToBlob({
mimeType: 'image/png',
exportWithDarkMode: false,
exportBackground: true
})
const url = URL.createObjectURL(blob)
const link = document.createElement('a')
link.href = url
link.download = 'diagram.png'
link.click()
}
return (
<div style={{ height: '600px', width: '100%' }}>
<Excalidraw
excalidrawAPI={(api) => setExcalidrawAPI(api)}
onChange={handleChange}
initialData={{
elements: JSON.parse(localStorage.getItem('diagram') || '[]'),
appState: { viewBackgroundColor: '#ffffff' }
}}
UIOptions={{
canvasActions: {
export: { saveFileToDisk: true }
}
}}
/>
<button onClick={handleExport}>Export PNG</button>
</div>
)
}Collaborative mode
import { Excalidraw } from '@excalidraw/excalidraw'
import { useCollaboration } from './useCollaboration'
function CollaborativeDiagram({ roomId }) {
const {
elements,
collaborators,
onPointerUpdate,
onElementsChange
} = useCollaboration(roomId)
return (
<Excalidraw
initialData={{ elements }}
onChange={onElementsChange}
onPointerUpdate={onPointerUpdate}
isCollaborating={true}
renderTopRightUI={() => (
<div className="collaborators">
{collaborators.map(user => (
<Avatar key={user.id} name={user.name} color={user.color} />
))}
</div>
)}
/>
)
}
function useCollaboration(roomId) {
const [elements, setElements] = useState([])
const [collaborators, setCollaborators] = useState([])
const socketRef = useRef(null)
useEffect(() => {
const socket = io('wss://your-server.com')
socketRef.current = socket
socket.emit('join-room', roomId)
socket.on('elements-update', (newElements) => {
setElements(newElements)
})
socket.on('collaborators-update', (users) => {
setCollaborators(users)
})
return () => socket.disconnect()
}, [roomId])
const onElementsChange = useCallback((newElements) => {
setElements(newElements)
socketRef.current?.emit('elements-change', {
roomId,
elements: newElements
})
}, [roomId])
return { elements, collaborators, onElementsChange }
}Exporting to different formats
import { exportToSvg, exportToBlob, serializeAsJSON } from '@excalidraw/excalidraw'
const exportSVG = async (elements, appState) => {
const svg = await exportToSvg({
elements,
appState,
files: null,
exportPadding: 10
})
const svgString = new XMLSerializer().serializeToString(svg)
return svgString
}
const exportImage = async (elements, appState, mimeType = 'image/png') => {
const blob = await exportToBlob({
elements,
appState,
mimeType,
quality: 0.9,
exportWithDarkMode: false
})
return blob
}
const exportJSON = (elements, appState) => {
return serializeAsJSON(elements, appState, {}, 'local')
}
const importFromJSON = (jsonString) => {
const data = JSON.parse(jsonString)
return {
elements: data.elements,
appState: data.appState
}
}Self-hosting Excalidraw
Docker
FROM node:20-alpine AS builder
WORKDIR /app
RUN git clone https://github.com/excalidraw/excalidraw.git .
RUN yarn install --frozen-lockfile
RUN yarn build
FROM nginx:alpine
COPY /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]version: '3.8'
services:
excalidraw:
build: .
ports:
- "8080:80"
restart: unless-stopped
excalidraw-room:
image: excalidraw/excalidraw-room
ports:
- "3002:80"
environment:
- PORT=80Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: excalidraw
spec:
replicas: 2
selector:
matchLabels:
app: excalidraw
template:
metadata:
labels:
app: excalidraw
spec:
containers:
- name: excalidraw
image: excalidraw/excalidraw:latest
ports:
- containerPort: 80
resources:
limits:
memory: "256Mi"
cpu: "200m"
---
apiVersion: v1
kind: Service
metadata:
name: excalidraw
spec:
selector:
app: excalidraw
ports:
- port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: excalidraw
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: excalidraw.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: excalidraw
port:
number: 80Excalidraw+ (Premium)
Premium features
Excalidraw+ ($7/month or $60/year):
โ
โโโ End-to-end encryption
โ โโโ Encryption key stays with the user only
โ
โโโ Larger storage
โ โโโ Unlimited diagrams
โ โโโ Larger files
โ
โโโ Custom fonts
โ โโโ Import your own fonts
โ
โโโ Password-protected links
โ โโโ Additional security layer
โ
โโโ Custom branding
โ โโโ Logo on exports
โ
โโโ Priority support
โ โโโ Faster assistance
โ
โโโ Cloud backup
โโโ Automatic backupsPractical use cases
1. Technical documentation
# System Architecture
## Overview
Our system consists of three main components:

### Frontend
Next.js application hosted on Vercel...
### Backend
NestJS API on Railway...
### Database
PostgreSQL on Neon with branching...2. Code review diagrams
PR #123: Refactor authentication flow
Before:
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Client โโโโโโบโ Server โโโโโโบโ DB โ
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ โ
โ Password โ Check password
โ (plain!) โ (slow query!)
โโโโโโโโโโโโโโโโโโ
After:
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Client โโโโโโบโ Server โโโโโโบโ Redis โโโโโโบโ DB โ
โโโโโโโโโโโโ โโโโโโโโโโโโ โ (cache) โ โโโโโโโโโโโโ
โ โ โโโโโโโโโโโโ
โ Hashed โ Session
โ password โ check first
โโโโโโโโโโโโโโโโโโ3. Meeting notes
Sprint Planning - 2025-01-24
Epic: User Dashboard Redesign
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Dashboard MVP โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ Stats โ โ Chart โ โ Recent โ โ
โ โ Cards โ โ Widget โ โ Activity โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Data Table โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Tasks:
โโโ [x] Stats cards component (2 pts) - @alice
โโโ [ ] Chart integration (5 pts) - @bob
โโโ [ ] Activity feed (3 pts) - @charlie
โโโ [ ] Data table with pagination (5 pts) - @david4. Onboarding documentation
New Developer Onboarding
Day 1: Setup
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Clone โโโโโโบโ Install โโโโโโบโ Run โ
โ Repo โ โ Deps โ โ Dev โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโ
โ Explore UI โ
โ on :3000 โ
โโโโโโโโโโโโโโโ
Day 2: First PR
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Read โโโโโโบโ Pick โโโโโโบโ Create โ
โ CLAUDE โ โ Issue โ โ Branch โ
โ .md โ โโโโโโโโโโโ โโโโโโฌโโโโโ
โโโโโโโโโโโ โ
โผ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โ Code โโโโโโบโ Test โโโโโโบโ Push โ
โ Change โ โ Local โ โ PR โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโTips and tricks
Element styling
Stroke styles:
โโโ Solid โโโโโโโโโโโโ
โโโ Dashed - - - - - -
โโโ Dotted ยทยทยทยทยทยทยทยทยทยทยทยท
Fill styles:
โโโ Solid [โ โ โ โ โ โ โ โ ]
โโโ Hachure [////////]
โโโ Cross-hatch [XXXXXXXX]
โโโ None [ ]
Sloppiness (hand-drawn intensity):
โโโ Architect (0) - Clean lines
โโโ Artist (1) - Slight wobble
โโโ Cartoonist (2) - Very wobbly
Edge style:
โโโ Sharp โโโโโโโ
โโโ Round โญโโโโโโฎKeyboard workflow
Efficient workflow:
1. R โ Draw a rectangle
2. T โ Add text inside it
3. A โ Connect with an arrow to another element
4. Ctrl+D โ Duplicate and move
5. Ctrl+G โ Group related elements
6. Ctrl+Shift+E โ Export the finished diagramCanvas organization
Large diagrams - organization:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TITLE AREA โ
โ System Architecture v2.1 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ SECTION 1 โ โ SECTION 2 โ โ
โ โ Frontend โ โ Backend โ โ
โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ SECTION 3 โ โ SECTION 4 โ โ
โ โ Database โ โ External โ โ
โ โ โ โ Services โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ LEGEND: [Component] โโโบ [Dependency] ยทยทยท> [Optional] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโFAQ - frequently asked questions
Is Excalidraw free?
Yes, the basic version of Excalidraw is completely free and open-source. You can use excalidraw.com without an account, and you can also host your own instance. Excalidraw+ is an optional paid version with additional features like encryption and larger storage.
How do I save a diagram offline?
- Export to a .excalidraw file - Fully editable, can be opened later
- Export to SVG - Vector format, can be edited in Figma/Illustrator
- Export to PNG - Raster format, great for documentation
- Copy to clipboard - Quick pasting into other applications
Can I use Excalidraw in VS Code?
Yes, install the "Excalidraw" extension by pomdtr. It allows you to create and edit .excalidraw files directly in your IDE.
How do I collaborate in real time?
- Click "Live collaboration" in the menu
- Share the generated link
- Anyone with the link can edit
- Sessions are E2E encrypted
Excalidraw vs Mermaid?
- Excalidraw - Visual, drag & drop, hand-drawn style
- Mermaid - Text-based (code-based), auto-layout, formal style
Both have their uses - Mermaid for simple flowcharts in markdown, Excalidraw for more creative and freeform diagrams.
Summary
Excalidraw is an excellent tool for:
- Architecture sketching - System design, infrastructure
- Database schemas - Visualizing relationships
- User flows - UX documentation
- Wireframes - Quick UI prototypes
- Meeting notes - Visual note-taking
- Technical docs - Diagrams in documentation
- Code reviews - Explaining changes visually
The hand-drawn style makes diagrams look informal, which encourages iteration and discussion - ideal for agile teams and technical documentation.