Files
blood-brain-barrier/CLAUDE.md
Mikhail Kilin 1e225e9af3 Add k3s deployment: Dockerfiles, nginx config, CI pipeline
- Backend Dockerfile: multi-stage rust:1.87 → debian:bookworm-slim
- Frontend Dockerfile: multi-stage node:22-alpine → nginx:alpine
- Frontend nginx.conf: serve static + proxy /api/ to backend service
- Change API_URL to relative /api for containerized deployment
- Woodpecker CI pipeline to build and push images to Gitea Registry
- Add repository URL to CLAUDE.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 22:29:20 +03:00

2.4 KiB
Raw Blame History

Blood Brain Barrier

Репозиторий: https://git.mikhailkilin.ru/killingdruid/blood-brain-barrier

Веб-приложение для хранения текстовых записей. Пользователь вводит текст через textarea, сохраняет в PostgreSQL, просматривает список всех записей с возможностью удаления и копирования.

Стек

  • Frontend: React + TypeScript + Vite
  • Backend: Rust (Axum + SQLx)
  • БД: PostgreSQL
  • Async runtime: Tokio

Структура проекта

blood-brain-barrier/
├── frontend/          # React-приложение (Vite)
│   ├── src/
│   │   ├── App.tsx    # Основной компонент: textarea + список записей
│   │   ├── api.ts     # Функции для запросов к API
│   │   └── main.tsx
│   └── package.json
├── backend/           # Rust API (Axum)
│   ├── src/
│   │   ├── main.rs    # Точка входа, подключение к БД, CORS, запуск сервера
│   │   ├── db.rs      # Подключение к PostgreSQL, init_db
│   │   └── routes.rs  # Хендлеры API
│   └── Cargo.toml
├── docker-compose.yml # PostgreSQL
└── CLAUDE.md

База данных

Одна таблица entries:

CREATE TABLE entries (
  id SERIAL PRIMARY KEY,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  content TEXT NOT NULL
);

API

Метод Путь Описание
GET /api/entries Получить все записи
POST /api/entries Создать запись
DELETE /api/entries/:id Удалить запись по id
GET /api/entries/:id/content Получить контент записи (plain text)

Frontend

  • Сверху: большая <textarea> + кнопка "Создать"
  • Ниже: список всех записей (новые сверху), у каждой кнопки "Удалить" и "Копировать"
  • Копирование — через navigator.clipboard.writeText()

Команды

# Frontend
cd frontend && npm run dev

# Backend
cd backend && cargo run

# PostgreSQL
docker-compose up -d