Skip to content

Commit 88ef17d

Browse files
added README
1 parent c94070d commit 88ef17d

File tree

5 files changed

+127
-12
lines changed

5 files changed

+127
-12
lines changed

README.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# 🌟 Harmonia – Evidence-Based Insights into Team Collaboration
2+
3+
**Harmonia** is an instructor-facing application designed to provide transparent, data-driven insights into how student
4+
teams collaborate on programming assignments. It analyzes Git repositories to compute metrics, visualize evidence,
5+
detect anomalies, and generate short written summaries — helping instructors understand team dynamics at a glance.
6+
7+
---
8+
9+
## 🎯 Project Idea
10+
11+
Harmonia serves as a **decision support system** by automatically analyzing Git repository activity for student teams
12+
and computing a quantifiable **Collaboration Quality Index (CQI)**. The tool centralizes all collaboration evidence and
13+
metrics into a single platform, enabling course staff to ensure fair and evidence-based assessment of teamwork.
14+
15+
### Key Features
16+
17+
* **On-Demand Analysis:** Instructors can trigger a new analysis job course-wide or per-team, with a high-performance
18+
target completion time of $\sim 15$ minutes for typical course sizes ($\sim 200$ teams).
19+
* **Teams Overview Table:** A sortable and filterable dashboard of all teams, featuring key metrics:
20+
* **Course Averages** are prominently displayed to provide context for team-specific scores.
21+
* Quantitative data like **Total Commits**, **Lines Written**, and **Team Members**.
22+
* **Collaboration Quality Index (CQI)** (0-100 score).
23+
* **Team Detail View:** An in-depth page providing comprehensive collaboration evidence, including:
24+
* The final **CQI** and all contributing sub-scores.
25+
* A concise, AI-generated **Short Narrative Report** summarizing activity and referencing key commits.
26+
27+
---
28+
29+
## 🧱 Architecture
30+
31+
Harmonia is built as a Java/Spring-based monolith, prioritizing stability and job orchestration performance.
32+
33+
## 💻 Technology Stack
34+
35+
| Component | Technology |
36+
|:----------|:-----------------------------|
37+
| Client | React 19.2 + TypeScript |
38+
| Server | Spring Boot (Jave) |
39+
| Database | PostgreSQL 18 with Hibernate |
40+
| AI | Spring AI (OpenAI) |
41+
42+
## UML Diagram
43+
44+
![Harmonia Architecture UML Diagram](docs/architecture/Harmonia_architecture.png)
45+
46+
---
47+
48+
## 🐳 Docker Command for PostgreSQL
49+
50+
Use this command to quickly set up a local instance of the PostgreSQL database required by the server.
51+
52+
```bash
53+
docker compose -f docker/docker-compose.yml up -d
54+
```
55+
56+
## 🚀 How to Run the Server
57+
58+
The application uses Gradle for dependency management and building. Assuming you have **Java 25** installed, use the
59+
following commands to build and run the server locally:
60+
61+
1. Make sure to run the Docker container.
62+
63+
2. **Build the Project:** Compile the server application.
64+
65+
| OS | Command to Build Project |
66+
|:---------------------------|:--------------------------------|
67+
| macOS | `./gradlew clean build -x test` |
68+
| Windows | `.\gradlew clean build -x test` |
69+
70+
3. **Run the Server:** Start the Spring Boot application.
71+
72+
| OS | Command to Run Server |
73+
|:---------------------------|:----------------------|
74+
| macOS | `./gradlew bootRun` |
75+
| Windows | `.\gradlew bootRun` |
76+
77+
---
78+
79+
## Dependencies Justification
80+
81+
#### `lucide-react`
82+
83+
- Icon library required by **shadcn/ui**
84+
- Lightweight, consistent, and integrates cleanly with the component system
85+
86+
#### `tailwind-merge`
87+
88+
- Merges Tailwind classes and resolves conflicts (e.g., `px-2` vs. `px-4`)
89+
- Needed for shadcn/ui components that combine base & conditional styles
90+
- **Example:**
91+
```ts
92+
const classes = twMerge(
93+
"px-4 py-2 text-sm text-gray-500", // base styles
94+
isActive && "text-blue-600 font-bold" // conditional styles
95+
);
96+
```
97+
98+
#### `clsx`
99+
100+
- Utility for conditional className construction
101+
- Cleaner and more readable than manual string concatenation
218 KB
Loading

src/main/webapp/package-lock.json

Lines changed: 24 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/webapp/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"update": "ncu -i --format group"
1212
},
1313
"dependencies": {
14-
"@radix-ui/react-slot": "^1.2.4",
14+
"@radix-ui/react-slot": "1.2.4",
1515
"clsx": "2.1.1",
1616
"lucide-react": "0.553.0",
1717
"react": "19.2.0",
@@ -22,7 +22,7 @@
2222
"@eslint/js": "9.39.1",
2323
"@tailwindcss/postcss": "4.1.17",
2424
"@types/node": "24.10.1",
25-
"@types/react": "19.2.3",
25+
"@types/react": "19.2.4",
2626
"@types/react-dom": "19.2.3",
2727
"@vitejs/plugin-react": "5.1.1",
2828
"autoprefixer": "10.4.22",

0 commit comments

Comments
 (0)