asdasd
This commit is contained in:
70
CLAUDE.md
Normal file
70
CLAUDE.md
Normal 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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user