# aris1920/mini-hacks architecture

> Architecture diagram of the GitHub repository aris1920/mini-hacks, 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/aris1920/mini-hacks
- Repository: https://github.com/aris1920/mini-hacks

## Overview

ResuMatch helps ASU students turn resume or self-reported experience into an editable character sheet, discover campus opportunities, and act on matches. Professors and organizations publish listings and events; admins moderate the platform. The README also documents notifications and a five-template resume editor with selectable-text PDF export. The graph preserves these major capabilities and distinguishes local matching from optional Gemini re-ranking. Source excerpts are limited to the package manifest and Vite config, so relationships below rely on explicit README descriptions; implementation details beyond those descriptions are not verified.

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_student["Student experience"]
  node_resume_input["Resume input"]
  node_basic_parser["Offline parser"]
  node_gemini_sheet["AI sheet parsing"]
  node_sheet["Character sheet"]
end

subgraph group_opportunities["Campus opportunities"]
  node_matching["Local matching"]
  node_ai_rerank["AI re-ranking"]
  node_opportunities["Listings"]
  node_matches["Match results"]
  node_applications["Applications"]
  node_clubs["Club profiles"]
  node_events["Campus events"]
end

subgraph group_resume["Resume tools"]
  node_resume_editor["Resume editor"]
  node_templates["Template layouts"]
  node_pdf_writer["PDF export"]
end

subgraph group_platform["Platform services"]
  node_profile_store[("Profile data")]
  node_notifications["Notifications"]
  node_auth["Authentication"]
  node_admin["Admin controls"]
  node_database[("Application data")]
end

node_student(("Student"))
node_gemini_service{{"Gemini API"}}

node_student -->|"uploads or describes"| node_resume_input
node_resume_input -->|"submits resume"| node_gemini_sheet
node_resume_input -->|"parses offline"| node_basic_parser
node_gemini_sheet -->|"calls optionally"| node_gemini_service
node_gemini_sheet -->|"creates sheet"| node_sheet
node_basic_parser -->|"parses into sheet"| node_sheet
node_sheet -->|"saves profile"| node_profile_store
node_sheet -->|"scores against"| node_matching
node_opportunities -->|"supplies listings"| node_matching
node_matching -->|"ranks results"| node_matches
node_matches -->|"refreshes rankings"| node_ai_rerank
node_ai_rerank -->|"requests ranking"| node_gemini_service
node_student -->|"views matches"| node_matches
node_student -->|"applies"| node_applications
node_student -->|"follows clubs"| node_clubs
node_student -->|"RSVPs"| node_events
node_applications -->|"status alerts"| node_notifications
node_events -->|"sends event alerts"| node_notifications
node_clubs -->|"alerts followers"| node_notifications
node_student -->|"builds resume"| node_resume_editor
node_resume_editor -->|"renders layout"| node_templates
node_resume_editor -->|"exports PDF"| node_pdf_writer
node_student -->|"signs in"| node_auth
node_admin -->|"moderates listings"| node_opportunities
node_admin -->|"moderates events"| node_events
node_admin -->|"moderates clubs"| node_clubs
node_auth -->|"stores sessions"| node_database
node_applications -.->|"tracks applications"| node_database

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_resume_input,node_basic_parser,node_gemini_sheet,node_sheet toneBlue
class node_matching,node_ai_rerank,node_opportunities,node_matches,node_applications,node_clubs,node_events toneAmber
class node_resume_editor,node_templates,node_pdf_writer,node_gemini_service toneMint
class node_profile_store,node_notifications,node_auth,node_admin,node_database toneRose
class node_student toneIndigo
```

## Components

### Student experience

- **Resume input**
- **Offline parser**
- **AI sheet parsing**
- **Character sheet**

### Campus opportunities

- **Local matching**
- **AI re-ranking**
- **Listings**
- **Match results**
- **Applications**
- **Club profiles**
- **Campus events**

### Resume tools

- **Resume editor**
- **Template layouts**
- **PDF export**

### Platform services

- **Profile data**
- **Notifications**
- **Authentication**
- **Admin controls**
- **Application data**

### Other components

- **Student**
- **Gemini API**

## Connections

- Student → Resume input: uploads or describes (evidence: `README.md`)
- Resume input → AI sheet parsing: submits resume (evidence: `README.md`)
- Resume input → Offline parser: parses offline (evidence: `README.md`)
- AI sheet parsing → Gemini API: calls optionally (evidence: `README.md`)
- AI sheet parsing → Character sheet: creates sheet (evidence: `README.md`)
- Offline parser → Character sheet: parses into sheet (evidence: `README.md`)
- Character sheet → Profile data: saves profile (evidence: `README.md`)
- Character sheet → Local matching: scores against (evidence: `README.md`)
- Listings → Local matching: supplies listings (evidence: `README.md`)
- Local matching → Match results: ranks results (evidence: `README.md`)
- Match results → AI re-ranking: refreshes rankings (evidence: `README.md`)
- AI re-ranking → Gemini API: requests ranking (evidence: `README.md`)
- Student → Match results: views matches (evidence: `README.md`)
- Student → Applications: applies (evidence: `README.md`)
- Student → Club profiles: follows clubs (evidence: `README.md`)
- Student → Campus events: RSVPs (evidence: `README.md`)
- Applications → Notifications: status alerts (evidence: `README.md`)
- Campus events → Notifications: sends event alerts (evidence: `README.md`)
- Club profiles → Notifications: alerts followers (evidence: `README.md`)
- Student → Resume editor: builds resume (evidence: `README.md`)
- Resume editor → Template layouts: renders layout (evidence: `README.md`)
- Resume editor → PDF export: exports PDF (evidence: `README.md`)
- Student → Authentication: signs in (evidence: `README.md`)
- Admin controls → Listings: moderates listings (evidence: `README.md`)
- Admin controls → Campus events: moderates events (evidence: `README.md`)
- Admin controls → Club profiles: moderates clubs (evidence: `README.md`)
- Authentication → Application data: stores sessions (evidence: `README.md`)
- Applications → Application data: tracks applications
