Files
blood-brain-barrier/CLAUDE.md
Mikhail Kilin 7467206a5c Fix clipboard copy on HTTP (non-secure) contexts, update docs
navigator.clipboard is undefined on non-HTTPS origins — add
execCommand fallback. Also sync CLAUDE.md with actual project
structure (Dockerfiles, nginx, CI, correct API/button descriptions).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 00:09:54 +03:00

77 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
│ ├── Dockerfile # Сборка фронтенда + nginx
│ ├── nginx.conf # Конфиг nginx для раздачи SPA и проксирования API
│ └── package.json
├── backend/ # Rust API (Axum)
│ ├── src/
│ │ ├── main.rs # Точка входа, подключение к БД, CORS, запуск сервера
│ │ ├── db.rs # Подключение к PostgreSQL, init_db
│ │ └── routes.rs # Хендлеры API
│ ├── Dockerfile # Сборка бэкенда
│ └── Cargo.toml
├── .woodpecker.yml # CI pipeline
├── docker-compose.yml # PostgreSQL
└── CLAUDE.md
```
## База данных
Одна таблица `entries`:
```sql
CREATE TABLE entries (
id SERIAL PRIMARY KEY,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
content TEXT NOT NULL
);
```
## API
| Метод | Путь | Описание |
|--------|------------------|-------------------------|
| GET | /api/entries | Список записей (id, created_at — без content) |
| POST | /api/entries | Создать запись |
| DELETE | /api/entries/:id | Удалить запись по id |
| GET | /api/entries/:id/content | Получить контент записи (plain text) |
## Frontend
- Сверху: большая `<textarea>` + кнопка "Create"
- Ниже: список всех записей (новые сверху), у каждой кнопки "Delete" и "Copy"
- Копирование — через `navigator.clipboard.writeText()`
## Команды
```bash
# Frontend
cd frontend && npm run dev
# Backend
cd backend && cargo run
# PostgreSQL
docker-compose up -d
```