Files
social-graph/README.md
T
gitrusprusandCursor 5e0af42fce Add local-first SPA architecture and containerized production deploy.
Move data access to use-cases and IndexedDB repositories with optional
remote fallback, changelog/sync ports, and encrypted local backup.
Add production Docker Compose (nginx frontend + optional backend) and
Apache host proxy configuration for deployment.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 16:08:02 +03:00

120 lines
3.5 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.
# Social Graph Builder
Построитель социального графа: импорт контактов, визуализация связей, CRUD.
## Стек
| Слой | Технология |
|------|-----------|
| Backend API | Django 4.2 + Django REST Framework |
| База данных | SQLite |
| Frontend | Vue.js 3 + Vite |
| Граф | vis-network |
| Состояние | Pinia |
| Запуск | Docker Compose |
## Быстрый старт
```bash
git clone <repo>
cd social-graph
docker compose up --build
```
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000/api/
## API endpoints
| Метод | URL | Описание |
|-------|-----|----------|
| GET/POST | `/api/contacts/` | Список / создание контактов |
| GET/PATCH/DELETE | `/api/contacts/{id}/` | Контакт по ID |
| GET/POST | `/api/relations/` | Список / создание связей |
| DELETE | `/api/relations/{id}/` | Удалить связь |
| GET | `/api/graph/` | Граф (nodes + edges для vis.js) |
| GET | `/api/relation-types/` | Типы связей |
| POST | `/api/import/` | Импорт CSV/JSON |
## Формат CSV для импорта
```csv
name,email,phone,organization,position,notes
Иван Иванов,ivan@example.com,+7-900-000-0001,ООО Ромашка,Директор,
Мария Петрова,maria@example.com,+7-900-000-0002,Газпром,Аналитик,
```
## Формат JSON для импорта
```json
[
{"name": "Иван Иванов", "email": "ivan@example.com", "organization": "ООО Ромашка"},
{"name": "Мария Петрова", "phone": "+7-900-000-0002"}
]
```
## Структура проекта
```
social-graph/
├── backend/
│ ├── config/ # Django settings, urls
│ ├── contacts/ # models, serializers, views, urls
│ ├── manage.py
│ ├── requirements.txt
│ └── Dockerfile
├── frontend/
│ ├── src/
│ │ ├── views/ # GraphView, ContactsView, ContactDetailView, ImportView
│ │ ├── components/ # ContactForm
│ │ ├── stores/ # Pinia store (contacts)
│ │ ├── router/ # Vue Router
│ │ ├── api.js # Axios instance
│ │ └── App.vue
│ ├── vite.config.js
│ └── Dockerfile
└── docker-compose.yml
```
## Production (Docker + прокси на хосте)
См. [deploy/README.md](deploy/README.md).
Кратко:
```bash
cp deploy/.env.prod.example deploy/.env.prod
docker compose -f docker-compose.prod.yml --env-file deploy/.env.prod up -d frontend
# прокси на хосте → http://127.0.0.1:8080 (см. deploy/apache/social-graph.conf)
```
## Запуск без Docker
**Backend:**
```bash
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```
**Frontend:**
```bash
cd frontend
npm install
npm run dev
```
> В `vite.config.js` прокси настроен на `http://backend:8000`.
> При локальном запуске без Docker замените на `http://localhost:8000`.
## Планируемые фичи (следующие итерации)
- [ ] Авторизация (Django auth + JWT)
- [ ] Теги/группы контактов
- [ ] Экспорт в CSV/JSON
- [ ] Поиск по организации и должности
- [ ] История изменений контакта
- [ ] Импорт из vCard (.vcf)
- [ ] Уведомления / дни рождения