How keven1024/015 works
015 is a self-hosted temporary file and text sharing platform. Users upload files in chunks or submit text; the frontend hashes files for instant-transfer checks and reports upload progress. The API manages files, shares, access and downloads, while queued worker tasks handle lifecycle cleanup and image/text processing. Redis-backed models hold file, share, relationship and statistics data. README capabilities are included, but several backend routes and worker handlers were not sampled, so uncertain internal call links are omitted.
Main entry points: route.go HTTP routing · main.go Task dispatcher · share.go Share API · download.go Download API
Components 28
Web client
- Nuxt application
front/app.vue - Upload interface
front/components/Home/File/FileUploadIndexView.vue - Text interface
front/components/Home/Text/TextUploadIndexView.vue - Hash and chunks
front/lib/calcFileHash.ts - Share views
front/components/Share/FileShareView.vue - Share and download client
front/composables/useMyAppShare.ts - Processing results
front/components/Result/ResultIndexView.vue
API service
- HTTP routing
backend/route.go - File API
backend/internal/controllers/file.go - Share API
backend/internal/controllers/share.go - Download API
backend/internal/controllers/download.go - Task API
backend/internal/controllers/task.go - File service
backend/internal/services/file.go
Domain data
- File metadata
pkg/models/file/service.go - Share metadata
pkg/models/share/service.go - File-share links
pkg/models/file_share_relational/service.go - Usage statistics
pkg/models/stat/service.go
Async processing
- Task dispatcher
worker/main.go - File lifecycle tasks
worker/internal/tasks/file.go - Image tasks
worker/internal/tasks/image.go - Text tasks
worker/internal/tasks/text.go - Image processing
worker/internal/services/image.go - Text processing
worker/internal/services/text.go
External infrastructure
- Redis
- Asynq queue
- Local file storage
- Email delivery
pkg/mail/mail.go
Other components
- Visitor
Connections 38
- Visitor → Nuxt application: uses
- Nuxt application → Upload interface: selects files
- Nuxt application → Text interface: submits text
- Upload interface → Hash and chunks: hashes and chunks
- Upload interface → HTTP routing: uploads
- Text interface → HTTP routing: submits text
- Share views → Share and download client: requests access
- Share and download client → HTTP routing: calls API
- HTTP routing → File API: dispatches
- HTTP routing → Share API: dispatches
- HTTP routing → Download API: dispatches
- HTTP routing → Task API: dispatches
- File API → File service: delegates
- File service → File metadata: reads and writes
- File API → Local file storage: stores files
- Share API → Share metadata: reads and writes
- Share API → File-share links: links files
- Download API → Share metadata: checks share
- Download API → File metadata: resolves files
- Download API → Local file storage: reads files
- Task API → Asynq queue: enqueues tasks
- Task dispatcher → Asynq queue: consumes tasks
- Task dispatcher → File lifecycle tasks: dispatches
- Task dispatcher → Image tasks: dispatches
- Task dispatcher → Text tasks: dispatches
- File lifecycle tasks → Local file storage: manages files
- Image tasks → Image processing: delegates
- Text tasks → Text processing: delegates
- File lifecycle tasks → File metadata: updates metadata
- Share API → Asynq queue: queues share work
- Image processing → Local file storage: processes images
- Text processing → Processing results: returns results
- Task API → Usage statistics: records statistics
- File metadata → Redis: stores metadata
- Share metadata → Redis: stores metadata
- File-share links → Redis: stores links
- Usage statistics → Redis: stores statistics
- File lifecycle tasks → Email delivery: sends notices