# fabricadesoftware-ifc/fabricahackathon_backend architecture

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

- Interactive diagram: https://gitdiagram.com/fabricadesoftware-ifc/fabricahackathon_backend
- Repository: https://github.com/fabricadesoftware-ifc/fabricahackathon_backend

## Overview

This is a Django REST API for managing hackathon editions, teams and projects, participant enrollment, judging, preliminary assessments, and administrator oversight. The main workflow is authenticated participant enrollment into an edition, creation of a team and project, evaluator scoring, and computation of a final result; administrators also inspect edition summaries and rankings. Public and authenticated resource endpoints, profile management, and image uploads are supporting capabilities. The graph uses the route table and sampled modules; unsampled resource handlers are represented by their existing views directory, so their internal call details are not inferred.

Main entry points: [`django_project/urls.py`](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/django_project/urls.py) (API routes), [`core/hackathon/models`](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/tree/main/core/hackathon/models) (Hackathon records), [`core/hackathon/views/me.py`](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/me.py) (My profile), [`core/hackathon/views/inscricao.py`](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/inscricao.py) (Enrollment endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and access"]
  node_routes["API routes<br/>[urls.py]"]
  node_resource_views["Resource endpoints"]
  node_registration["Account registration<br/>[registro.py]"]
  node_permissions["Role permissions<br/>[permissions.py]"]
  node_profile["My profile<br/>[me.py]"]
end

subgraph group_participation["Hackathon participation"]
  node_enrollment["Enrollment endpoints<br/>[inscricao.py]"]
  node_enrollment_logic["Enrollment rules<br/>[inscricao.py]"]
  node_domain_records[("Hackathon records")]
  node_enrollment_serializers["Enrollment serializers<br/>[inscricao.py]"]
end

subgraph group_judging["Judging and results"]
  node_preassessment["Pre-assessment endpoint<br/>[preAvaliacao.py]"]
  node_preassessment_serializer["Pre-assessment serializer<br/>[preAvaliacao.py]"]
  node_preassessment_rules["Pre-assessment scoring<br/>[pre_avaliacao.py]"]
  node_note_serializer["Score validation<br/>[nota.py]"]
  node_note_validation["Score rules<br/>[nota_validation.py]"]
  node_final_score["Final score calculation<br/>[nota_final.py]"]
  node_admin_panel["Admin dashboard<br/>[painel.py]"]
end

subgraph group_media["Profiles and media"]
  node_image_handling["Image handling<br/>[imagem.py]"]
  node_image_validation["Image validation"]
  node_cloudinary[("Cloudinary storage")]
end

node_client(("API client"))

node_client -->|"calls API"| node_routes
node_routes -->|"routes resources"| node_resource_views
node_routes -->|"routes signup"| node_registration
node_routes -->|"routes enrollment"| node_enrollment
node_routes -->|"routes assessment"| node_preassessment
node_routes -->|"routes dashboard"| node_admin_panel
node_routes -->|"routes profile"| node_profile
node_enrollment -->|"delegates enrollment"| node_enrollment_logic
node_enrollment -->|"validates input"| node_enrollment_serializers
node_enrollment_logic -->|"creates team records"| node_domain_records
node_enrollment_serializers -->|"serializes records"| node_domain_records
node_profile -->|"checks roles"| node_permissions
node_profile -->|"uses profile serializers"| node_enrollment_serializers
node_preassessment -->|"validates assessment"| node_preassessment_serializer
node_preassessment -->|"delegates scoring"| node_preassessment_rules
node_preassessment_serializer -->|"serializes assessment"| node_domain_records
node_note_serializer -->|"checks score rules"| node_note_validation
node_note_serializer -->|"creates score records"| node_domain_records
node_admin_panel -->|"reads score logic"| node_final_score
node_admin_panel -->|"queries edition results"| node_domain_records
node_image_handling -.->|"validates uploads"| node_image_validation
node_image_handling -->|"stores images"| node_cloudinary
node_image_validation -->|"validates model images"| node_domain_records

click node_routes "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/django_project/urls.py"
click node_resource_views "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/tree/main/core/hackathon/views"
click node_registration "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/registro.py"
click node_permissions "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/permissions.py"
click node_enrollment "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/inscricao.py"
click node_enrollment_logic "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/services/inscricao.py"
click node_domain_records "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/tree/main/core/hackathon/models"
click node_enrollment_serializers "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/inscricao.py"
click node_profile "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/me.py"
click node_preassessment "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/preAvaliacao.py"
click node_preassessment_serializer "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/preAvaliacao.py"
click node_preassessment_rules "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/services/pre_avaliacao.py"
click node_note_serializer "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/nota.py"
click node_note_validation "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/validations/nota_validation.py"
click node_final_score "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/services/nota_final.py"
click node_admin_panel "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/painel.py"
click node_image_handling "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/imagem.py"
click node_image_validation "https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/validations/imagem_validation.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_routes,node_resource_views,node_registration,node_permissions,node_profile,node_client toneBlue
class node_enrollment,node_enrollment_logic,node_domain_records,node_enrollment_serializers toneAmber
class node_preassessment,node_preassessment_serializer,node_preassessment_rules,node_note_serializer,node_note_validation,node_final_score,node_admin_panel toneMint
class node_image_handling,node_image_validation,node_cloudinary toneRose
```

## Components

### API and access

- [API routes](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/django_project/urls.py): `django_project/urls.py`
- [Resource endpoints](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/tree/main/core/hackathon/views): `core/hackathon/views`
- [Account registration](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/registro.py): `core/hackathon/views/registro.py`
- [Role permissions](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/permissions.py): `core/hackathon/permissions.py`
- [My profile](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/me.py): `core/hackathon/views/me.py`

### Hackathon participation

- [Enrollment endpoints](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/inscricao.py): `core/hackathon/views/inscricao.py`
- [Enrollment rules](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/services/inscricao.py): `core/hackathon/services/inscricao.py`
- [Hackathon records](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/tree/main/core/hackathon/models): `core/hackathon/models`
- [Enrollment serializers](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/inscricao.py): `core/hackathon/serializers/inscricao.py`

### Judging and results

- [Pre-assessment endpoint](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/preAvaliacao.py): `core/hackathon/views/preAvaliacao.py`
- [Pre-assessment serializer](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/preAvaliacao.py): `core/hackathon/serializers/preAvaliacao.py`
- [Pre-assessment scoring](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/services/pre_avaliacao.py): `core/hackathon/services/pre_avaliacao.py`
- [Score validation](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/nota.py): `core/hackathon/serializers/nota.py`
- [Score rules](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/validations/nota_validation.py): `core/hackathon/validations/nota_validation.py`
- [Final score calculation](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/services/nota_final.py): `core/hackathon/services/nota_final.py`
- [Admin dashboard](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/views/painel.py): `core/hackathon/views/painel.py`

### Profiles and media

- [Image handling](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/serializers/imagem.py): `core/hackathon/serializers/imagem.py`
- [Image validation](https://github.com/fabricadesoftware-ifc/fabricahackathon_backend/blob/main/core/hackathon/validations/imagem_validation.py): `core/hackathon/validations/imagem_validation.py`
- **Cloudinary storage**

### Other components

- **API client**

## Connections

- API client → API routes: calls API (evidence: `django_project/urls.py`)
- API routes → Resource endpoints: routes resources (evidence: `django_project/urls.py`)
- API routes → Account registration: routes signup (evidence: `django_project/urls.py`)
- API routes → Enrollment endpoints: routes enrollment (evidence: `django_project/urls.py`)
- API routes → Pre-assessment endpoint: routes assessment (evidence: `django_project/urls.py`)
- API routes → Admin dashboard: routes dashboard (evidence: `django_project/urls.py`)
- API routes → My profile: routes profile (evidence: `django_project/urls.py`)
- Enrollment endpoints → Enrollment rules: delegates enrollment (evidence: `core/hackathon/views/inscricao.py`)
- Enrollment endpoints → Enrollment serializers: validates input (evidence: `core/hackathon/views/inscricao.py`)
- Enrollment rules → Hackathon records: creates team records (evidence: `core/hackathon/services/inscricao.py`)
- Enrollment serializers → Hackathon records: serializes records (evidence: `core/hackathon/serializers/inscricao.py`)
- My profile → Role permissions: checks roles (evidence: `core/hackathon/views/me.py`)
- My profile → Enrollment serializers: uses profile serializers (evidence: `core/hackathon/views/me.py`)
- Pre-assessment endpoint → Pre-assessment serializer: validates assessment (evidence: `core/hackathon/views/preAvaliacao.py`)
- Pre-assessment endpoint → Pre-assessment scoring: delegates scoring (evidence: `core/hackathon/views/preAvaliacao.py`)
- Pre-assessment serializer → Hackathon records: serializes assessment (evidence: `core/hackathon/serializers/preAvaliacao.py`)
- Score validation → Score rules: checks score rules (evidence: `core/hackathon/serializers/nota.py`)
- Score validation → Hackathon records: creates score records (evidence: `core/hackathon/serializers/nota.py`)
- Admin dashboard → Final score calculation: reads score logic (evidence: `core/hackathon/views/painel.py`)
- Admin dashboard → Hackathon records: queries edition results (evidence: `core/hackathon/views/painel.py`)
- Image handling → Image validation: validates uploads
- Image handling → Cloudinary storage: stores images (evidence: `README.md`)
- Image validation → Hackathon records: validates model images (evidence: `core/hackathon/models/user.py`)
