# namatigi/django101 architecture

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

- Interactive diagram: https://gitdiagram.com/namatigi/django101
- Repository: https://github.com/namatigi/django101

## Overview

This Django club site presents a monthly event calendar, accepts venue submissions, exposes event and venue records through Django admin, and provides a contact form that sends email. The sampled calendar view builds a calendar and static announcements; no event-query pipeline is visible, so none is implied. The README documents PostgreSQL, while the tree also contains a SQLite database; settings explicitly configure PostgreSQL. The events app's templates and admin behavior are summarized from the tree and sampled registration/view code.

Main entry points: [`myclub_root/myclub_site/urls.py`](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/urls.py) (Project routes), [`myclub_root/events/views.py`](https://github.com/namatigi/django101/blob/master/myclub_root/events/views.py) (Calendar and venue views), [`myclub_root/myclub_site/contact.py`](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/contact.py) (Contact handler), [`myclub_root/events/models.py`](https://github.com/namatigi/django101/blob/master/myclub_root/events/models.py) (Club records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["Request routing"]
  node_project_urls["Project routes<br/>[urls.py]"]
  node_event_urls["Event routes<br/>[urls.py]"]
end

subgraph group_events["Club events"]
  node_event_views["Calendar and venue views<br/>[views.py]"]
  node_calendar["Calendar renderer<br/>[views.py]"]
  node_calendar_template["Calendar page<br/>[calendar_base.html]"]
  node_venue_form["Venue form<br/>[forms.py]"]
  node_venue_template["Venue page<br/>[add_venue.html]"]
  node_domain_models["Club records<br/>[models.py]"]
  node_admin["Django admin<br/>[admin.py]"]
end

subgraph group_site["Site services"]
  node_contact["Contact handler<br/>[contact.py]"]
  node_contact_form["Contact page<br/>[contact.html]"]
  node_mail["Email backend"]
  node_auth_reset["Password reset<br/>[urls.py]"]
end

subgraph group_persistence["Persistence"]
  node_settings["Django settings<br/>[settings.py]"]
  node_database[("PostgreSQL database")]
end

node_visitor(("Site visitor"))

node_visitor -->|"requests pages"| node_project_urls
node_project_urls -->|"includes routes"| node_event_urls
node_event_urls -->|"dispatches requests"| node_event_views
node_event_views -->|"builds calendar"| node_calendar
node_event_views -->|"renders page"| node_calendar_template
node_event_views -->|"validates submissions"| node_venue_form
node_event_views -->|"renders form"| node_venue_template
node_venue_form -->|"saves venue"| node_domain_models
node_admin -->|"registers records"| node_domain_models
node_project_urls -->|"routes admin"| node_admin
node_project_urls -->|"routes reset"| node_auth_reset
node_project_urls -->|"routes contact"| node_contact
node_contact -->|"renders page"| node_contact_form
node_contact -->|"sends message"| node_mail
node_settings -->|"configures connection"| node_database
node_domain_models -->|"persists records"| node_database

click node_project_urls "https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/urls.py"
click node_event_urls "https://github.com/namatigi/django101/blob/master/myclub_root/events/urls.py"
click node_event_views "https://github.com/namatigi/django101/blob/master/myclub_root/events/views.py"
click node_calendar "https://github.com/namatigi/django101/blob/master/myclub_root/events/views.py"
click node_calendar_template "https://github.com/namatigi/django101/blob/master/myclub_root/events/templates/events/calendar_base.html"
click node_venue_form "https://github.com/namatigi/django101/blob/master/myclub_root/events/forms.py"
click node_venue_template "https://github.com/namatigi/django101/blob/master/myclub_root/events/templates/events/add_venue.html"
click node_domain_models "https://github.com/namatigi/django101/blob/master/myclub_root/events/models.py"
click node_admin "https://github.com/namatigi/django101/blob/master/myclub_root/events/admin.py"
click node_contact "https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/contact.py"
click node_contact_form "https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/templates/contact/contact.html"
click node_auth_reset "https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/urls.py"
click node_settings "https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/settings.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_project_urls,node_event_urls toneBlue
class node_event_views,node_calendar,node_calendar_template,node_venue_form,node_venue_template,node_domain_models,node_admin toneAmber
class node_contact,node_contact_form,node_mail,node_auth_reset toneMint
class node_settings,node_database toneRose
class node_visitor toneIndigo
```

## Components

### Request routing

- [Project routes](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/urls.py): `myclub_root/myclub_site/urls.py`
- [Event routes](https://github.com/namatigi/django101/blob/master/myclub_root/events/urls.py): `myclub_root/events/urls.py`

### Club events

- [Calendar and venue views](https://github.com/namatigi/django101/blob/master/myclub_root/events/views.py): `myclub_root/events/views.py`
- [Calendar renderer](https://github.com/namatigi/django101/blob/master/myclub_root/events/views.py): `myclub_root/events/views.py`
- [Calendar page](https://github.com/namatigi/django101/blob/master/myclub_root/events/templates/events/calendar_base.html): `myclub_root/events/templates/events/calendar_base.html`
- [Venue form](https://github.com/namatigi/django101/blob/master/myclub_root/events/forms.py): `myclub_root/events/forms.py`
- [Venue page](https://github.com/namatigi/django101/blob/master/myclub_root/events/templates/events/add_venue.html): `myclub_root/events/templates/events/add_venue.html`
- [Club records](https://github.com/namatigi/django101/blob/master/myclub_root/events/models.py): `myclub_root/events/models.py`
- [Django admin](https://github.com/namatigi/django101/blob/master/myclub_root/events/admin.py): `myclub_root/events/admin.py`

### Site services

- [Contact handler](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/contact.py): `myclub_root/myclub_site/contact.py`
- [Contact page](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/templates/contact/contact.html): `myclub_root/myclub_site/templates/contact/contact.html`
- **Email backend**
- [Password reset](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/urls.py): `myclub_root/myclub_site/urls.py`

### Persistence

- [Django settings](https://github.com/namatigi/django101/blob/master/myclub_root/myclub_site/settings.py): `myclub_root/myclub_site/settings.py`
- **PostgreSQL database**

### Other components

- **Site visitor**

## Connections

- Site visitor → Project routes: requests pages
- Project routes → Event routes: includes routes
- Event routes → Calendar and venue views: dispatches requests
- Calendar and venue views → Calendar renderer: builds calendar
- Calendar and venue views → Calendar page: renders page
- Calendar and venue views → Venue form: validates submissions
- Calendar and venue views → Venue page: renders form
- Venue form → Club records: saves venue
- Django admin → Club records: registers records
- Project routes → Django admin: routes admin
- Project routes → Password reset: routes reset
- Project routes → Contact handler: routes contact
- Contact handler → Contact page: renders page
- Contact handler → Email backend: sends message
- Django settings → PostgreSQL database: configures connection
- Club records → PostgreSQL database: persists records
