Setup Contribution Recognition Data Models
- Dominant language
- Python
- Stars
- 451
- Forks
- 702
- Avg merge
- 22h 59m
- Merged PRs (30d)
- 91
Description
Community & Support: [LinkedIn Group](https://www.linkedin.com/groups/14656108/) · [Slack #project-nest](https://owasp.slack.com/archives/project-nest)
Active project leaders: Arkadii Yakovets -- [GitHub](https://github.com/arkid15r/) · [LinkedIn](https://www.linkedin.com/in/arkid15r/) · [Slack](https://owasp.slack.com/team/U060W3NKLTF); Kate Golovanova -- [GitHub](https://github.com/kasya/) · [LinkedIn](https://www.linkedin.com/in/kate-golovanova/) · [Slack](https://owasp.slack.com/team/U07PWB1JZ6Z)
[Contributing](https://github.com/owasp/nest/blob/main/CONTRIBUTING.md) · [Code of Conduct](https://github.com/owasp/nest/blob/main/CODE_OF_CONDUCT.md) · [GSoC Mentors](https://github.com/owasp/nest/blob/main/MENTORS.md)
---
### Description
Create the core data models for the OWASP Contributor Recognition Program.
The system should use existing GitHub contribution data already available in OWASP Nest and support contribution scoring, contributor tiers, certificates, and leaderboard tracking.
## Models
### ScoringWeight
Stores configurable contribution weights used for scoring.
#### Fields
- `event_type`
- `score`
- `daily_cap`
- `is_active`
#### Supported event types
- `pr_merged`
- `pr_opened`
- `issue_opened`
#### Default scoring
| Contribution Type | Score |
|-------------------|-------|
| PR merged | 10 |
| PR opened | 5 |
| Issue opened | 3 |
---
### ContributionScore
Stores aggregated contributor score and tier information.
#### Fields
- `user`
- `total_score`
- `tier`
- `last_computed`
#### Supported tiers
- `bronze`
- `silver`
- `gold`
- `platinum`
---
### Certificate
Tracks contributor certificate metadata issued at tier milestones.
Certificates dynamically generated during download using stored metadata
#### Fields
- `id`
- `user`
- `tier`
- `score_at_issue`
- `issued_at`
- `is_revoked`
### LeaderboardSnapshot
Stores contributor ranking snapshots for leaderboard history and rank tracking.
#### Fields
- `user`
- `snapshot_date`
- `global_rank`
- `project_rank`
- `score`
- `tier`
- `project`
**Are you going to work on implementing this?**
- [x] Yes
- [ ] No
Contributor guide
Assessment
This issue has not been assessed yet.