- Go 72.6%
- TypeScript 12.7%
- Go Template 6.5%
- Makefile 6.4%
- CSS 1.1%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| cmd | ||
| models | ||
| modules | ||
| public | ||
| routers | ||
| services | ||
| templates | ||
| tests | ||
| web_src | ||
| .air.toml | ||
| .dockerignore | ||
| .editorconfig | ||
| .gitignore | ||
| .golangci.yml | ||
| .npmrc | ||
| AGENTS.md | ||
| bindata.go | ||
| docker-compose.yml | ||
| Dockerfile | ||
| eslint.config.ts | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| Makefile | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| README.md | ||
| stylelint.config.ts | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| vitest.config.ts | ||
| webpack.config.ts | ||
paste
Обмен кодом и файлами: https://paste.cu3rd.ru. Go (chi, xorm, html/template) + htmx + Tailwind,
сделан из template-go-htmx.
- Текст или файл до 10 МБ, срок хранения 1 час / 1 день / 1 неделя / 30 дней, вечных вставок нет.
- Подсветка синтаксиса на сервере (chroma), язык определяется по имени файла или по содержимому.
- Удалить вставку может только автор: секрет лежит в cookie
paste_owner(или приходит curl'у вX-Paste-Owner). - Метаданные в PostgreSQL, содержимое в S3 (в проде бакет self-service с квотой). Без S3 содержимое лежит в каталоге.
curl -F file=@main.go https://paste.cu3rd.ru
some-command | curl -F file=@- -F name=out.log -F expires=1d https://paste.cu3rd.ru
curl -d owner=СЕКРЕТ https://paste.cu3rd.ru/ID/delete
Маршруты: GET / форма и свои вставки, POST / создать (content или file, name, expires),
GET /{id} страница, /{id}/raw (текст и растровые картинки inline, остальное только скачиванием),
/{id}/download, POST /{id}/delete.
Разработка
Нужны Go 1.26+, Node.js 22+, make.
make build && ./paste web # http://localhost:3000, sqlite + data/blobs
make lint test test-sqlite # линтеры, юнит- и интеграционные тесты
make test-pgsql # на PostgreSQL (TEST_PGSQL_DSN)
make test-s3 # хранилище на настоящем S3 (RustFS или MinIO, PASTE_TEST_S3_URL)
docker compose up --build # приложение + PostgreSQL + RustFS
Переменные: PASTE_HTTP_ADDR (:3000), PASTE_DB_TYPE (sqlite|postgres), PASTE_DB_DSN,
PASTE_MAX_SIZE (байты, 10 МБ), PASTE_STORAGE_PATH (data/blobs), PASTE_S3_URL, PASTE_S3_ACCESS_KEY,
PASTE_S3_SECRET_KEY, PASTE_S3_BUCKET_NAME, PASTE_COOKIE_SECURE (false для http).
Деплой
Self-service, проект paste (cu3rd/self-service projects/paste.yaml), окружение prod, приложение web.
Пуш в master → тесты → образ git.cu3rd.ru/cu3rd/paste:<sha> → PR доставки, который сливает self-service-service.
Архитектура и конвенции: AGENTS.md.