Introduce network map view/components with filtering and positioning, expand contacts/map backend fields and migrations, and add a persistent light/dark theme toggle with graph label color updates for readability. Co-authored-by: Cursor <cursoragent@cursor.com>
3.2 KiB
3.2 KiB
Social Graph Builder
Построитель социального графа: импорт контактов, визуализация связей, CRUD.
Стек
| Слой | Технология |
|---|---|
| Backend API | Django 4.2 + Django REST Framework |
| База данных | SQLite |
| Frontend | Vue.js 3 + Vite |
| Граф | vis-network |
| Состояние | Pinia |
| Запуск | Docker Compose |
Быстрый старт
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 для импорта
name,email,phone,organization,position,notes
Иван Иванов,ivan@example.com,+7-900-000-0001,ООО Ромашка,Директор,
Мария Петрова,maria@example.com,+7-900-000-0002,Газпром,Аналитик,
Формат 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:
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
Frontend:
cd frontend
npm install
npm run dev
В
vite.config.jsпрокси настроен наhttp://backend:8000.
При локальном запуске без Docker замените наhttp://localhost:8000.
Планируемые фичи (следующие итерации)
- Авторизация (Django auth + JWT)
- Теги/группы контактов
- Экспорт в CSV/JSON
- Поиск по организации и должности
- История изменений контакта
- Импорт из vCard (.vcf)
- Уведомления / дни рождения