# 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 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 ``` ## Запуск без 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) - [ ] Уведомления / дни рождения