🏗️ Architecture
Understanding Linterman's technical architecture and data flow.
🎯 Core Principle
100% Client-Side Processing with WebAssembly
Privacy First
Your collections are processed entirely in your browser using WebAssembly (WASM). They never leave your device. We verify this via our open-source architecture.
📊 Architecture Overview
┌─────────────────────────────────────┐ │ Browser (Client) │ │ │ │ 1. Load Collection (local only) │ │ 2. WASM Lint (instant) │ │ 3. WASM Auto-Fix (instant) │ │ 4. Download Fixed (local) │ │ │ │ ❌ NO SERVER UPLOAD │ │ ❌ NO SERVER PROCESSING │ └─────────────────────────────────────┘
🔧 Technology Stack
Core Engine
Rust + WASM
Frontend
Nuxt 3 + Vue 3
Backend (Optional)
For accounts & stats only
🔄 Data Flow
Analysis Workflow
- User loads or pastes collection JSON (local only)
- WASM module parses and analyzes (client-side)
- Results displayed in UI
- Optional: Results stats saved to database (if logged in)
Auto-Fix Workflow
- User clicks "Auto-Fix"
- WASM module applies corrections (client-side)
- Collection updated in textarea
- Re-analysis performed automatically
- User downloads fixed collection
💾 Data Storage
Client-Side (Browser)
- ✅ Collection JSON (volatile, in memory)
- ✅ Analysis history (localStorage, max 10)
- ✅ User preferences (localStorage)
Server-Side (Optional, with account)
- ✅ Analysis results (score, issues count)
- ✅ Collection metadata (name, timestamp)
- ❌ Collection JSON content (never stored)
🚀 Performance
Analysis
- ⚡ <100ms - WASM execution
- ⚡ <1s - Total time (UI included)
Auto-Fix
- ⚡ <100ms - Corrections applied
- ⚡ <1s - Total time (re-analysis included)
🔐 Security & Privacy
What is NOT sent to the server?
- ❌ Collection JSON content
- ❌ API keys, tokens, secrets
- ❌ Request/response data
- ❌ Fixed collection
What CAN be sent (with account)?
- ✅ Score (number)
- ✅ Issues count (number)
- ✅ Collection name (string)
- ✅ Timestamp (date)