paste.cu3rd.ru — обмен кодом и файлами https://paste.cu3rd.ru
  • Go 72.6%
  • TypeScript 12.7%
  • Go Template 6.5%
  • Makefile 6.4%
  • CSS 1.1%
  • Other 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Igor Mamaev 1c30d3e01d
All checks were successful
Test, publish and deploy / test (push) Successful in 2m39s
Test, publish and deploy / deploy (push) Successful in 28s
deploy
2026-11-05 13:15:54 +03:00
.forgejo/workflows s3: RustFS в CI и compose, бакет создаётся при отсутствии 2026-11-05 10:02:40 +00:00
cmd paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
models paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
modules s3: RustFS в CI и compose, бакет создаётся при отсутствии 2026-11-05 10:02:40 +00:00
public paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
routers paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
services paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
templates paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
tests paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
web_src paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
.air.toml paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
.dockerignore paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
.editorconfig import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00
.gitignore paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
.golangci.yml paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
.npmrc import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00
AGENTS.md paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
bindata.go paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
docker-compose.yml s3: RustFS в CI и compose, бакет создаётся при отсутствии 2026-11-05 10:02:40 +00:00
Dockerfile paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
eslint.config.ts import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00
go.mod paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
go.sum paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
main.go paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
Makefile s3: RustFS в CI и compose, бакет создаётся при отсутствии 2026-11-05 10:02:40 +00:00
package-lock.json paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
package.json paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
playwright.config.ts paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
README.md s3: RustFS в CI и compose, бакет создаётся при отсутствии 2026-11-05 10:02:40 +00:00
stylelint.config.ts import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00
tailwind.config.ts paste: обмен кодом и файлами на paste.cu3rd.ru 2026-11-05 09:58:53 +00:00
tsconfig.json import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00
vitest.config.ts import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00
webpack.config.ts import template-go-htmx 33d6a94 2026-11-05 09:45:43 +00:00

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.