Contribution Hub Manager is a secure web application that serves as the frontend interface for the Contribution Hub API. It enables developers to manage their authentication credentials for multiple platforms (GitHub, Azure DevOps) in a secure, encrypted manner and visualize their aggregated contributions across all platforms.
- Secure Authentication: Sign-in/sign-up using Google or GitHub via Firebase Authentication
- Credential Management: Securely store, update, and delete PATs for GitHub and Azure DevOps
- Encrypted Storage: All sensitive data is encrypted using Google Secret Manager
- Contribution Visualization: View aggregated contribution data across multiple platforms
- User-Friendly Interface: Modern, responsive design with real-time feedback
ContributionManager follows a microservices architecture pattern, working in conjunction with the Contribution Hub API.
---
title: Contribution Hub - CI/CD & VPS Deployment Architecture
---
graph TB
%% CI/CD Pipeline
subgraph "CI/CD Pipeline - GitHub Actions"
GA[GitHub Actions] --> GB[Build Docker Images]
GB --> GC[Push to GHCR]
GC --> GD[SSH Deploy to VPS]
end
%% CI/CD Flow
GD -.-> |Deploy via SSH| VPS
GC -.-> |Push Images| GHCR
GHCR -.-> |Pull Images| VPS
%% Users & Domain
U[Users] --> CD[chm.proxzima.dev]
CD --> CR[Caddy Server]
%% VPS Deployment Infrastructure
subgraph "VPS Deployment / Caddy Reverse Proxy + TLS"
subgraph "Docker Compose Services"
subgraph "Frontend Container"
FR[Frontend App<br/>contribution-manager-app]
FR -.-> |Token Management| J2[Token Management UI]
FR -.-> |User Management| J1[User Registration/Login]
end
subgraph "Backend Containers"
C[Contribution.Hub API<br/>backend-hub]
D[Provider Factory]
E[Contribution.AzureDevOps API<br/>backend-azuredevops]
F[Contribution.GitHub API<br/>backend-github]
G[Contribution.Provider API<br/>backend-provider]
DB[Valkey Cache]
end
end
end
%% External APIs
E ---> K1
F ---> K2
G ---> K3
C --> D
D --> E
D --> F
D --> G
CR --> |"/_api/az/* → backend-azuredevops:5000"| E
CR --> |"/_api/gh/* → backend-github:5000"| F
CR --> |"/_api/provider/* → backend-provider:5000"| G
CR --> |"/_api/* → backend-hub:5000"| C
CR --> |"/ → frontend:3000"| FR
E --> DB
F --> DB
G --> DB
%% Data Access
C --> I
C --> H
%% Application Logic Flow
J2 -.-> I[Google Secret Manager]
J2 -.-> H
J1 -.-> H[Firebase Firestore]
%% External Services
subgraph "External Services"
K1[Azure DevOps API SDK]
K2[GitHub GraphQL API]
K3[Future APIs]
subgraph "Data & Security Layer"
H
I
end
subgraph "Container Registry"
GHCR[GitHub Container Registry<br/>ghcr.io/proxzima/*]
end
end
%% Styling
classDef frontend fill:#e3f2fd,stroke:#1976d2,color:#000
classDef api fill:#ede7f6,stroke:#7b1fa2,color:#000
classDef infrastructure fill:#e8f5e9,stroke:#388e3c,color:#000
classDef data fill:#fff8e1,stroke:#f57c00,color:#000
classDef external fill:#fce4ec,stroke:#c2185b,color:#000
classDef cicd fill:#f3e5f5,stroke:#8e24aa,color:#000
class FR,J1,J2 frontend
class C,D,F,E,G,DB api
class CD,CR,VPS,GHCR infrastructure
class H,I data
class K1,K2,K3 external
class GA,GB,GC,GD cicd
- Node.js (v18 or higher)
- npm or pnpm or yarn
- Firebase project with Authentication and Firestore enabled
- Google Cloud project with Secret Manager API enabled
-
Clone the repository
git clone https://github.com/PROxZIMA/ContributionManager.git cd ContributionManager -
Install dependencies
npm install
-
Configure environment variables
Create a
.env.localfile in the root directory:# Firebase Configuration NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id # Google Secret Manager GOOGLE_CLOUD_PROJECT_ID=your_gcp_project_id GOOGLE_APPLICATION_CREDENTIALS=path/to/service-account-key.json # Contribution Hub API NEXT_PUBLIC_API_BASE_URL=http://localhost:5298
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:9002
- Sign in with Google or GitHub
- Complete OAuth flow
- Access the dashboard
- GitHub: Add username and Personal Access Token with
read:userscope - Azure DevOps: Add email, organization, and PAT with Code/Identity/Work Items read permissions
- View aggregated statistics across platforms
- Interactive contribution calendar
- Filter by platform or date range
For detailed API documentation and interactive examples, visit: https://chm.proxzima.dev/home#endpoint
We welcome contributions from the community! ContributionAPI is an open-source project, and we appreciate any help to make it better.
Please read CONTRIBUTING.md for detailed guidelines.
This project follows our Code of Conduct. By participating, you agree to uphold this code.
Distributed under the MIT License. See LICENSE for more information.
PROxZIMA - @PROxZIMA
- Project Repository: https://github.com/PROxZIMA/ContributionManager
- Issue Tracker: https://github.com/PROxZIMA/ContributionManager/issues
- Discussions: Use GitHub Discussions for community support
- Bug Reports: Use our issue templates for bug reports
- Feature Requests: Submit feature requests through GitHub Issues
Built with ❤️ by PROxZIMA
⭐ Star this repo if you find it helpful!
