# xavi-di16/proyecto79 architecture

> Architecture diagram of the GitHub repository xavi-di16/proyecto79, 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/xavi-di16/proyecto79
- Repository: https://github.com/xavi-di16/proyecto79

## Overview

Xenry is a web platform for practicing company-inspired coding challenges. Students register or sign in, browse a challenge catalog, write TypeScript in a Monaco-based workspace, and submit code for deterministic evaluation; technical evaluation failures are distinguished from student errors so they can retry. The README documents the product flow and stack, but no source excerpts are available, so the graph shows documented relationships only and uses the available top-level directories for implementation paths.

Main entry points: [`frontend`](https://github.com/xavi-di16/proyecto79/tree/main/frontend) (Web application), [`backend`](https://github.com/xavi-di16/proyecto79/tree/main/backend) (REST API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Student experience"]
  node_frontend["Web application"]
  node_access["Registration and login"]
  node_catalog["Challenge catalog"]
  node_workspace["Practice workspace"]
end

subgraph group_api["Backend API"]
  node_api["REST API"]
  node_auth["Authentication"]
  node_challenge_service["Challenge service"]
end

subgraph group_evaluation["Evaluation"]
  node_execution["Evaluation service"]
end

subgraph group_services["External services"]
  node_firestore[("Firestore")]
  node_judge0["Judge0"]
end

node_student(("Student"))

node_student -->|"uses"| node_frontend
node_frontend -->|"provides"| node_access
node_frontend -->|"provides"| node_catalog
node_frontend -->|"provides"| node_workspace
node_frontend -->|"calls"| node_api
node_api -->|"routes auth"| node_auth
node_api -->|"routes challenges"| node_challenge_service
node_api -->|"routes submissions"| node_execution
node_auth -.->|"persists data"| node_firestore
node_challenge_service -.->|"reads challenges"| node_firestore
node_execution -->|"evaluates code"| node_judge0

click node_frontend "https://github.com/xavi-di16/proyecto79/tree/main/frontend"
click node_access "https://github.com/xavi-di16/proyecto79/tree/main/frontend"
click node_catalog "https://github.com/xavi-di16/proyecto79/tree/main/frontend"
click node_workspace "https://github.com/xavi-di16/proyecto79/tree/main/frontend"
click node_api "https://github.com/xavi-di16/proyecto79/tree/main/backend"
click node_auth "https://github.com/xavi-di16/proyecto79/tree/main/backend"
click node_challenge_service "https://github.com/xavi-di16/proyecto79/tree/main/backend"
click node_execution "https://github.com/xavi-di16/proyecto79/tree/main/backend"

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_frontend,node_access,node_catalog,node_workspace toneBlue
class node_api,node_auth,node_challenge_service toneAmber
class node_execution toneMint
class node_firestore,node_judge0 toneRose
class node_student toneIndigo
```

## Components

### Student experience

- [Web application](https://github.com/xavi-di16/proyecto79/tree/main/frontend): `frontend`
- [Registration and login](https://github.com/xavi-di16/proyecto79/tree/main/frontend): `frontend`
- [Challenge catalog](https://github.com/xavi-di16/proyecto79/tree/main/frontend): `frontend`
- [Practice workspace](https://github.com/xavi-di16/proyecto79/tree/main/frontend): `frontend`

### Backend API

- [REST API](https://github.com/xavi-di16/proyecto79/tree/main/backend): `backend`
- [Authentication](https://github.com/xavi-di16/proyecto79/tree/main/backend): `backend`
- [Challenge service](https://github.com/xavi-di16/proyecto79/tree/main/backend): `backend`

### Evaluation

- [Evaluation service](https://github.com/xavi-di16/proyecto79/tree/main/backend): `backend`

### External services

- **Firestore**
- **Judge0**

### Other components

- **Student**

## Connections

- Student → Web application: uses (evidence: `README.md`)
- Web application → Registration and login: provides (evidence: `README.md`)
- Web application → Challenge catalog: provides (evidence: `README.md`)
- Web application → Practice workspace: provides (evidence: `README.md`)
- Web application → REST API: calls (evidence: `README.md`)
- REST API → Authentication: routes auth (evidence: `README.md`)
- REST API → Challenge service: routes challenges (evidence: `README.md`)
- REST API → Evaluation service: routes submissions (evidence: `README.md`)
- Authentication → Firestore: persists data
- Challenge service → Firestore: reads challenges
- Evaluation service → Judge0: evaluates code (evidence: `README.md`)
