# 🚨 Code Plagiarism Report: vishkx/gitstory copied from PankajKumardev/gitstory-2025

## TL;DR

**vishkx/gitstory is a direct copy of my project PankajKumardev/gitstory-2025** with minimal modifications (renamed archetypes). The evidence below proves this conclusively.

---

## 📅 Timeline Evidence

| Repository | First Commit | Date |
|------------|--------------|------|
| **PankajKumardev/gitstory-2025** (Original) | `ad1408e` | **December 7, 2025** |
| vishkx/gitstory (Copy) | `2c16be34` | December 15, 2025 |

**My project existed 8 days before vishkx created their repo.**

---

## 🚨 The Smoking Gun: "v1" Bulk Import

On **December 16, 2025**, vishkx made a suspicious commit:

Commit: 322b3d11 Message: "v1" Files Changed: 54 FILES AT ONCE


**This is not normal development.** Adding 54 complete, working files in one commit labeled just "v1" is the signature of:

1. Clone an existing repository
2. Delete the `.git` folder to remove history
3. `git init` and commit everything as "v1"

---

## 🔬 Side-by-Side Code Comparison

### 1. types.ts — 100% IDENTICAL

**My code (Dec 7, 2025):**
```typescript
export interface Language {
  name: string;
  color: string;
  percentage: number;
  count: number; // Used for calculation
}

export interface Repository {
  name: string;
  description: string;
  stars: number;
  language: string;
  topics: string[]; // Added topics for AI detection
  url: string;
}

vishkx's "v1" commit (Dec 16, 2025):

// EXACTLY THE SAME - including my comments

2. constants.ts — Copied My Fake Demo Data

vishkx copied my made-up mock data character-for-character:

Data My Original vishkx's Copy
Username "creative-dev" "creative-dev" ✅ SAME
Avatar "<https://picsum.photos/200/200>" "<https://picsum.photos/200/200>" ✅ SAME
Top Repo "neuro-net-v2" "neuro-net-v2" ✅ SAME
Description "Distributed inference engine for LLMs on consumer hardware." ✅ SAME
Stars 3420 3420 ✅ SAME
All 5 Repos neuro-net-v2, rust-gpu-compute, ai-code-reviewer, ml-notebooks, dotfiles ✅ ALL SAME

The probability of independently inventing the same fake data is ZERO.


3. scoringAlgorithms.ts — Same Logic, Renamed Strings

vishkx copied my algorithm and only renamed the archetype strings:

My Original vishkx's Version Threshold
"The Pull Request Pro" "The Collaboration Maestro" prPercentage > 20 ✅ SAME
"The Reviewer" "The Quality Guardian" reviewPercentage > 10 ✅ SAME
"The Night Owl" "The Midnight Architect" peakHour >= 22 \|\| <= 4 ✅ SAME
"The Early Bird" "The Dawn Coder" peakHour >= 5 && <= 11 ✅ SAME
"The Weekend Warrior" "The Passion Programmer" weekendPercentage > 35 ✅ SAME
"The Grid Painter" "The Relentless Builder" totalCommits >= 1200 ✅ SAME
"The Consistent" "The Steady Craftsman" totalCommits >= 400 ✅ SAME
"The Planner" "The Visionary Planner" issuePercentage > 15 ✅ SAME
"The Community Star" "The Open Source Star" followers >= 500 \|\| stars >= 1000 ✅ SAME
"The Tinkerer" "The Curious Explorer" (default)

Same conditions. Same thresholds. Same order. Just find-and-replace on strings.


4. githubService.ts — 99% Identical

Both have:

Example — identical error messages:

// Both repos:
throw new Error(`User "${username}" not found. Check the spelling and try again.`);
throw new Error("Invalid GitHub token. Please check your token and try again.");
throw new Error(`API Rate Limit Exceeded. Resets at ${resetTime}. Add a GitHub token for 5000 requests/hour.`);

5. SCORING_CONFIG — Identical Constants

// BOTH REPOS HAVE THESE EXACT SAME VALUES:
export const SCORING_CONFIG = {
  language: {
    baseWeight: 1,
    recentActivityBonus: 1,
    diversityThreshold: 3,
    diversityBonus: 0.5,
  },
  repo: {
    stars: { maxPoints: 30, logMultiplier: 10 },
    forks: { maxPoints: 15, logMultiplier: 5 },
    recency: { maxPoints: 25, decayDays: 15 },
    originalWork: 15,
    hasDescription: 5,
    hasTopics: 5,
    hasLanguage: 3,
    watchersMultiplier: 0.5,
    watchersMax: 5,
    archivedPenalty: -20,
    sizeLogMultiplier: 3,
    sizeMaxPoints: 15,
    openIssuesLogMultiplier: 4,
    openIssuesMaxPoints: 8,
    createdIn2025Bonus: 10,
  }
};

6. Fonts & Styling — IDENTICAL Font Stack

My layout.tsx (Dec 7, 2025):

import { Instrument_Serif, Inter_Tight, Space_Mono } from 'next/font/google'

const instrumentSerif = Instrument_Serif({
  weight: '400',
  style: ['normal', 'italic'],
  subsets: ['latin'],
  variable: '--font-instrument-serif',
})

const interTight = Inter_Tight({
  weight: ['300', '400', '600', '700'],
  style: ['normal', 'italic'],
  subsets: ['latin'],
  variable: '--font-inter-tight',
})

const spaceMono = Space_Mono({
  weight: ['400', '700'],
  style: ['normal', 'italic'],
  subsets: ['latin'],
  variable: '--font-space-mono',
})

vishkx's layout.tsx:

// EXACTLY THE SAME FONTS, SAME WEIGHTS, SAME VARIABLES
import { Instrument_Serif, Inter_Tight, Space_Mono } from "next/font/google"

const instrumentSerif = Instrument_Serif({
  weight: "400",
  style: ["normal", "italic"],
  subsets: ["latin"],
  variable: "--font-instrument-serif",  // ✅ SAME
})

const interTight = Inter_Tight({
  weight: ["300", "400", "600", "700"],  // ✅ SAME
  style: ["normal", "italic"],
  subsets: ["latin"],
  variable: "--font-inter-tight",        // ✅ SAME
})

const spaceMono = Space_Mono({
  weight: ["400", "700"],                // ✅ SAME
  style: ["normal", "italic"],
  subsets: ["latin"],
  variable: "--font-space-mono",         // ✅ SAME
})

My globals.css:

--font-serif: var(--font-instrument-serif), "Instrument Serif", serif;
--font-sans: var(--font-inter-tight), "Inter Tight", sans-serif;
--font-mono: var(--font-space-mono), "Space Mono", monospace;

vishkx's globals.css:

--font-sans: var(--font-inter-tight), "Inter Tight", sans-serif;  /* ✅ SAME */
--font-serif: var(--font-instrument-serif), "Instrument Serif", serif;  /* ✅ SAME */
--font-mono: var(--font-space-mono), "Space Mono", monospace;  /* ✅ SAME */

Same 3 Google Fonts. Same weight configurations. Same CSS variables. Same fallbacks.


📊 Code Similarity Summary

File Similarity
types.ts 100% identical (including comments)
constants.ts 100% identical (including fake data)
githubService.ts 99% identical (only import aliases differ)
scoringAlgorithms.ts 95% identical (renamed archetype strings)
layout.tsx fonts 100% identical (same 3 fonts, same weights)
globals.css 100% identical font variables
Error messages 100% identical
API endpoints 100% identical

📋 vishkx's Strategy

Step Action Date
1 Cloned my repository Dec 15
2 Deleted .git folder Dec 15
3 Renamed archetype strings Dec 15-16
4 Created new repo, "Initial commit" Dec 15
5 Committed 54 files as "v1" Dec 16
6 Made iterative UI changes Dec 17-24
7 Added Credits component Dec 25 (only after being caught?)

⚠️ License Violation

My README explicitly states:

Attribution Required: If you use, modify, or build upon this project, you MUST:

  1. Credit the original author — Include "Based on GitStory by Pankaj Kumar"
  2. Link to the original repo
  3. Do NOT claim original authorship

vishkx's README says:

"Created and maintained by vishkx"

This is a direct violation of my license terms.


🔗 Evidence Links


Conclusion

This is not "inspiration" or "similar approach." This is direct code theft:

vishkx copied my code, stripped the git history, renamed some strings, and claimed it as their own.


Report generated: December 25, 2025 Author: Pankaj Kumar (@pankajkumardev)