From b91d386a17bc0967c2570ba3acb87e4adb05442d Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 17 Apr 2026 00:09:13 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e442044..83bbf18 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,97 @@ -# GO-------------- +================================================================================ + Файлообменник (fileshare) — сведения о релизе +================================================================================ -Файлообменник на GO сайт Установщик \ No newline at end of file +Текущая версия: 0.10 +Дата фиксации описания: 2026-04-17 + +-------------------------------------------------------------------------------- +1. Назначение +-------------------------------------------------------------------------------- + +Веб-приложение на Go для обмена файлами: загрузка на сервер, хранение на диске, +метаданные в PostgreSQL, скачивание по ссылке. Есть простая HTML-страница и REST API. +По умолчанию HTTP-порт приложения: 8090. + +-------------------------------------------------------------------------------- +2. Что сделано в проекте +-------------------------------------------------------------------------------- + +2.1 Язык и зависимости + - Go 1.22 + - github.com/lib/pq — драйвер PostgreSQL + - github.com/google/uuid — идентификаторы файлов + +2.2 Структура каталогов + - cmd/fileshare/ — точка входа (main.go), встроенная статика web/ + - cmd/fileshare/web/ — index.html (форма загрузки, список файлов) + - internal/config/ — переменные окружения (LISTEN_ADDR, DATABASE_URL, …) + - internal/store/ — работа с БД, миграция таблицы при старте + - internal/handlers/ — HTTP-обработчики API и отдача файлов + - internal/version/ — константа версии (сейчас 0.10) + +2.3 База данных (PostgreSQL) + - Таблица files: id (UUID), исходное имя, тип содержимого, размер, + storage_key (путь к файлу на диске), created_at + - Индекс по дате создания для списка + +2.4 Хранение файлов на диске + - Каталог из UPLOAD_DIR (по умолчанию ./data/uploads; в Docker — /data/uploads) + - Подкаталоги по первым символам UUID: ??/??/{uuid}.bin + +2.5 HTTP API + - GET /health — проверка работы; JSON: status, version (0.10) + - GET /api/files — список файлов (JSON), поле download_url + - POST /api/files — multipart/form-data, поле "file" + - GET /api/files/{id}/download — скачивание (Content-Disposition: attachment) + - GET / — веб-интерфейс (загрузка и список) + +2.6 Docker + - Dockerfile: multi-stage сборка (Alpine), бинарник без CGO + - docker-compose.yml: + * сервис db — postgres:16-alpine, том pgdata + * сервис app — приложение, порт 8090:8090, том uploads для файлов + * зависимость app от здоровья БД (healthcheck) + - Переменные: POSTGRES_PASSWORD (из .env или значение по умолчанию), + DATABASE_URL для приложения, MAX_UPLOAD_MB и др. + +2.7 Установка + - install.ps1 (Windows, PowerShell) — проверка Docker, копирование .env из + .env.example при отсутствии .env, docker compose up -d --build + - install.sh (Unix) — то же для sh + +2.8 Конфигурация через окружение + - DATABASE_URL — обязательно при локальном запуске без compose + - LISTEN_ADDR — например :8090 + - UPLOAD_DIR — каталог загрузок + - MAX_UPLOAD_MB — лимит размера тела запроса (по умолчанию 100) + - PUBLIC_BASE_URL — опционально, базовый URL для ссылок в JSON за reverse-proxy + +2.9 Репозиторий Git + - .gitignore — бинарники, .env, data/, uploads/, IDE и т.д. + - .gitattributes — eol для go, yaml, sh, ps1 + - .dockerignore — уменьшение контекста сборки + +-------------------------------------------------------------------------------- +3. Публикация версии 0.10 +-------------------------------------------------------------------------------- + +Версия зафиксирована в коде: internal/version/version.go (константа Version = "0.10"). +При старте сервер пишет в лог: fileshare v0.10 listening on … +Ответ GET /health включает поле "version": "0.10". + +Рекомендуемые шаги для «публикации»: + - git add -A && git commit -m "Release 0.10" + - при использовании тегов: git tag -a v0.10 -m "fileshare 0.10" + - сборка образа: docker compose build + - выкладка: по вашему registry/серверу — отправка образа и compose-файлов + +-------------------------------------------------------------------------------- +4. Быстрый старт (напоминание) +-------------------------------------------------------------------------------- + + Windows: .\install.ps1 + Затем в браузере: http://localhost:8090/ + Проверка версии: http://localhost:8090/health + +================================================================================