summaryrefslogtreecommitdiff
path: root/internal/showcase/metadata.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-12-31 17:28:34 +0200
committerPaul Buetow <paul@buetow.org>2025-12-31 17:28:46 +0200
commit545e65fe16c761822f0999b8f4ab05f1cd325975 (patch)
treea4afdab1acfa8114219c831fed3f02de8dab4a64 /internal/showcase/metadata.go
parentc04911dfa213b7d3009436e0365d17ed49001759 (diff)
feat: implement logarithmic scoring system for showcase rankingv0.11.0
- Remove vibe-coded and AI-assisted detection from showcase - Add project rank numbers to showcase headers - Implement logarithmic score: log10(LOC) * 1000 / (avgCommitAge + 1) - Replace 'Recent Activity' display with 'Score' - Update sorting to use score (highest first) - Score balances project size and recent activity - Bump version to 0.11.0 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/showcase/metadata.go')
-rw-r--r--internal/showcase/metadata.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/internal/showcase/metadata.go b/internal/showcase/metadata.go
index 147e714..79eaf4a 100644
--- a/internal/showcase/metadata.go
+++ b/internal/showcase/metadata.go
@@ -2,6 +2,7 @@ package showcase
import (
"fmt"
+ "math"
"os"
"os/exec"
"path/filepath"
@@ -28,6 +29,7 @@ type RepoMetadata struct {
LastCommitDate string
License string
AvgCommitAge float64 // Average age of last 42 commits in days
+ Score float64 // Project score combining LOC and recent activity: log10(LOC) * 1000 / (avgCommitAge + 1)
LatestTag string // Latest version tag (empty if no tags)
LatestTagDate string // Date of the latest tag (empty if no tags)
HasReleases bool // Whether the project has any releases/tags
@@ -89,6 +91,14 @@ func extractRepoMetadata(repoPath string) (*RepoMetadata, error) {
}
metadata.AvgCommitAge = avgAge
+ // Calculate score: log10(LOC) * 1000 / (avgCommitAge + 1)
+ // This balances project size with recent activity
+ score := 0.0
+ if metadata.LinesOfCode > 0 {
+ score = math.Log10(float64(metadata.LinesOfCode)) * 1000.0 / (metadata.AvgCommitAge + 1.0)
+ }
+ metadata.Score = score
+
// Get latest tag and check for releases
latestTag, latestTagDate, hasReleases, err := getLatestTag(repoPath)
if err != nil {