Add README

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Samuel Prevost 2026-04-14 21:19:10 +02:00
parent 4069491c2f
commit 3e0284da4c

64
README.md Normal file
View File

@ -0,0 +1,64 @@
# Skwik
Client-side image deskewing tool. Upload a photo taken at an angle, place reference measurements on known objects, and get a perspective-corrected output with real-world scale.
Everything runs in the browser -- no server, no uploads.
## How it works
1. **Upload** a JPG or HEIC image (HEIC is converted automatically)
2. **Review EXIF** data -- camera, lens, focal length
3. **Place datums** on the image -- rectangles or lines with known real-world dimensions
4. **Run correction** -- OpenCV.js computes a perspective transform and outputs a corrected image
### The algorithm
The highest-confidence rectangle datum defines the initial perspective correction via `getPerspectiveTransform`. All other datums (rectangles and lines) are projected through that transform and measured. Per-axis weighted scale corrections are computed from the discrepancies, folded back into the destination rectangle, and a single clean `warpPerspective` produces the output. One matrix, one warp, no post-hoc distortion.
Datum confidence scores (1--5) act as weights in the correction.
## Quick start
```bash
pnpm install
pnpm dev
```
Open `http://localhost:5173`.
## Build
```bash
pnpm build # type-check + production build
pnpm preview # serve the build locally
```
## Lint & format
```bash
pnpm lint # eslint (strict TS + Vue)
pnpm lint:fix # auto-fix
pnpm format # prettier
pnpm type-check # vue-tsc
```
## Stack
| Layer | Tech |
|---|---|
| Framework | Vue 3 + TypeScript (strict) |
| Build | Vite |
| Components | shadcn-vue + Tailwind CSS v4 |
| Canvas | Konva.js + vue-konva |
| CV | OpenCV.js 4.12 (WASM) |
| HEIC | heic-to |
| EXIF | exifr |
| State | Pinia |
## Datum presets
Rectangles: A3, A4, A5, A6, 15x10 cm. Custom dimensions supported. Lines: any length.
## License
MIT