21 lines
1.1 KiB
Markdown
21 lines
1.1 KiB
Markdown
# Go Image Manipulation API - Project Rules (libvips/bimg Version)
|
||
|
||
## 1. Tech Stack
|
||
- Language: Go 1.26.1
|
||
- Web Framework: Fiber v3 (github.com/gofiber/fiber/v3)
|
||
- Image Engine: libvips via bimg (github.com/h2non/bimg)
|
||
- Database: GORM (MySQL) & Redis (Auth/Token storage)
|
||
|
||
## 2. Image Processing Logic
|
||
- Use `bimg` for all transformations.
|
||
- Supported Input/Output: AVIF, WEBP, PNG, JPG.
|
||
- Quality: Map 1-100 values to `bimg.Options.Quality`.
|
||
- Transformation Types:
|
||
- `Cover`: Use `bimg.Options.Enlarge = true` and `bimg.Options.Crop = true`.
|
||
- `Crop`: Use `bimg.Options.Type = bimg.ImageType` (Target format).
|
||
- `Resize`: Use `bimg.Options.Width` and `bimg.Options.Height`.
|
||
|
||
## 3. Performance & Safety
|
||
- **CRITICAL:** `libvips` C kaynaklarını kullanır. Bellek sızıntılarını önlemek için `bimg.VipsFree()` veya garbage collection dostu yapıları takip et.
|
||
- **Async Processing:** Büyük işlemler için Fiber'in `ctx.Next()` yapısını bozmadan `pool` mantığını değerlendir.
|
||
- **Redis Security:** Her manipülasyon isteği `?token=` parametresiyle gelmeli ve Redis'teki `image_id` ile eşleşmeli. |