Files
quoter/README.md
Untone 5baba346e0
Some checks failed
Deploy quoter Microservice on push / deploy (push) Failing after 39m16s
;### Changed
- 🔑 **JWT_SECRET → JWT_SECRET_KEY**: Используется `JWT_SECRET_KEY` для совместимости с `@core`, `@inbox`, `@presence`
  - Fallback на `JWT_SECRET` для обратной совместимости
  - Обновлена документация: README.md, configuration.md
  - **BREAKING**: Требует установки `JWT_SECRET_KEY` в production (или использование legacy `JWT_SECRET`)

### Fixed (Tests & Code Quality)
- 🧪 **Удален мертвый код**: Removed unused mock functions and structs from tests
- 🔧 **Исправлены async тесты**: Changed `#[test]` → `#[tokio::test]` для async функций
- 🧹 **Чистые warnings**: Все тесты компилируются без warnings
- 📝 **Префиксы unused полей**: `_field` вместо `#[allow(dead_code)]`
2025-09-30 21:46:47 +03:00

91 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Quoter 🚀
> Simple file upload proxy with quotas. Upload to S3, thumbnails via Vercel.
**Focus**: Upload + Storage. Thumbnails managed by Vercel Edge API for better performance.
## What it does
- 📤 **Upload files** to S3/Storj with user quotas
- 🔐 **JWT authentication** with session management
- 📦 **File serving** with caching and optimization
- 🌐 **CORS support** for web apps
## 🚀 Quick Start
```bash
# Setup
cargo build
cp .env.example .env # Configure environment
cargo run
# Test
curl http://localhost:8080/ # Health check
```
## 🔧 API
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/` | Health check or user info (need auth token) |
| `POST` | `/` | Upload file (need auth token) |
| `GET` | `/{filename}` | Get file or thumbnail |
### Upload file
```bash
curl -X POST http://localhost:8080/ \
-H "Authorization: Bearer your-token" \
-F "file=@image.jpg"
```
### Get thumbnail
```bash
# Legacy thumbnails (fallback only)
curl http://localhost:8080/image_300.jpg
# 💡 Recommended: Use Vercel Image API
https://yoursite.com/_next/image?url=https://files.dscrs.site/image.jpg&w=300&q=75
```
## 🏗️ Architecture & Setup
**Simple 3-tier architecture:**
- **Upload**: Quoter (auth + quotas + S3 storage)
- **Download**: Vercel Edge API (thumbnails + optimization)
- **Storage**: S3/Storj (files) + Redis (quotas/cache)
```
Upload: Client → Quoter → S3/Storj
Download: Client → Vercel → Quoter (fallback)
```
💋 **Simplified approach**: Quoter handles uploads, Vercel handles thumbnails.
## 📋 Environment Setup
```bash
# Required
REDIS_URL=redis://localhost:6379
STORJ_ACCESS_KEY=your-key
STORJ_SECRET_KEY=your-secret
JWT_SECRET_KEY=your-secret # Должен совпадать с @core
# Optional
PORT=8080
RUST_LOG=info
```
## 🧪 Testing
```bash
cargo test # 36 tests passing
./scripts/test-coverage.sh # Coverage report
```
## 📚 Documentation
- [`docs/configuration.md`](./docs/configuration.md) - Environment setup
- [`docs/architecture.md`](./docs/architecture.md) - Technical details
- [`docs/vercel-og-integration.md`](./docs/vercel-og-integration.md) - Vercel integration
For detailed setup and deployment instructions, see the docs folder.