This commit is contained in:
Mikhail Kilin
2026-03-17 16:22:13 +03:00
commit cc0bdedd88

70
CLAUDE.md Normal file
View File

@@ -0,0 +1,70 @@
# 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`:
```sql
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()`
## Команды
```bash
# Frontend
cd frontend && npm run dev
# Backend
cd backend && cargo run
# PostgreSQL
docker-compose up -d
```