Skip to content

Commit ed332b7

Browse files
Merge pull request #44 from SharkyBytes/feature/github-stats-frontend-integration
(SR NO- 9) Enhance Dashboard and UI with Real-Time GitHub Data Metrics, optimized API Calls and enriched Github Stats Response
2 parents 280cd6b + 186e53f commit ed332b7

File tree

19 files changed

+1926
-837
lines changed

19 files changed

+1926
-837
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@ dist/
1414
downloads/
1515
eggs/
1616
.eggs/
17+
1718
lib/
1819
!frontend/src/lib
20+
1921
lib64/
2022
parts/
2123
sdist/

backend/.env.example

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
SUPABASE_URL=
22
SUPABASE_SERVICE_ROLE_KEY=
3-
DISCORD_BOT_TOKEN=
3+
4+
CORS_ORIGINS=http://localhost:3000
5+
GITHUB_TOKEN=
6+
7+
DISCORD_BOT_TOKEN=

backend/app/core/events/enums.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,5 @@ class EventType(str, Enum):
2929
ONBOARDING_COMPLETED = "onboarding.completed"
3030
FAQ_REQUESTED = "faq.requested"
3131
KNOWLEDGE_UPDATED = "knowledge.updated"
32-
3332
ANALYTICS_COLLECTED = "analytics.collected"
3433

backend/app/services/vector_db/service.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import logging
2+
13
import os
24
from typing import List, Dict, Any, Optional
35
from uuid import UUID
@@ -195,3 +197,4 @@ async def check_connection(self) -> bool:
195197
except Exception as e:
196198
logger.error(f"Connection check failed: {str(e)}")
197199
return False
200+

backend/app/utils/github_api.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,25 @@ async def get_repo_stats(repo_url: str):
5454
commits = github_api_request(f"/repos/{owner}/{repo_name}/commits?per_page=5")
5555

5656
code_frequency = github_api_request(f"/repos/{owner}/{repo_name}/stats/code_frequency")
57+
58+
pull_requests_by_state = {
59+
"open": sum(1 for pr in prs if pr["state"] == "open"),
60+
"closed": sum(1 for pr in prs if pr["state"] == "closed"),
61+
"draft": sum(1 for pr in prs if pr.get("draft", False)),
62+
"merged": sum(1 for pr in prs if pr.get("merged_at"))
63+
}
64+
pr_details = [{
65+
"title": pr["title"],
66+
"number": pr["number"],
67+
"state": pr["state"],
68+
"url": pr["html_url"],
69+
"author": {
70+
"login": pr["user"]["login"],
71+
"avatar_url": pr["user"]["avatar_url"],
72+
"profile_url": pr["user"]["html_url"]
73+
},
74+
} for pr in prs]
75+
5776

5877
return {
5978
"name": repo_info["full_name"],
@@ -103,13 +122,17 @@ async def get_repo_stats(repo_url: str):
103122

104123
# Pull Requests
105124
"pull_requests": {
125+
**pull_requests_by_state,
126+
"total": len(prs),
127+
"details": pr_details
106128
"total": len(prs),
107129
"merged": sum(1 for pr in prs if pr["merged_at"]),
108130
"draft": sum(1 for pr in prs if pr["draft"]),
109131
"by_state": {
110132
"open": sum(1 for pr in prs if pr["state"] == "open"),
111133
"closed": sum(1 for pr in prs if pr["state"] == "closed")
112134
}
135+
113136
},
114137
}
115138

backend/main.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
1+
2+
3+
import asyncio
4+
import uuid
5+
import logging
6+
17
from fastapi import FastAPI
28
from fastapi.middleware.cors import CORSMiddleware
39
from app.routes import router
410
import uvicorn
11+
from .app.core.events.event_bus import EventBus
12+
from .app.core.events.enums import EventType, PlatformType
13+
from .app.core.events.base import BaseEvent
14+
from .app.core.handler.handler_registry import HandlerRegistry
515

616
app = FastAPI()
717

18+
19+
# CORS Configuration
20+
821
app.add_middleware(
922
CORSMiddleware,
1023
allow_origins=["http://localhost:5173", "http://127.0.0.1:5173"],
@@ -15,8 +28,18 @@
1528
)
1629

1730

31+
app.include_router(router, prefix="/api")
32+
33+
# Initialize Handler Registry and Event Bus
34+
handler_registry = HandlerRegistry()
35+
event_bus = EventBus(handler_registry)
36+
37+
38+
1839
app.include_router(router, prefix="/api")
1940

2041
if __name__ == "__main__":
2142
uvicorn.run(app, host="127.0.0.1", port=8000)
43+
asyncio.run(main())
44+
2245

0 commit comments

Comments
 (0)