# divineninja/django-crm architecture

> Architecture diagram of the GitHub repository divineninja/django-crm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/divineninja/django-crm
- Repository: https://github.com/divineninja/django-crm

## Overview

This is a small Django project whose visible product is a question-and-campaign app: administrators manage campaign questions, choices, and dependencies, while a REST endpoint lists questions with serialized choices and conditions. The README provides no product-level detail. The poll URL declarations are present in the tree but were not sampled, so their specific route-to-view wiring is not asserted; the login integration is likewise omitted because its source is absent.

Main entry points: [`polls/models.py`](https://github.com/divineninja/django-crm/blob/master/polls/models.py) (Poll domain models), [`polls/views.py`](https://github.com/divineninja/django-crm/blob/master/polls/views.py) (Question listing), [`core/urls.py`](https://github.com/divineninja/django-crm/blob/master/core/urls.py) (Project routes), [`polls/serializers.py`](https://github.com/divineninja/django-crm/blob/master/polls/serializers.py) (Question serialization)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_request["Request routing"]
  node_root_urls["Project routes<br/>[urls.py]"]
  node_poll_urls["Poll routes<br/>[urls.py]"]
end

subgraph group_polls["Polls and content"]
  node_question_list["Question listing<br/>[views.py]"]
  node_serialization["Question serialization<br/>[serializers.py]"]
  node_admin["Content administration<br/>[admin.py]"]
  node_domain["Poll domain models<br/>[models.py]"]
end

subgraph group_persistence["Persistence"]
  node_settings["Database configuration<br/>[settings.py]"]
  node_sqlite[("SQLite database<br/>[db.sqlite3]")]
end

node_client(("API client"))

node_client -->|"sends request"| node_root_urls
node_root_urls -->|"includes routes"| node_poll_urls
node_question_list -->|"queries questions"| node_domain
node_question_list -->|"uses serializer"| node_serialization
node_serialization -->|"reads conditions"| node_domain
node_admin -->|"registers models"| node_domain
node_settings -->|"configures database"| node_sqlite
node_domain -->|"persists records"| node_sqlite

click node_root_urls "https://github.com/divineninja/django-crm/blob/master/core/urls.py"
click node_poll_urls "https://github.com/divineninja/django-crm/blob/master/polls/urls.py"
click node_question_list "https://github.com/divineninja/django-crm/blob/master/polls/views.py"
click node_serialization "https://github.com/divineninja/django-crm/blob/master/polls/serializers.py"
click node_admin "https://github.com/divineninja/django-crm/blob/master/polls/admin.py"
click node_domain "https://github.com/divineninja/django-crm/blob/master/polls/models.py"
click node_settings "https://github.com/divineninja/django-crm/blob/master/core/settings.py"
click node_sqlite "https://github.com/divineninja/django-crm/blob/master/db.sqlite3"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_root_urls,node_poll_urls,node_client toneBlue
class node_question_list,node_serialization,node_admin,node_domain toneAmber
class node_settings,node_sqlite toneMint
```

## Components

### Request routing

- [Project routes](https://github.com/divineninja/django-crm/blob/master/core/urls.py): `core/urls.py`
- [Poll routes](https://github.com/divineninja/django-crm/blob/master/polls/urls.py): `polls/urls.py`

### Polls and content

- [Question listing](https://github.com/divineninja/django-crm/blob/master/polls/views.py): `polls/views.py`
- [Question serialization](https://github.com/divineninja/django-crm/blob/master/polls/serializers.py): `polls/serializers.py`
- [Content administration](https://github.com/divineninja/django-crm/blob/master/polls/admin.py): `polls/admin.py`
- [Poll domain models](https://github.com/divineninja/django-crm/blob/master/polls/models.py): `polls/models.py`

### Persistence

- [Database configuration](https://github.com/divineninja/django-crm/blob/master/core/settings.py): `core/settings.py`
- [SQLite database](https://github.com/divineninja/django-crm/blob/master/db.sqlite3): `db.sqlite3`

### Other components

- **API client**

## Connections

- API client → Project routes: sends request
- Project routes → Poll routes: includes routes
- Question listing → Poll domain models: queries questions
- Question listing → Question serialization: uses serializer
- Question serialization → Poll domain models: reads conditions
- Content administration → Poll domain models: registers models
- Database configuration → SQLite database: configures database
- Poll domain models → SQLite database: persists records
