# jovishacurlie22/gazeestimationapp architecture

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

- Interactive diagram: https://gitdiagram.com/jovishacurlie22/gazeestimationapp
- Repository: https://github.com/jovishacurlie22/gazeestimationapp

## Overview

This Django app runs a research survey: participants provide consent and background information, complete movie, news, and network-diagram tasks, and submit responses; the movie workflow includes sentiment-labeled review excerpts. Recording capture is a separate capability. The sampled views excerpt is incomplete, so edges show only documented routes and relationships visible in the excerpts or source index; unverified upload wiring is omitted.

Main entry points: [`survey_app/views.py`](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py) (Survey views), [`survey_app/movie_data.py`](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/movie_data.py) (Movie content), [`survey_app/urls.py`](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/urls.py) (Survey routes), [`survey_app/news_data.py`](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/news_data.py) (News content)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_participant["Participant setup"]
  node_intake["Consent and profile<br/>[views.py]"]
  node_forms["Input validation<br/>[forms.py]"]
end

subgraph group_tasks["Survey tasks"]
  node_movies["Movie tasks<br/>[views.py]"]
  node_movie_data["Movie content<br/>[movie_data.py]"]
  node_sst["SST review pool"]
  node_news["News tasks<br/>[views.py]"]
  node_news_data["News content<br/>[news_data.py]"]
  node_fnc_data["FNC-1 data"]
  node_network["Network tasks<br/>[views.py]"]
  node_network_data["Diagram content<br/>[network_data.py]"]
end

subgraph group_recording["Recording capture"]
  node_capture_page["Capture session page<br/>[views.py]"]
  node_capture_client["Browser recorder<br/>[capture_session.js]"]
  node_clips[("Recording clips<br/>[models.py]")]
end

subgraph group_runtime["Application runtime"]
  node_routes["Survey routes<br/>[urls.py]"]
  node_views["Survey views<br/>[views.py]"]
  node_responses[("Survey responses<br/>[models.py]")]
end

node_participant(("Participant"))
node_pytreebank["pytreebank"]

node_participant -->|"starts survey"| node_routes
node_routes -->|"routes requests"| node_views
node_views -->|"handles intake"| node_intake
node_intake -->|"validates with"| node_forms
node_views -->|"uses forms"| node_forms
node_views -->|"serves movie tasks"| node_movies
node_views -->|"serves news tasks"| node_news
node_views -->|"serves network tasks"| node_network
node_views -->|"imports content"| node_movie_data
node_movie_data -->|"loads local dataset"| node_sst
node_movie_data -->|"loads dataset"| node_pytreebank
node_views -->|"imports content"| node_news_data
node_news_data -->|"reads CSV data"| node_fnc_data
node_views -->|"imports content"| node_network_data
node_views -->|"persists answers"| node_responses
node_routes -->|"routes capture"| node_capture_page
node_capture_page -.->|"renders recorder"| node_capture_client
node_capture_client -.->|"uploads clips"| node_clips

click node_routes "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/urls.py"
click node_views "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py"
click node_intake "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py"
click node_forms "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/forms.py"
click node_movies "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py"
click node_movie_data "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/movie_data.py"
click node_sst "https://github.com/jovishacurlie22/gazeestimationapp/tree/main/data/stanford_sentiment_treebank"
click node_news "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py"
click node_news_data "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/news_data.py"
click node_fnc_data "https://github.com/jovishacurlie22/gazeestimationapp/tree/main/data/fnc-1"
click node_network "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py"
click node_network_data "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/network_data.py"
click node_responses "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/models.py"
click node_capture_page "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py"
click node_capture_client "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/static/survey_app/js/capture_session.js"
click node_clips "https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/models.py"

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_intake,node_forms toneBlue
class node_movies,node_movie_data,node_sst,node_news,node_news_data,node_fnc_data,node_network,node_network_data toneAmber
class node_capture_page,node_capture_client,node_clips toneMint
class node_routes,node_views,node_responses toneRose
class node_participant,node_pytreebank toneIndigo
```

## Components

### Participant setup

- [Consent and profile](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py): `survey_app/views.py`
- [Input validation](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/forms.py): `survey_app/forms.py`

### Survey tasks

- [Movie tasks](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py): `survey_app/views.py`
- [Movie content](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/movie_data.py): `survey_app/movie_data.py`
- [SST review pool](https://github.com/jovishacurlie22/gazeestimationapp/tree/main/data/stanford_sentiment_treebank): `data/stanford_sentiment_treebank`
- [News tasks](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py): `survey_app/views.py`
- [News content](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/news_data.py): `survey_app/news_data.py`
- [FNC-1 data](https://github.com/jovishacurlie22/gazeestimationapp/tree/main/data/fnc-1): `data/fnc-1`
- [Network tasks](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py): `survey_app/views.py`
- [Diagram content](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/network_data.py): `survey_app/network_data.py`

### Recording capture

- [Capture session page](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py): `survey_app/views.py`
- [Browser recorder](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/static/survey_app/js/capture_session.js): `survey_app/static/survey_app/js/capture_session.js`
- [Recording clips](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/models.py): `survey_app/models.py`

### Application runtime

- [Survey routes](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/urls.py): `survey_app/urls.py`
- [Survey views](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/views.py): `survey_app/views.py`
- [Survey responses](https://github.com/jovishacurlie22/gazeestimationapp/blob/main/survey_app/models.py): `survey_app/models.py`

### Other components

- **Participant**
- **pytreebank**

## Connections

- Participant → Survey routes: starts survey (evidence: `README.md`)
- Survey routes → Survey views: routes requests (evidence: `survey_app/urls.py`)
- Survey views → Consent and profile: handles intake (evidence: `survey_app/urls.py`)
- Consent and profile → Input validation: validates with (evidence: `survey_app/views.py`)
- Survey views → Input validation: uses forms (evidence: `survey_app/views.py`)
- Survey views → Movie tasks: serves movie tasks (evidence: `survey_app/urls.py`)
- Survey views → News tasks: serves news tasks (evidence: `survey_app/urls.py`)
- Survey views → Network tasks: serves network tasks (evidence: `survey_app/urls.py`)
- Survey views → Movie content: imports content (evidence: `survey_app/views.py`)
- Movie content → SST review pool: loads local dataset (evidence: `survey_app/movie_data.py`)
- Movie content → pytreebank: loads dataset (evidence: `survey_app/movie_data.py`)
- Survey views → News content: imports content (evidence: `survey_app/views.py`)
- News content → FNC-1 data: reads CSV data (evidence: `survey_app/news_data.py`)
- Survey views → Diagram content: imports content (evidence: `survey_app/views.py`)
- Survey views → Survey responses: persists answers (evidence: `survey_app/views.py`)
- Survey routes → Capture session page: routes capture (evidence: `survey_app/urls.py`)
- Capture session page → Browser recorder: renders recorder
- Browser recorder → Recording clips: uploads clips
