# balqis-raihana/myportofolio architecture

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

- Interactive diagram: https://gitdiagram.com/balqis-raihana/myportofolio
- Repository: https://github.com/balqis-raihana/myportofolio

## Overview

This is a Django portfolio site: visitors browse profile, experience, and coursework pages, while authorized administrators manage those records. The documented request path runs from the project URL configuration through app routes and views to model-backed templates. The sampled code also supports JSON endpoints, experience search/filtering and starring, coursework journals and detail pages, and account login/registration. Some view implementations and templates were not sampled, so uncertain wiring is omitted; storage is configured for SQLite locally or PostgreSQL in production.

Main entry points: [`main/views.py`](https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py) (Experience features), [`templates`](https://github.com/balqis-raihana/myportofolio/tree/main/templates) (Page templates), [`portofolio/urls.py`](https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/urls.py) (Project routes), [`main/models.py`](https://github.com/balqis-raihana/myportofolio/blob/main/main/models.py) (Portfolio models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web routing"]
  node_projecturls["Project routes<br/>[urls.py]"]
  node_approutes["App routes<br/>[urls.py]"]
  node_views["Request views<br/>[views.py]"]
  node_settings["Django configuration<br/>[settings.py]"]
  node_templates["Page templates"]
end

subgraph group_portfolio["Portfolio content"]
  node_profile["Profile page<br/>[views.py]"]
  node_experience["Experience features<br/>[views.py]"]
  node_coursework["Coursework features<br/>[views.py]"]
  node_staticassets["Static assets"]
end

subgraph group_management["Content management"]
  node_experienceform["Experience form<br/>[forms.py]"]
  node_courseworkform["Coursework form<br/>[forms.py]"]
  node_models["Portfolio models<br/>[models.py]"]
  node_database[("Configured database<br/>[settings.py]")]
end

subgraph group_identity["Accounts"]
  node_auth["Authentication<br/>[views.py]"]
  node_djangoauth["Django auth<br/>[settings.py]"]
end

node_visitor(("Visitor"))
node_adminuser(("Admin user"))

node_visitor -->|"requests pages"| node_projecturls
node_adminuser -->|"requests management"| node_projecturls
node_projecturls -->|"includes routes"| node_approutes
node_approutes -->|"dispatches requests"| node_views
node_views -->|"handles profile"| node_profile
node_views -->|"handles experience"| node_experience
node_views -->|"handles coursework"| node_coursework
node_views -->|"handles accounts"| node_auth
node_profile -->|"renders pages"| node_templates
node_experience -->|"renders pages"| node_templates
node_coursework -->|"renders pages"| node_templates
node_auth -->|"renders pages"| node_templates
node_experience -->|"queries and changes"| node_models
node_coursework -->|"queries and changes"| node_models
node_experience -->|"validates edits"| node_experienceform
node_coursework -->|"validates edits"| node_courseworkform
node_models -->|"persists records"| node_database
node_experience -->|"serves JSON"| node_experience
node_coursework -->|"serves JSON"| node_coursework
node_experience -->|"finds journal images"| node_staticassets
node_auth -->|"uses authentication"| node_djangoauth
node_settings -->|"configures backend"| node_database
node_templates -->|"loads styling"| node_staticassets

click node_projecturls "https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/urls.py"
click node_approutes "https://github.com/balqis-raihana/myportofolio/blob/main/main/urls.py"
click node_views "https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py"
click node_settings "https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/settings.py"
click node_templates "https://github.com/balqis-raihana/myportofolio/tree/main/templates"
click node_profile "https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py"
click node_experience "https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py"
click node_coursework "https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py"
click node_experienceform "https://github.com/balqis-raihana/myportofolio/blob/main/main/forms.py"
click node_courseworkform "https://github.com/balqis-raihana/myportofolio/blob/main/main/forms.py"
click node_models "https://github.com/balqis-raihana/myportofolio/blob/main/main/models.py"
click node_database "https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/settings.py"
click node_staticassets "https://github.com/balqis-raihana/myportofolio/tree/main/static"
click node_auth "https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py"
click node_djangoauth "https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/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_projecturls,node_approutes,node_views,node_settings,node_templates,node_adminuser toneBlue
class node_profile,node_experience,node_coursework,node_staticassets toneAmber
class node_experienceform,node_courseworkform,node_models,node_database toneMint
class node_auth,node_djangoauth toneRose
class node_visitor toneIndigo
```

## Components

### Web routing

- [Project routes](https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/urls.py): `portofolio/urls.py`
- [App routes](https://github.com/balqis-raihana/myportofolio/blob/main/main/urls.py): `main/urls.py`
- [Request views](https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py): `main/views.py`
- [Django configuration](https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/settings.py): `portofolio/settings.py`
- [Page templates](https://github.com/balqis-raihana/myportofolio/tree/main/templates): `templates`

### Portfolio content

- [Profile page](https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py): `main/views.py`
- [Experience features](https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py): `main/views.py`
- [Coursework features](https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py): `main/views.py`
- [Static assets](https://github.com/balqis-raihana/myportofolio/tree/main/static): `static`

### Content management

- [Experience form](https://github.com/balqis-raihana/myportofolio/blob/main/main/forms.py): `main/forms.py`
- [Coursework form](https://github.com/balqis-raihana/myportofolio/blob/main/main/forms.py): `main/forms.py`
- [Portfolio models](https://github.com/balqis-raihana/myportofolio/blob/main/main/models.py): `main/models.py`
- [Configured database](https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/settings.py): `portofolio/settings.py`

### Accounts

- [Authentication](https://github.com/balqis-raihana/myportofolio/blob/main/main/views.py): `main/views.py`
- [Django auth](https://github.com/balqis-raihana/myportofolio/blob/main/portofolio/settings.py): `portofolio/settings.py`

### Other components

- **Visitor**
- **Admin user**

## Connections

- Visitor → Project routes: requests pages
- Admin user → Project routes: requests management
- Project routes → App routes: includes routes
- App routes → Request views: dispatches requests
- Request views → Profile page: handles profile
- Request views → Experience features: handles experience
- Request views → Coursework features: handles coursework
- Request views → Authentication: handles accounts
- Profile page → Page templates: renders pages
- Experience features → Page templates: renders pages
- Coursework features → Page templates: renders pages
- Authentication → Page templates: renders pages
- Experience features → Portfolio models: queries and changes
- Coursework features → Portfolio models: queries and changes
- Experience features → Experience form: validates edits
- Coursework features → Coursework form: validates edits
- Portfolio models → Configured database: persists records
- Experience features → Experience features: serves JSON
- Coursework features → Coursework features: serves JSON
- Experience features → Static assets: finds journal images
- Authentication → Django auth: uses authentication
- Django configuration → Configured database: configures backend
- Page templates → Static assets: loads styling
