diff --git a/frontend/frontend/src/axios-override.js b/frontend/frontend/src/axios-override.js
index e072df80..5826ab60 100644
--- a/frontend/frontend/src/axios-override.js
+++ b/frontend/frontend/src/axios-override.js
@@ -1,5 +1,18 @@
import axios from 'axios';
import { setupCache } from 'axios-cache-interceptor';
+import { useSelector } from 'react-redux';
+import { HOST } from './constants';
+
+import additionalUserStars from './mockData/additional_user_stars.json' with { type: 'json' };
+import commentedIssues from './mockData/commented_issues.json' with { type: 'json' };
+import commentedPrs from './mockData/commented_prs.json' with { type: 'json' };
+import commits from './mockData/commits.json' with { type: 'json' };
+import gist from './mockData/gist.json' with { type: 'json' };
+import repository from './mockData/repository.json' with { type: 'json' };
+import reviewedPrs from './mockData/reviewed_prs.json' with { type: 'json' };
+import topLanguages from './mockData/top_languages.json' with { type: 'json' };
+import userStats from './mockData/user_stats.json' with { type: 'json' };
+import wakatimeProxy from './mockData/wakatime_proxy.json' with { type: 'json' };
const cachedAxios = setupCache(axios, {
// Cache for 30 minutes
@@ -9,24 +22,88 @@ const cachedAxios = setupCache(axios, {
methods: ['get', 'post'],
});
-// mock username=anuraghazra requests
+function createResolvedPromise(data, config) {
+ return Promise.resolve({
+ data,
+ status: 200,
+ statusText: 'OK',
+ headers: {},
+ config,
+ });
+}
+
+// mock responses to unauthenticated "anuraghazra" requests
cachedAxios.interceptors.request.use(
(config) => {
+ const userId = useSelector((state) => state.user.userId);
+ const isAuthenticated = userId && userId.length > 0;
+ if (isAuthenticated) {
+ return config;
+ }
+
const params = new URL(config.url).entries || {};
+
if (
- params.username === 'anuraghazra' ||
- (params.repo && params.repo.startsWith('anuraghazra/'))
- ) {
- // Return a promise that resolves with a mocked response
- return Promise.resolve({
- data: 'hello anuraghazra!',
- status: 200,
- statusText: 'OK',
- headers: {},
- config,
- });
+ config.url === 'https://api.github.com/graphql' &&
+ config.data.query.includes(
+ 'query userInfo($login: String!, $after: String, $includeMergedPullRequests:',
+ ) &&
+ config.data.data.variables.login === 'anuraghazra'
+ ) {
+ return createResolvedPromise(userStats, config);
+ }
+
+ if (
+ config.url === 'https://api.github.com/graphql' &&
+ config.data.query.includes(
+ 'query userInfo($login: String!, $after: String, $ownerAffiliations:',
+ ) &&
+ config.data.data.variables.login === 'anuraghazra'
+ ) {
+ return createResolvedPromise(additionalUserStars, config);
+ }
+
+ if (
+ config.url === 'https://api.github.com/graphql' &&
+ config.data.query.includes(
+ 'query userInfo($login: String!, $ownerAffiliations:',
+ ) &&
+ config.data.data.variables.login === 'anuraghazra'
+ ) {
+ return createResolvedPromise(topLanguages, config);
+ }
+
+ if (
+ config.url === 'https://api.github.com/graphql' &&
+ config.data.query.includes('fragment RepoInfo on Repository {') &&
+ config.data.data.variables.login === 'anuraghazra' &&
+ config.data.data.variables.repo === 'github-readme-stats'
+ ) {
+ return createResolvedPromise(repository, config);
+ }
+
+ if (
+ config.url === 'https://api.github.com/graphql' &&
+ config.data.query.includes('query gistInfo(') &&
+ config.data.data.variables.login === 'anuraghazra'
+ ) {
+ return createResolvedPromise(gist, config);
+ }
+
+ switch (config.url) {
+ case 'https://api.github.com/search/commits?per_page=1&q=author:anuraghazra':
+ return createResolvedPromise(commits, config);
+ case 'https://api.github.com/search/issues?per_page=1&q=commenter:anuraghazra+-author:anuraghazra+type:pr':
+ return createResolvedPromise(commentedPrs, config);
+ case 'https://api.github.com/search/issues?per_page=1&q=reviewed-by:anuraghazra+-author:anuraghazra+type:pr':
+ return createResolvedPromise(reviewedPrs, config);
+ case 'https://api.github.com/search/issues?per_page=1&q=commenter:anuraghazra+-author:anuraghazra+type:issue':
+ return createResolvedPromise(commentedIssues, config);
+ case `https://${HOST}/api/wakatime-proxy?username=ffflabs`:
+ return createResolvedPromise(wakatimeProxy, config);
+ default:
+ return config;
}
- return config;
},
(error) => {
return Promise.reject(error);
diff --git a/frontend/frontend/src/components/Card/SVG.js b/frontend/frontend/src/components/Card/SVG.js
index 380c2362..843ad5e8 100644
--- a/frontend/frontend/src/components/Card/SVG.js
+++ b/frontend/frontend/src/components/Card/SVG.js
@@ -11,13 +11,6 @@ import 'react-loading-skeleton/dist/skeleton.css';
import { createMockReq, createMockRes } from '../../mock-http';
import { default as router } from '../../backend/.vercel/output/functions/api.func/router.js';
-import axios from 'axios';
-import { HOST } from '../../constants';
-import { DEMO_STATS_CARD } from './demoData/statsCard';
-import { DEMO_TOPLANGS_CARD } from './demoData/topLangsCard';
-import { DEMO_PIN_CARD } from './demoData/pinCard';
-import { DEMO_GIST_CARD } from './demoData/gistCard';
-import { DEMO_WAKATIME_CARD } from './demoData/wakatimeCard';
const SvgInline = (props) => {
const [svg, setSvg] = useState(null);
@@ -36,57 +29,32 @@ const SvgInline = (props) => {
let body;
let status;
- switch (url) {
- case `https://${HOST}/api?username=anuraghazra&include_all_commits=true&client=wizard`:
- status = 200;
- body = DEMO_STATS_CARD;
- break;
- case `https://${HOST}/api/top-langs?username=anuraghazra&langs_count=4&client=wizard`:
- status = 200;
- body = DEMO_TOPLANGS_CARD;
- break;
- case `https://${HOST}/api/pin?repo=anuraghazra/github-readme-stats&client=wizard`:
- status = 200;
- body = DEMO_PIN_CARD;
- break;
- case `https://${HOST}/api/gist?id=bbfce31e0217a3689c8d961a356cb10d&client=wizard`:
- status = 200;
- body = DEMO_GIST_CARD;
- break;
- case `https://${HOST}/api/wakatime?username=ffflabs&langs_count=6&card_width=450&client=wizard`:
- status = 200;
- body = DEMO_WAKATIME_CARD;
- break;
+ const isAuthenticated = userId && userId.length > 0;
+ if (isAuthenticated && (!userToken || userToken === 'placeholderPAT')) {
+ // waiting for backend call to private-access
+ return;
+ }
- default:
- const isAuthenticated = userId && userId.length > 0;
- if (
- isAuthenticated &&
- (!userToken || userToken === 'placeholderPAT')
- ) {
- // waiting for backend call to private-access
- return;
- }
-
- if (isAuthenticated) {
- const req = createMockReq({
- method: 'GET',
- url: url,
- });
- const res = createMockRes();
- await router(req, res);
- body = res._getBody();
- status = res._getStatusCode();
+ // if (isAuthenticated) {
+ const req = createMockReq({
+ method: 'GET',
+ url: url,
+ });
+ const res = createMockRes();
+ await router(req, res);
+ body = res._getBody();
+ status = res._getStatusCode();
+ /*
} else {
let res = await axios.get(url);
body = res.data;
status = res.status;
}
+*/
- if (status >= 300) {
- console.error('failed to fetch/generate SVG');
- return;
- }
+ if (status >= 300) {
+ console.error('failed to fetch/generate SVG');
+ return;
}
setSvg(body);
diff --git a/frontend/frontend/src/components/Card/demoData/gistCard.js b/frontend/frontend/src/components/Card/demoData/gistCard.js
deleted file mode 100644
index 0dc3d3f5..00000000
--- a/frontend/frontend/src/components/Card/demoData/gistCard.js
+++ /dev/null
@@ -1,135 +0,0 @@
-export const DEMO_GIST_CARD = `
-
- `;
diff --git a/frontend/frontend/src/components/Card/demoData/pinCard.js b/frontend/frontend/src/components/Card/demoData/pinCard.js
deleted file mode 100644
index 8787a59e..00000000
--- a/frontend/frontend/src/components/Card/demoData/pinCard.js
+++ /dev/null
@@ -1,155 +0,0 @@
-export const DEMO_PIN_CARD = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ⚡ Dynamically generated stats for your github readmes
-
-
-
-
-
-
- JavaScript
-
-
-
-
-
- 76.9k
-
-
-
- 26.8k
-
-
-
-
-
-
-
-
-
- `;
diff --git a/frontend/frontend/src/components/Card/demoData/statsCard.js b/frontend/frontend/src/components/Card/demoData/statsCard.js
deleted file mode 100644
index 7c549072..00000000
--- a/frontend/frontend/src/components/Card/demoData/statsCard.js
+++ /dev/null
@@ -1,212 +0,0 @@
-export const DEMO_STATS_CARD = `
-
- Anurag Hazra's GitHub Stats, Rank: S
- Total Stars Earned: 81043, Total Commits : 27218, Total PRs: 820, Total Issues: 180, Contributed to (last year): 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- S
-
-
-
-
-
-
-
-
- Total Stars Earned:
- 81k
-
-
-
-
- Total Commits:
- 27.2k
-
-
-
-
- Total PRs:
- 820
-
-
-
-
- Total Issues:
- 180
-
-
-
-
- Contributed to (last year):
- 1
-
-
-
-
-
-
- `;
diff --git a/frontend/frontend/src/components/Card/demoData/topLangsCard.js b/frontend/frontend/src/components/Card/demoData/topLangsCard.js
deleted file mode 100644
index aae9416a..00000000
--- a/frontend/frontend/src/components/Card/demoData/topLangsCard.js
+++ /dev/null
@@ -1,203 +0,0 @@
-export const DEMO_TOPLANGS_CARD = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- JavaScript
- 72.12%
-
-
-
-
-
-
-
-
-
-
-
- HTML
- 14.66%
-
-
-
-
-
-
-
-
-
-
-
- TypeScript
- 9.43%
-
-
-
-
-
-
-
-
-
-
-
- CSS
- 3.79%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `;
diff --git a/frontend/frontend/src/components/Card/demoData/wakatimeCard.js b/frontend/frontend/src/components/Card/demoData/wakatimeCard.js
deleted file mode 100644
index bb852a8b..00000000
--- a/frontend/frontend/src/components/Card/demoData/wakatimeCard.js
+++ /dev/null
@@ -1,265 +0,0 @@
-export const DEMO_WAKATIME_CARD = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Other:
- 143 hrs 35 mins
-
-
-
-
-
-
-
-
-
-
-
- TypeScript:
- 25 hrs 21 mins
-
-
-
-
-
-
-
-
-
-
-
- PHP:
- 18 hrs 56 mins
-
-
-
-
-
-
-
-
-
-
-
- Blade Template:
- 10 hrs 58 mins
-
-
-
-
-
-
-
-
-
-
-
- Vue.js:
- 7 hrs 31 mins
-
-
-
-
-
-
-
-
-
-
-
- JavaScript:
- 7 hrs 28 mins
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `;
diff --git a/frontend/frontend/src/mockData/additional_user_stars.json b/frontend/frontend/src/mockData/additional_user_stars.json
new file mode 100644
index 00000000..2bf5a47a
--- /dev/null
+++ b/frontend/frontend/src/mockData/additional_user_stars.json
@@ -0,0 +1,84 @@
+{
+ "data": {
+ "user": {
+ "repositories": {
+ "totalCount": 139,
+ "nodes": [
+ { "name": "classicLogo", "stargazers": { "totalCount": 1 } },
+ { "name": "creativechat", "stargazers": { "totalCount": 1 } },
+ { "name": "verlet_tests", "stargazers": { "totalCount": 1 } },
+ {
+ "name": "blade-checkout-ui-demo",
+ "stargazers": { "totalCount": 0 }
+ },
+ {
+ "name": "tslint-plugin-analytics",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "stargazer", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "react-smooth-range-input",
+ "stargazers": { "totalCount": 0 }
+ },
+ {
+ "name": "csb-git-integration-bug",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "covid-nepal-web", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "shrijan00003.github.io",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "TheBigCB.com", "stargazers": { "totalCount": 0 } },
+ { "name": "html2commonmark", "stargazers": { "totalCount": 0 } },
+ { "name": "test-myaction", "stargazers": { "totalCount": 0 } },
+ { "name": "react-emoji-render", "stargazers": { "totalCount": 0 } },
+ { "name": "sajilo-editor", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "coder-aayush.github.io",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "codesandbox-client", "stargazers": { "totalCount": 0 } },
+ { "name": "product-sans", "stargazers": { "totalCount": 0 } },
+ { "name": "NodejsBlogSystem", "stargazers": { "totalCount": 0 } },
+ { "name": "native-javascript", "stargazers": { "totalCount": 0 } },
+ { "name": "p5.js", "stargazers": { "totalCount": 0 } },
+ { "name": "gatsbytutorials.com", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "hello-world-docker-action",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "glugmvit.github.io", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "react-map-interaction",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "react-external-image", "stargazers": { "totalCount": 0 } },
+ { "name": "gatsby-boilerplate", "stargazers": { "totalCount": 0 } },
+ { "name": "YouBackup", "stargazers": { "totalCount": 0 } },
+ { "name": "npm-expansions", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "Toy-Neural-Network-JS",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "LSystemCreator", "stargazers": { "totalCount": 0 } },
+ { "name": "Happy-2019", "stargazers": { "totalCount": 0 } },
+ { "name": "jquery-navScroll", "stargazers": { "totalCount": 0 } },
+ { "name": "strml.net", "stargazers": { "totalCount": 0 } },
+ { "name": "Logo", "stargazers": { "totalCount": 0 } },
+ { "name": "website", "stargazers": { "totalCount": 0 } },
+ {
+ "name": "anuraghazra.github.io-old",
+ "stargazers": { "totalCount": 0 }
+ },
+ { "name": "Quintus", "stargazers": { "totalCount": 0 } },
+ { "name": "Electron_experiments", "stargazers": { "totalCount": 0 } }
+ ],
+ "pageInfo": {
+ "hasNextPage": false,
+ "endCursor": "Y3Vyc29yOnYyOpIAzgd5N08="
+ }
+ }
+ }
+ }
+}
diff --git a/frontend/frontend/src/mockData/commented_issues.json b/frontend/frontend/src/mockData/commented_issues.json
new file mode 100644
index 00000000..4c7aae6f
--- /dev/null
+++ b/frontend/frontend/src/mockData/commented_issues.json
@@ -0,0 +1,124 @@
+{
+ "total_count": 583,
+ "incomplete_results": false,
+ "items": [
+ {
+ "url": "https://api.github.com/repos/razorpay/blade/issues/2622",
+ "repository_url": "https://api.github.com/repos/razorpay/blade",
+ "labels_url": "https://api.github.com/repos/razorpay/blade/issues/2622/labels{/name}",
+ "comments_url": "https://api.github.com/repos/razorpay/blade/issues/2622/comments",
+ "events_url": "https://api.github.com/repos/razorpay/blade/issues/2622/events",
+ "html_url": "https://github.com/razorpay/blade/issues/2622",
+ "id": 3019250106,
+ "node_id": "I_kwDODhyVk86z9hm6",
+ "number": 2622,
+ "title": "Phone input lags when all countries are enabled",
+ "user": {
+ "login": "roylen-john",
+ "id": 32672004,
+ "node_id": "MDQ6VXNlcjMyNjcyMDA0",
+ "avatar_url": "https://avatars.githubusercontent.com/u/32672004?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/roylen-john",
+ "html_url": "https://github.com/roylen-john",
+ "followers_url": "https://api.github.com/users/roylen-john/followers",
+ "following_url": "https://api.github.com/users/roylen-john/following{/other_user}",
+ "gists_url": "https://api.github.com/users/roylen-john/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/roylen-john/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/roylen-john/subscriptions",
+ "organizations_url": "https://api.github.com/users/roylen-john/orgs",
+ "repos_url": "https://api.github.com/users/roylen-john/repos",
+ "events_url": "https://api.github.com/users/roylen-john/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/roylen-john/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "labels": [
+
+ ],
+ "state": "closed",
+ "locked": false,
+ "assignee": {
+ "login": "saurabhdaware",
+ "id": 30949385,
+ "node_id": "MDQ6VXNlcjMwOTQ5Mzg1",
+ "avatar_url": "https://avatars.githubusercontent.com/u/30949385?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/saurabhdaware",
+ "html_url": "https://github.com/saurabhdaware",
+ "followers_url": "https://api.github.com/users/saurabhdaware/followers",
+ "following_url": "https://api.github.com/users/saurabhdaware/following{/other_user}",
+ "gists_url": "https://api.github.com/users/saurabhdaware/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/saurabhdaware/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/saurabhdaware/subscriptions",
+ "organizations_url": "https://api.github.com/users/saurabhdaware/orgs",
+ "repos_url": "https://api.github.com/users/saurabhdaware/repos",
+ "events_url": "https://api.github.com/users/saurabhdaware/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/saurabhdaware/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "assignees": [
+ {
+ "login": "saurabhdaware",
+ "id": 30949385,
+ "node_id": "MDQ6VXNlcjMwOTQ5Mzg1",
+ "avatar_url": "https://avatars.githubusercontent.com/u/30949385?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/saurabhdaware",
+ "html_url": "https://github.com/saurabhdaware",
+ "followers_url": "https://api.github.com/users/saurabhdaware/followers",
+ "following_url": "https://api.github.com/users/saurabhdaware/following{/other_user}",
+ "gists_url": "https://api.github.com/users/saurabhdaware/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/saurabhdaware/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/saurabhdaware/subscriptions",
+ "organizations_url": "https://api.github.com/users/saurabhdaware/orgs",
+ "repos_url": "https://api.github.com/users/saurabhdaware/repos",
+ "events_url": "https://api.github.com/users/saurabhdaware/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/saurabhdaware/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ }
+ ],
+ "milestone": null,
+ "comments": 2,
+ "created_at": "2025-04-25T07:37:15Z",
+ "updated_at": "2025-05-08T07:31:13Z",
+ "closed_at": "2025-05-08T07:30:57Z",
+ "author_association": "NONE",
+ "type": null,
+ "active_lock_reason": null,
+ "sub_issues_summary": {
+ "total": 0,
+ "completed": 0,
+ "percent_completed": 0
+ },
+ "issue_dependencies_summary": {
+ "blocked_by": 0,
+ "total_blocked_by": 0,
+ "blocking": 0,
+ "total_blocking": 0
+ },
+ "body": "The PhoneInput component is causing lag in the onboarding-sdk when all countries are enabled. If we reduce the supported countries to a smaller array, it works fine. We need to show all countries as this is a requirement from product.\n\nPossible reason could be the huge number of dom elements along with other elements from the app. This is not replicable in the example shown in docs.\n\nPossible solution would be to add virtualisation to the dropdown.\n\nhttps://github.com/user-attachments/assets/9089eff6-4339-4178-82e0-7304206480c6",
+ "reactions": {
+ "url": "https://api.github.com/repos/razorpay/blade/issues/2622/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/razorpay/blade/issues/2622/timeline",
+ "performed_via_github_app": null,
+ "state_reason": "completed",
+ "score": 1.0
+ }
+ ]
+}
diff --git a/frontend/frontend/src/mockData/commented_prs.json b/frontend/frontend/src/mockData/commented_prs.json
new file mode 100644
index 00000000..ad391b32
--- /dev/null
+++ b/frontend/frontend/src/mockData/commented_prs.json
@@ -0,0 +1,81 @@
+{
+ "total_count": 1464,
+ "incomplete_results": false,
+ "items": [
+ {
+ "url": "https://api.github.com/repos/razorpay/blade/issues/3020",
+ "repository_url": "https://api.github.com/repos/razorpay/blade",
+ "labels_url": "https://api.github.com/repos/razorpay/blade/issues/3020/labels{/name}",
+ "comments_url": "https://api.github.com/repos/razorpay/blade/issues/3020/comments",
+ "events_url": "https://api.github.com/repos/razorpay/blade/issues/3020/events",
+ "html_url": "https://github.com/razorpay/blade/pull/3020",
+ "id": 3637156493,
+ "node_id": "PR_kwDODhyVk860D02D",
+ "number": 3020,
+ "title": "Added Link Component to Svelte | Cursor Rules for Effecient React to Svelte Migration",
+ "user": {
+ "login": "kashishbehl",
+ "id": 104421875,
+ "node_id": "U_kgDOBjlZ8w",
+ "avatar_url": "https://avatars.githubusercontent.com/u/104421875?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/kashishbehl",
+ "html_url": "https://github.com/kashishbehl",
+ "followers_url": "https://api.github.com/users/kashishbehl/followers",
+ "following_url": "https://api.github.com/users/kashishbehl/following{/other_user}",
+ "gists_url": "https://api.github.com/users/kashishbehl/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/kashishbehl/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/kashishbehl/subscriptions",
+ "organizations_url": "https://api.github.com/users/kashishbehl/orgs",
+ "repos_url": "https://api.github.com/users/kashishbehl/repos",
+ "events_url": "https://api.github.com/users/kashishbehl/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/kashishbehl/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "labels": [
+
+ ],
+ "state": "open",
+ "locked": false,
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "milestone": null,
+ "comments": 2,
+ "created_at": "2025-11-18T09:48:46Z",
+ "updated_at": "2025-11-21T06:50:10Z",
+ "closed_at": null,
+ "author_association": "NONE",
+ "type": null,
+ "active_lock_reason": null,
+ "draft": true,
+ "pull_request": {
+ "url": "https://api.github.com/repos/razorpay/blade/pulls/3020",
+ "html_url": "https://github.com/razorpay/blade/pull/3020",
+ "diff_url": "https://github.com/razorpay/blade/pull/3020.diff",
+ "patch_url": "https://github.com/razorpay/blade/pull/3020.patch",
+ "merged_at": null
+ },
+ "body": "## Description\r\nAdded Initial Changes for Blade Svelte Migration\r\n\r\n1. Cursor Rules for migrating to Svelte\r\n2. Migrated Link Component to blade-svelte\r\n3. Added common utils to blade-core\r\n\r\n|Link type|Screenshot|\r\n|---------|------------|\r\n|Anchor link|
|\r\n|Button Link|
|\r\n|Link with colors|
|\r\n\r\n\r\n## Changes\r\n\r\n\r\n\r\n## Additional Information\r\n\r\n\r\n\r\n## Component Checklist\r\n\r\n\r\n\r\n- [ ] Update Component Status Page\r\n- [ ] Perform Manual Testing in Other Browsers\r\n- [ ] Add KitchenSink Story\r\n- [ ] Add Interaction Tests (if applicable)\r\n- [ ] Add changeset\r\n",
+ "reactions": {
+ "url": "https://api.github.com/repos/razorpay/blade/issues/3020/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/razorpay/blade/issues/3020/timeline",
+ "performed_via_github_app": null,
+ "state_reason": null,
+ "score": 1.0
+ }
+ ]
+}
diff --git a/frontend/frontend/src/mockData/commits.json b/frontend/frontend/src/mockData/commits.json
new file mode 100644
index 00000000..ee807762
--- /dev/null
+++ b/frontend/frontend/src/mockData/commits.json
@@ -0,0 +1,150 @@
+{
+ "total_count": 27219,
+ "incomplete_results": false,
+ "items": [
+ {
+ "url": "https://api.github.com/repos/soham2008xyz/product-sans/commits/ee082f134309ca7cffe0378521ada84bcf8a9ef9",
+ "sha": "ee082f134309ca7cffe0378521ada84bcf8a9ef9",
+ "node_id": "MDY6Q29tbWl0MTY3OTEzMjExOmVlMDgyZjEzNDMwOWNhN2NmZmUwMzc4NTIxYWRhODRiY2Y4YTllZjk=",
+ "html_url": "https://github.com/soham2008xyz/product-sans/commit/ee082f134309ca7cffe0378521ada84bcf8a9ef9",
+ "comments_url": "https://api.github.com/repos/soham2008xyz/product-sans/commits/ee082f134309ca7cffe0378521ada84bcf8a9ef9/comments",
+ "commit": {
+ "url": "https://api.github.com/repos/soham2008xyz/product-sans/git/commits/ee082f134309ca7cffe0378521ada84bcf8a9ef9",
+ "author": {
+ "date": "2019-12-30T21:17:53.000+05:30",
+ "name": "Anurag Hazra",
+ "email": "hazru.anurag@gmail.com"
+ },
+ "committer": {
+ "date": "2019-12-30T21:17:53.000+05:30",
+ "name": "GitHub",
+ "email": "noreply@github.com"
+ },
+ "message": "chore: specified format for @font-face",
+ "tree": {
+ "url": "https://api.github.com/repos/soham2008xyz/product-sans/git/trees/3727e52a68d1be36cfaa2a5b3c3c9f7e2fbf956a",
+ "sha": "3727e52a68d1be36cfaa2a5b3c3c9f7e2fbf956a"
+ },
+ "comment_count": 0
+ },
+ "author": {
+ "login": "anuraghazra",
+ "id": 35374649,
+ "node_id": "MDQ6VXNlcjM1Mzc0NjQ5",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35374649?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/anuraghazra",
+ "html_url": "https://github.com/anuraghazra",
+ "followers_url": "https://api.github.com/users/anuraghazra/followers",
+ "following_url": "https://api.github.com/users/anuraghazra/following{/other_user}",
+ "gists_url": "https://api.github.com/users/anuraghazra/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/anuraghazra/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/anuraghazra/subscriptions",
+ "organizations_url": "https://api.github.com/users/anuraghazra/orgs",
+ "repos_url": "https://api.github.com/users/anuraghazra/repos",
+ "events_url": "https://api.github.com/users/anuraghazra/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/anuraghazra/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "committer": {
+ "login": "web-flow",
+ "id": 19864447,
+ "node_id": "MDQ6VXNlcjE5ODY0NDQ3",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/web-flow",
+ "html_url": "https://github.com/web-flow",
+ "followers_url": "https://api.github.com/users/web-flow/followers",
+ "following_url": "https://api.github.com/users/web-flow/following{/other_user}",
+ "gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/web-flow/subscriptions",
+ "organizations_url": "https://api.github.com/users/web-flow/orgs",
+ "repos_url": "https://api.github.com/users/web-flow/repos",
+ "events_url": "https://api.github.com/users/web-flow/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/web-flow/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "parents": [
+ {
+ "url": "https://api.github.com/repos/soham2008xyz/product-sans/commits/e4ef4077272a5fa89304f7126578693491d85653",
+ "html_url": "https://github.com/soham2008xyz/product-sans/commit/e4ef4077272a5fa89304f7126578693491d85653",
+ "sha": "e4ef4077272a5fa89304f7126578693491d85653"
+ }
+ ],
+ "repository": {
+ "id": 167913211,
+ "node_id": "MDEwOlJlcG9zaXRvcnkxNjc5MTMyMTE=",
+ "name": "product-sans",
+ "full_name": "soham2008xyz/product-sans",
+ "private": false,
+ "owner": {
+ "login": "soham2008xyz",
+ "id": 7334295,
+ "node_id": "MDQ6VXNlcjczMzQyOTU=",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7334295?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/soham2008xyz",
+ "html_url": "https://github.com/soham2008xyz",
+ "followers_url": "https://api.github.com/users/soham2008xyz/followers",
+ "following_url": "https://api.github.com/users/soham2008xyz/following{/other_user}",
+ "gists_url": "https://api.github.com/users/soham2008xyz/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/soham2008xyz/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/soham2008xyz/subscriptions",
+ "organizations_url": "https://api.github.com/users/soham2008xyz/orgs",
+ "repos_url": "https://api.github.com/users/soham2008xyz/repos",
+ "events_url": "https://api.github.com/users/soham2008xyz/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/soham2008xyz/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "html_url": "https://github.com/soham2008xyz/product-sans",
+ "description": "Product Sans webfont from Google",
+ "fork": false,
+ "url": "https://api.github.com/repos/soham2008xyz/product-sans",
+ "forks_url": "https://api.github.com/repos/soham2008xyz/product-sans/forks",
+ "keys_url": "https://api.github.com/repos/soham2008xyz/product-sans/keys{/key_id}",
+ "collaborators_url": "https://api.github.com/repos/soham2008xyz/product-sans/collaborators{/collaborator}",
+ "teams_url": "https://api.github.com/repos/soham2008xyz/product-sans/teams",
+ "hooks_url": "https://api.github.com/repos/soham2008xyz/product-sans/hooks",
+ "issue_events_url": "https://api.github.com/repos/soham2008xyz/product-sans/issues/events{/number}",
+ "events_url": "https://api.github.com/repos/soham2008xyz/product-sans/events",
+ "assignees_url": "https://api.github.com/repos/soham2008xyz/product-sans/assignees{/user}",
+ "branches_url": "https://api.github.com/repos/soham2008xyz/product-sans/branches{/branch}",
+ "tags_url": "https://api.github.com/repos/soham2008xyz/product-sans/tags",
+ "blobs_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/blobs{/sha}",
+ "git_tags_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/tags{/sha}",
+ "git_refs_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/refs{/sha}",
+ "trees_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/trees{/sha}",
+ "statuses_url": "https://api.github.com/repos/soham2008xyz/product-sans/statuses/{sha}",
+ "languages_url": "https://api.github.com/repos/soham2008xyz/product-sans/languages",
+ "stargazers_url": "https://api.github.com/repos/soham2008xyz/product-sans/stargazers",
+ "contributors_url": "https://api.github.com/repos/soham2008xyz/product-sans/contributors",
+ "subscribers_url": "https://api.github.com/repos/soham2008xyz/product-sans/subscribers",
+ "subscription_url": "https://api.github.com/repos/soham2008xyz/product-sans/subscription",
+ "commits_url": "https://api.github.com/repos/soham2008xyz/product-sans/commits{/sha}",
+ "git_commits_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/commits{/sha}",
+ "comments_url": "https://api.github.com/repos/soham2008xyz/product-sans/comments{/number}",
+ "issue_comment_url": "https://api.github.com/repos/soham2008xyz/product-sans/issues/comments{/number}",
+ "contents_url": "https://api.github.com/repos/soham2008xyz/product-sans/contents/{+path}",
+ "compare_url": "https://api.github.com/repos/soham2008xyz/product-sans/compare/{base}...{head}",
+ "merges_url": "https://api.github.com/repos/soham2008xyz/product-sans/merges",
+ "archive_url": "https://api.github.com/repos/soham2008xyz/product-sans/{archive_format}{/ref}",
+ "downloads_url": "https://api.github.com/repos/soham2008xyz/product-sans/downloads",
+ "issues_url": "https://api.github.com/repos/soham2008xyz/product-sans/issues{/number}",
+ "pulls_url": "https://api.github.com/repos/soham2008xyz/product-sans/pulls{/number}",
+ "milestones_url": "https://api.github.com/repos/soham2008xyz/product-sans/milestones{/number}",
+ "notifications_url": "https://api.github.com/repos/soham2008xyz/product-sans/notifications{?since,all,participating}",
+ "labels_url": "https://api.github.com/repos/soham2008xyz/product-sans/labels{/name}",
+ "releases_url": "https://api.github.com/repos/soham2008xyz/product-sans/releases{/id}",
+ "deployments_url": "https://api.github.com/repos/soham2008xyz/product-sans/deployments"
+ },
+ "score": 1.0
+ }
+ ]
+}
diff --git a/frontend/frontend/src/mockData/gist.json b/frontend/frontend/src/mockData/gist.json
new file mode 100644
index 00000000..8960d098
--- /dev/null
+++ b/frontend/frontend/src/mockData/gist.json
@@ -0,0 +1,25 @@
+{
+ "data": {
+ "viewer": {
+ "gist": {
+ "description": "List of countries and territories in English and Spanish: name, continent, capital, dial code, country codes, TLD, and area in sq km. Lista de países y territorios en Inglés y Español: nombre, continente, capital, código de teléfono, códigos de país, dominio y área en km cuadrados. Updated 2024",
+ "owner": {
+ "login": "Yizack"
+ },
+ "stargazerCount": 41,
+ "forks": {
+ "totalCount": 14
+ },
+ "files": [
+ {
+ "name": "countries.json",
+ "language": {
+ "name": "JSON"
+ },
+ "size": 88350
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/frontend/frontend/src/mockData/repository.json b/frontend/frontend/src/mockData/repository.json
new file mode 100644
index 00000000..89ba2e16
--- /dev/null
+++ b/frontend/frontend/src/mockData/repository.json
@@ -0,0 +1,39 @@
+{
+ "data": {
+ "user": {
+ "repository": {
+ "name": "github-readme-stats",
+ "nameWithOwner": "anuraghazra/github-readme-stats",
+ "isPrivate": false,
+ "isArchived": false,
+ "isTemplate": false,
+ "stargazers": {
+ "totalCount": 76994
+ },
+ "description": ":zap: Dynamically generated stats for your github readmes",
+ "primaryLanguage": {
+ "color": "#f1e05a",
+ "id": "MDg6TGFuZ3VhZ2UxNDA=",
+ "name": "JavaScript"
+ },
+ "forkCount": 26873
+ }
+ },
+ "organization": null
+ },
+ "errors": [
+ {
+ "type": "NOT_FOUND",
+ "path": [
+ "organization"
+ ],
+ "locations": [
+ {
+ "line": 25,
+ "column": 9
+ }
+ ],
+ "message": "Could not resolve to an Organization with the login of 'anuraghazra'."
+ }
+ ]
+}
diff --git a/frontend/frontend/src/mockData/reviewed_prs.json b/frontend/frontend/src/mockData/reviewed_prs.json
new file mode 100644
index 00000000..d2e2b7ad
--- /dev/null
+++ b/frontend/frontend/src/mockData/reviewed_prs.json
@@ -0,0 +1,81 @@
+{
+ "total_count": 796,
+ "incomplete_results": false,
+ "items": [
+ {
+ "url": "https://api.github.com/repos/razorpay/blade/issues/3020",
+ "repository_url": "https://api.github.com/repos/razorpay/blade",
+ "labels_url": "https://api.github.com/repos/razorpay/blade/issues/3020/labels{/name}",
+ "comments_url": "https://api.github.com/repos/razorpay/blade/issues/3020/comments",
+ "events_url": "https://api.github.com/repos/razorpay/blade/issues/3020/events",
+ "html_url": "https://github.com/razorpay/blade/pull/3020",
+ "id": 3637156493,
+ "node_id": "PR_kwDODhyVk860D02D",
+ "number": 3020,
+ "title": "Added Link Component to Svelte | Cursor Rules for Effecient React to Svelte Migration",
+ "user": {
+ "login": "kashishbehl",
+ "id": 104421875,
+ "node_id": "U_kgDOBjlZ8w",
+ "avatar_url": "https://avatars.githubusercontent.com/u/104421875?v=4",
+ "gravatar_id": "",
+ "url": "https://api.github.com/users/kashishbehl",
+ "html_url": "https://github.com/kashishbehl",
+ "followers_url": "https://api.github.com/users/kashishbehl/followers",
+ "following_url": "https://api.github.com/users/kashishbehl/following{/other_user}",
+ "gists_url": "https://api.github.com/users/kashishbehl/gists{/gist_id}",
+ "starred_url": "https://api.github.com/users/kashishbehl/starred{/owner}{/repo}",
+ "subscriptions_url": "https://api.github.com/users/kashishbehl/subscriptions",
+ "organizations_url": "https://api.github.com/users/kashishbehl/orgs",
+ "repos_url": "https://api.github.com/users/kashishbehl/repos",
+ "events_url": "https://api.github.com/users/kashishbehl/events{/privacy}",
+ "received_events_url": "https://api.github.com/users/kashishbehl/received_events",
+ "type": "User",
+ "user_view_type": "public",
+ "site_admin": false
+ },
+ "labels": [
+
+ ],
+ "state": "open",
+ "locked": false,
+ "assignee": null,
+ "assignees": [
+
+ ],
+ "milestone": null,
+ "comments": 2,
+ "created_at": "2025-11-18T09:48:46Z",
+ "updated_at": "2025-11-21T06:50:10Z",
+ "closed_at": null,
+ "author_association": "NONE",
+ "type": null,
+ "active_lock_reason": null,
+ "draft": true,
+ "pull_request": {
+ "url": "https://api.github.com/repos/razorpay/blade/pulls/3020",
+ "html_url": "https://github.com/razorpay/blade/pull/3020",
+ "diff_url": "https://github.com/razorpay/blade/pull/3020.diff",
+ "patch_url": "https://github.com/razorpay/blade/pull/3020.patch",
+ "merged_at": null
+ },
+ "body": "## Description\r\nAdded Initial Changes for Blade Svelte Migration\r\n\r\n1. Cursor Rules for migrating to Svelte\r\n2. Migrated Link Component to blade-svelte\r\n3. Added common utils to blade-core\r\n\r\n|Link type|Screenshot|\r\n|---------|------------|\r\n|Anchor link|
|\r\n|Button Link|
|\r\n|Link with colors|
|\r\n\r\n\r\n## Changes\r\n\r\n\r\n\r\n## Additional Information\r\n\r\n\r\n\r\n## Component Checklist\r\n\r\n\r\n\r\n- [ ] Update Component Status Page\r\n- [ ] Perform Manual Testing in Other Browsers\r\n- [ ] Add KitchenSink Story\r\n- [ ] Add Interaction Tests (if applicable)\r\n- [ ] Add changeset\r\n",
+ "reactions": {
+ "url": "https://api.github.com/repos/razorpay/blade/issues/3020/reactions",
+ "total_count": 0,
+ "+1": 0,
+ "-1": 0,
+ "laugh": 0,
+ "hooray": 0,
+ "confused": 0,
+ "heart": 0,
+ "rocket": 0,
+ "eyes": 0
+ },
+ "timeline_url": "https://api.github.com/repos/razorpay/blade/issues/3020/timeline",
+ "performed_via_github_app": null,
+ "state_reason": null,
+ "score": 1.0
+ }
+ ]
+}
diff --git a/frontend/frontend/src/mockData/top_languages.json b/frontend/frontend/src/mockData/top_languages.json
new file mode 100644
index 00000000..b2bfc8b6
--- /dev/null
+++ b/frontend/frontend/src/mockData/top_languages.json
@@ -0,0 +1,1931 @@
+{
+ "data": {
+ "user": {
+ "repositories": {
+ "nodes": [
+ {
+ "name": "verlet_tests",
+ "languages": {
+ "edges": [
+ {
+ "size": 210944,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 91013,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 21652,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Electron_experiments",
+ "languages": {
+ "edges": [
+ {
+ "size": 150035,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 71334,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 20096,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "verlet.js",
+ "languages": {
+ "edges": [
+ {
+ "size": 68497,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 44040,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 1143,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "creativechat",
+ "languages": {
+ "edges": [
+ {
+ "size": 4857,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2504,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 2229,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "VerletDrawing",
+ "languages": {
+ "edges": [
+ {
+ "size": 179171,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 63961,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 31447,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Atomic.js",
+ "languages": {
+ "edges": [
+ {
+ "size": 38753,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1513,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "EvolutionAquerium",
+ "languages": {
+ "edges": [
+ {
+ "size": 38584,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 4299,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 3555,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "classicLogo",
+ "languages": {
+ "edges": [
+ {
+ "size": 46067,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1044,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 964,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "simplerockets",
+ "languages": {
+ "edges": [
+ {
+ "size": 45391,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1860,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Candy.js",
+ "languages": {
+ "edges": [
+ {
+ "size": 37912,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 11350,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "WebGL.js",
+ "languages": {
+ "edges": [
+ {
+ "size": 141735,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 18858,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 13203,
+ "node": {
+ "color": "#5686a5",
+ "name": "GLSL"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "anuraghazra.github.io-old",
+ "languages": {
+ "edges": [
+ {
+ "size": 141706,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 42037,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 39393,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "CanvasFun",
+ "languages": {
+ "edges": [
+ {
+ "size": 4328862,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 50479,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 4802,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 465,
+ "node": {
+ "color": "#89e051",
+ "name": "Shell"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "YoutubeDownloader",
+ "languages": {
+ "edges": [
+ {
+ "size": 500,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 350,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "NewtonsInterpolation",
+ "languages": {
+ "edges": [
+ {
+ "size": 1949,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 481,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Loader.js",
+ "languages": {
+ "edges": [
+ {
+ "size": 1968,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1608,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "LSystemCreator",
+ "languages": {
+ "edges": [
+ {
+ "size": 11949,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2562,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 1848,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "QuickerPoll",
+ "languages": {
+ "edges": [
+ {
+ "size": 46361,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1662,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 728,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "anuraghazra.github.io-old-react",
+ "languages": {
+ "edges": [
+ {
+ "size": 65901,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 15692,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 5807,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "YouBackup",
+ "languages": {
+ "edges": [
+ {
+ "size": 1842,
+ "node": {
+ "color": "#3572A5",
+ "name": "Python"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "GyroDodge",
+ "languages": {
+ "edges": [
+ {
+ "size": 13474,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1721,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 1716,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Verly.js",
+ "languages": {
+ "edges": [
+ {
+ "size": 56329,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 11017,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 865,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "ShaderExpo",
+ "languages": {
+ "edges": [
+ {
+ "size": 48245,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 22985,
+ "node": {
+ "color": "#5686a5",
+ "name": "GLSL"
+ }
+ },
+ {
+ "size": 10992,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 8301,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Nothing",
+ "languages": {
+ "edges": [
+ {
+ "size": 208,
+ "node": {
+ "color": "#6E4C13",
+ "name": "Assembly"
+ }
+ },
+ {
+ "size": 192,
+ "node": {
+ "color": "#438eff",
+ "name": "Objective-C"
+ }
+ },
+ {
+ "size": 165,
+ "node": {
+ "color": "#178600",
+ "name": "C#"
+ }
+ },
+ {
+ "size": 138,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 114,
+ "node": {
+ "color": "#c22d40",
+ "name": "Scala"
+ }
+ },
+ {
+ "size": 109,
+ "node": {
+ "color": "#b07219",
+ "name": "Java"
+ }
+ },
+ {
+ "size": 100,
+ "node": {
+ "color": "#02f88c",
+ "name": "Ada"
+ }
+ },
+ {
+ "size": 86,
+ "node": {
+ "color": "#945db7",
+ "name": "Visual Basic .NET"
+ }
+ },
+ {
+ "size": 83,
+ "node": {
+ "color": "#df7900",
+ "name": "Haxe"
+ }
+ },
+ {
+ "size": 72,
+ "node": {
+ "color": "#ba595e",
+ "name": "D"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "harleydavidson",
+ "languages": {
+ "edges": [
+ {
+ "size": 5999,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 5659,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 5107,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "FlockingBlackHole",
+ "languages": {
+ "edges": [
+ {
+ "size": 15141,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2176,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "NikeHyperAce",
+ "languages": {
+ "edges": [
+ {
+ "size": 29319,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2086,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 1243,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "ParticleBrush",
+ "languages": {
+ "edges": [
+ {
+ "size": 4481,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1565,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "gatsby-starter-netlify-cms",
+ "languages": {
+ "edges": [
+ {
+ "size": 54976,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2877,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "parasites",
+ "languages": {
+ "edges": [
+ {
+ "size": 9884,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2276,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "VerlyRangeSlider",
+ "languages": {
+ "edges": [
+ {
+ "size": 4335,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 2498,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1198,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "Slime",
+ "languages": {
+ "edges": [
+ {
+ "size": 3642,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1521,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 299,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "weird-hello-worlds",
+ "languages": {
+ "edges": [
+ {
+ "size": 2143,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1737,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "circleci-test",
+ "languages": {
+ "edges": [
+ {
+ "size": 19076,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 11280,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "anuraghazra.github.io",
+ "languages": {
+ "edges": [
+ {
+ "size": 127321,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 14938,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "gatsby-github-issues-blog",
+ "languages": {
+ "edges": [
+ {
+ "size": 19460,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "2k76",
+ "languages": {
+ "edges": [
+ {
+ "size": 497222,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 135440,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 123298,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "GithubActionsPlayground",
+ "languages": {
+ "edges": [
+ {
+ "size": 1532,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "react-stripe-dropdown",
+ "languages": {
+ "edges": [
+ {
+ "size": 13982,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 4951,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1708,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "CanvasBalls",
+ "languages": {
+ "edges": [
+ {
+ "size": 1563,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 408,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 150,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "facebook-reaction-animation",
+ "languages": {
+ "edges": [
+ {
+ "size": 13207,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1748,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 175,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "gatsby-plugin-social-banners",
+ "languages": {
+ "edges": [
+ {
+ "size": 2693,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "BugVilla",
+ "languages": {
+ "edges": [
+ {
+ "size": 188614,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 72835,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 5686,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 1834,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "coder-aayush.github.io",
+ "languages": {
+ "edges": [
+ {
+ "size": 14938,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 11100,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 1283,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "nodejs-dynamic-restapi",
+ "languages": {
+ "edges": [
+ {
+ "size": 1825,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "code-runner-action",
+ "languages": {
+ "edges": [
+ {
+ "size": 1737,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "test-myaction",
+ "languages": {
+ "edges": []
+ }
+ },
+ {
+ "name": "covid19-sim",
+ "languages": {
+ "edges": [
+ {
+ "size": 18132,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 2569,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 1232,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "graphql-jwt-auth-test",
+ "languages": {
+ "edges": [
+ {
+ "size": 8231,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "react-folder-tree",
+ "languages": {
+ "edges": [
+ {
+ "size": 18339,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1732,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 70,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "csb-git-integration-bug",
+ "languages": {
+ "edges": [
+ {
+ "size": 1544,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 595,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 58,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "AnuReact",
+ "languages": {
+ "edges": [
+ {
+ "size": 10139,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 175,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 36,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "VanillaMVC",
+ "languages": {
+ "edges": [
+ {
+ "size": 6007,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 259,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "graphql-oauth",
+ "languages": {
+ "edges": [
+ {
+ "size": 10560,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "graphql-oauth-client",
+ "languages": {
+ "edges": [
+ {
+ "size": 17353,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 5086,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1721,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 947,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "design-patterns-everyday",
+ "languages": {
+ "edges": [
+ {
+ "size": 32340,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 4794,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "convoychat",
+ "languages": {
+ "edges": [
+ {
+ "size": 296797,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 4989,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1808,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 787,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "webhooks-test",
+ "languages": {
+ "edges": []
+ }
+ },
+ {
+ "name": "abell-issues-blog",
+ "languages": {
+ "edges": [
+ {
+ "size": 2795,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 1547,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "micro-open-graph",
+ "languages": {
+ "edges": [
+ {
+ "size": 1564,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "anuraghazra",
+ "languages": {
+ "edges": []
+ }
+ },
+ {
+ "name": "github-readme-stats",
+ "languages": {
+ "edges": [
+ {
+ "size": 429394,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 573,
+ "node": {
+ "color": "#89e051",
+ "name": "Shell"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "ts-string-interpolator",
+ "languages": {
+ "edges": [
+ {
+ "size": 1738,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "rust-particles",
+ "languages": {
+ "edges": [
+ {
+ "size": 3122,
+ "node": {
+ "color": "#dea584",
+ "name": "Rust"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "tw-dynamic-interpolation",
+ "languages": {
+ "edges": [
+ {
+ "size": 12279,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 84,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "ToyLang",
+ "languages": {
+ "edges": [
+ {
+ "size": 120383,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "twitter-banner-jokes",
+ "languages": {
+ "edges": [
+ {
+ "size": 3587,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ },
+ {
+ "size": 1857,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "vscode-strip-ts-copy",
+ "languages": {
+ "edges": [
+ {
+ "size": 5372,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "peerlist-profile-action",
+ "languages": {
+ "edges": [
+ {
+ "size": 12724,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 172,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "playground-format-on-save",
+ "languages": {
+ "edges": [
+ {
+ "size": 8647,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 4572,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "go-phyllotaxis",
+ "languages": {
+ "edges": [
+ {
+ "size": 2392,
+ "node": {
+ "color": "#00ADD8",
+ "name": "Go"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "react18-ssr-test",
+ "languages": {
+ "edges": [
+ {
+ "size": 13591,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 2766,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "typelevel-parser",
+ "languages": {
+ "edges": [
+ {
+ "size": 33703,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "test-github-ts",
+ "languages": {
+ "edges": [
+ {
+ "size": 3550,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "type-trident",
+ "languages": {
+ "edges": [
+ {
+ "size": 37320,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "codesandbox-template-astro",
+ "languages": {
+ "edges": [
+ {
+ "size": 4509,
+ "node": {
+ "color": "#ff5a03",
+ "name": "Astro"
+ }
+ },
+ {
+ "size": 109,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "test-codesandbox-projects",
+ "languages": {
+ "edges": []
+ }
+ },
+ {
+ "name": "test-fork-workflow",
+ "languages": {
+ "edges": [
+ {
+ "size": 655,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "test-githubblock",
+ "languages": {
+ "edges": [
+ {
+ "size": 2401,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 557,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 34,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "verly-cpp",
+ "languages": {
+ "edges": [
+ {
+ "size": 24716,
+ "node": {
+ "color": "#f34b7d",
+ "name": "C++"
+ }
+ },
+ {
+ "size": 3314,
+ "node": {
+ "color": "#427819",
+ "name": "Makefile"
+ }
+ },
+ {
+ "size": 424,
+ "node": {
+ "color": "#000080",
+ "name": "Lua"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "rn-tabview-test-repro",
+ "languages": {
+ "edges": [
+ {
+ "size": 1577,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 494,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "tslint-plugin-analytics",
+ "languages": {
+ "edges": [
+ {
+ "size": 4831,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 682,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "blade-checkout-ui-demo",
+ "languages": {
+ "edges": [
+ {
+ "size": 7129,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 436,
+ "node": {
+ "color": "#f1e05a",
+ "name": "JavaScript"
+ }
+ },
+ {
+ "size": 366,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "name": "webgpu-boids",
+ "languages": {
+ "edges": [
+ {
+ "size": 26109,
+ "node": {
+ "color": "#3178c6",
+ "name": "TypeScript"
+ }
+ },
+ {
+ "size": 423,
+ "node": {
+ "color": "#663399",
+ "name": "CSS"
+ }
+ },
+ {
+ "size": 334,
+ "node": {
+ "color": "#e34c26",
+ "name": "HTML"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/frontend/frontend/src/mockData/user_stats.json b/frontend/frontend/src/mockData/user_stats.json
new file mode 100644
index 00000000..6315b4fe
--- /dev/null
+++ b/frontend/frontend/src/mockData/user_stats.json
@@ -0,0 +1,196 @@
+{
+ "data": {
+ "user": {
+ "name": "Anurag Hazra",
+ "login": "anuraghazra",
+ "commits": { "totalCommitContributions": 48 },
+ "reviews": { "totalPullRequestReviewContributions": 150 },
+ "repositoriesContributedTo": { "totalCount": 1 },
+ "pullRequests": { "totalCount": 820 },
+ "openIssues": { "totalCount": 72 },
+ "closedIssues": { "totalCount": 108 },
+ "followers": { "totalCount": 14409 },
+ "repositories": {
+ "totalCount": 139,
+ "nodes": [
+ {
+ "name": "github-readme-stats",
+ "stargazers": { "totalCount": 76994 }
+ },
+ { "name": "Verly.js", "stargazers": { "totalCount": 696 } },
+ {
+ "name": "anuraghazra.github.io",
+ "stargazers": { "totalCount": 608 }
+ },
+ { "name": "anuraghazra", "stargazers": { "totalCount": 375 } },
+ { "name": "type-trident", "stargazers": { "totalCount": 359 } },
+ { "name": "BugVilla", "stargazers": { "totalCount": 232 } },
+ { "name": "convoychat", "stargazers": { "totalCount": 214 } },
+ { "name": "CanvasFun", "stargazers": { "totalCount": 211 } },
+ { "name": "EvolutionAquerium", "stargazers": { "totalCount": 192 } },
+ { "name": "typelevel-parser", "stargazers": { "totalCount": 147 } },
+ { "name": "VerlyRangeSlider", "stargazers": { "totalCount": 135 } },
+ {
+ "name": "vscode-strip-ts-copy",
+ "stargazers": { "totalCount": 72 }
+ },
+ { "name": "react-folder-tree", "stargazers": { "totalCount": 54 } },
+ { "name": "Atomic.js", "stargazers": { "totalCount": 53 } },
+ { "name": "ToyLang", "stargazers": { "totalCount": 51 } },
+ {
+ "name": "design-patterns-everyday",
+ "stargazers": { "totalCount": 46 }
+ },
+ { "name": "gatsby", "stargazers": { "totalCount": 36 } },
+ { "name": "Slime", "stargazers": { "totalCount": 35 } },
+ { "name": "Candy.js", "stargazers": { "totalCount": 34 } },
+ { "name": "ShaderExpo", "stargazers": { "totalCount": 33 } },
+ { "name": "Nothing", "stargazers": { "totalCount": 32 } },
+ {
+ "name": "peerlist-profile-action",
+ "stargazers": { "totalCount": 30 }
+ },
+ {
+ "name": "facebook-reaction-animation",
+ "stargazers": { "totalCount": 29 }
+ },
+ {
+ "name": "react-stripe-dropdown",
+ "stargazers": { "totalCount": 27 }
+ },
+ { "name": "QuickerPoll", "stargazers": { "totalCount": 27 } },
+ {
+ "name": "playground-format-on-save",
+ "stargazers": { "totalCount": 24 }
+ },
+ { "name": "ParticleBrush", "stargazers": { "totalCount": 23 } },
+ { "name": "graphql-oauth", "stargazers": { "totalCount": 21 } },
+ { "name": "parasites", "stargazers": { "totalCount": 21 } },
+ {
+ "name": "twitter-banner-jokes",
+ "stargazers": { "totalCount": 18 }
+ },
+ { "name": "verly-cpp", "stargazers": { "totalCount": 16 } },
+ {
+ "name": "gatsby-github-issues-blog",
+ "stargazers": { "totalCount": 16 }
+ },
+ { "name": "NikeHyperAce", "stargazers": { "totalCount": 12 } },
+ { "name": "rust-particles", "stargazers": { "totalCount": 11 } },
+ { "name": "VerletDrawing", "stargazers": { "totalCount": 10 } },
+ {
+ "name": "graphql-jwt-auth-test",
+ "stargazers": { "totalCount": 9 }
+ },
+ {
+ "name": "anuraghazra.github.io-old-react",
+ "stargazers": { "totalCount": 9 }
+ },
+ { "name": "react18-ssr-test", "stargazers": { "totalCount": 8 } },
+ { "name": "GyroDodge", "stargazers": { "totalCount": 8 } },
+ { "name": "go-phyllotaxis", "stargazers": { "totalCount": 6 } },
+ { "name": "graphql-oauth-client", "stargazers": { "totalCount": 6 } },
+ { "name": "code-runner-action", "stargazers": { "totalCount": 6 } },
+ {
+ "name": "GithubActionsPlayground",
+ "stargazers": { "totalCount": 6 }
+ },
+ { "name": "Loader.js", "stargazers": { "totalCount": 6 } },
+ { "name": "ts-essentials", "stargazers": { "totalCount": 5 } },
+ { "name": "chakra-ui", "stargazers": { "totalCount": 5 } },
+ { "name": "text-to-handwriting", "stargazers": { "totalCount": 5 } },
+ { "name": "build-your-own-x", "stargazers": { "totalCount": 5 } },
+ {
+ "name": "nodejs-dynamic-restapi",
+ "stargazers": { "totalCount": 5 }
+ },
+ { "name": "DevYouTubeList", "stargazers": { "totalCount": 5 } },
+ { "name": "FlockingBlackHole", "stargazers": { "totalCount": 5 } },
+ { "name": "webgpu-boids", "stargazers": { "totalCount": 4 } },
+ { "name": "test-githubblock", "stargazers": { "totalCount": 4 } },
+ {
+ "name": "renderless-components",
+ "stargazers": { "totalCount": 4 }
+ },
+ { "name": "reakit", "stargazers": { "totalCount": 4 } },
+ { "name": "micro-open-graph", "stargazers": { "totalCount": 4 } },
+ { "name": "rest-and-graphql", "stargazers": { "totalCount": 4 } },
+ { "name": "abell-issues-blog", "stargazers": { "totalCount": 4 } },
+ { "name": "VanillaMVC", "stargazers": { "totalCount": 4 } },
+ { "name": "covid19-sim", "stargazers": { "totalCount": 4 } },
+ { "name": "YoutubeDownloader", "stargazers": { "totalCount": 4 } },
+ { "name": "WebGL.js", "stargazers": { "totalCount": 4 } },
+ { "name": "verlet.js", "stargazers": { "totalCount": 4 } },
+ { "name": "test-github-ts", "stargazers": { "totalCount": 3 } },
+ {
+ "name": "tw-dynamic-interpolation",
+ "stargazers": { "totalCount": 3 }
+ },
+ {
+ "name": "ts-string-interpolator",
+ "stargazers": { "totalCount": 3 }
+ },
+ { "name": "AnuReact", "stargazers": { "totalCount": 3 } },
+ { "name": "CanvasBalls", "stargazers": { "totalCount": 3 } },
+ { "name": "circleci-test", "stargazers": { "totalCount": 3 } },
+ {
+ "name": "gatsby-starter-netlify-cms",
+ "stargazers": { "totalCount": 3 }
+ },
+ { "name": "test-fork-workflow", "stargazers": { "totalCount": 2 } },
+ {
+ "name": "test-codesandbox-projects",
+ "stargazers": { "totalCount": 2 }
+ },
+ {
+ "name": "codesandbox-template-astro",
+ "stargazers": { "totalCount": 2 }
+ },
+ { "name": "apollo", "stargazers": { "totalCount": 2 } },
+ { "name": "api-docs", "stargazers": { "totalCount": 2 } },
+ { "name": "Buddies-movie", "stargazers": { "totalCount": 2 } },
+ { "name": "2k76", "stargazers": { "totalCount": 2 } },
+ {
+ "name": "gatsby-remark-embedder",
+ "stargazers": { "totalCount": 2 }
+ },
+ { "name": "weird-hello-worlds", "stargazers": { "totalCount": 2 } },
+ {
+ "name": "rn-tabview-test-repro",
+ "stargazers": { "totalCount": 1 }
+ },
+ { "name": "tailwindcss-jit", "stargazers": { "totalCount": 1 } },
+ { "name": "DefinitelyTyped", "stargazers": { "totalCount": 1 } },
+ {
+ "name": "server-components-demo",
+ "stargazers": { "totalCount": 1 }
+ },
+ { "name": "volant-vo", "stargazers": { "totalCount": 1 } },
+ { "name": "react-spectrum", "stargazers": { "totalCount": 1 } },
+ { "name": "webhooks-test", "stargazers": { "totalCount": 1 } },
+ { "name": "react-showdown", "stargazers": { "totalCount": 1 } },
+ { "name": "transcode", "stargazers": { "totalCount": 1 } },
+ { "name": "awake-yet-action", "stargazers": { "totalCount": 1 } },
+ { "name": "bradgarropy.com", "stargazers": { "totalCount": 1 } },
+ {
+ "name": "gatsby-plugin-social-banners",
+ "stargazers": { "totalCount": 1 }
+ },
+ { "name": "Tour360", "stargazers": { "totalCount": 1 } },
+ { "name": "blizard.js", "stargazers": { "totalCount": 1 } },
+ { "name": "keep-a-changelog", "stargazers": { "totalCount": 1 } },
+ { "name": "vulnerabilities", "stargazers": { "totalCount": 1 } },
+ { "name": "harleydavidson", "stargazers": { "totalCount": 1 } },
+ { "name": "awesome-webgl", "stargazers": { "totalCount": 1 } },
+ { "name": "NewtonsInterpolation", "stargazers": { "totalCount": 1 } },
+ { "name": "now-github-starter", "stargazers": { "totalCount": 1 } },
+ { "name": "simplerockets", "stargazers": { "totalCount": 1 } }
+ ],
+ "pageInfo": {
+ "hasNextPage": true,
+ "endCursor": "Y3Vyc29yOnYyOpIBzgh5q48="
+ }
+ }
+ }
+ }
+}
diff --git a/frontend/frontend/src/mockData/wakatime_proxy.json b/frontend/frontend/src/mockData/wakatime_proxy.json
new file mode 100644
index 00000000..54b00be7
--- /dev/null
+++ b/frontend/frontend/src/mockData/wakatime_proxy.json
@@ -0,0 +1,361 @@
+{
+ "id": "10d3dbf0-217c-451a-b39d-7125faca6776",
+ "user_id": "2dd5e7c6-e792-422f-9f0e-e76985af66e2",
+ "range": "last_year",
+ "timeout": 15,
+ "writes_only": false,
+ "holidays": 231,
+ "status": "ok",
+ "is_stuck": false,
+ "days_minus_holidays": 134,
+ "percent_calculated": 100,
+ "is_already_updating": false,
+ "is_up_to_date": true,
+ "total_seconds": 263996.570273,
+ "days_including_holidays": 365,
+ "total_seconds_including_other_language": 770251.949874,
+ "daily_average_including_other_language": 5748,
+ "daily_average": 1970,
+ "human_readable_total_including_other_language": "213 hrs 57 mins",
+ "operating_systems": [
+ {
+ "total_seconds": 496480.13012,
+ "name": "Unknown OS",
+ "percent": 64.46,
+ "digital": "137:54",
+ "decimal": "137.90",
+ "text": "137 hrs 54 mins",
+ "hours": 137,
+ "minutes": 54
+ },
+ {
+ "total_seconds": 272853.07107,
+ "name": "Linux",
+ "percent": 35.42,
+ "digital": "75:47",
+ "decimal": "75.78",
+ "text": "75 hrs 47 mins",
+ "hours": 75,
+ "minutes": 47
+ },
+ {
+ "total_seconds": 918.748684,
+ "name": "Windows",
+ "percent": 0.12,
+ "digital": "0:15",
+ "decimal": "0.25",
+ "text": "15 mins",
+ "hours": 0,
+ "minutes": 15
+ }
+ ],
+ "categories": [
+ {
+ "name": "Meeting",
+ "total_seconds": 496480.13012,
+ "percent": 64.46,
+ "digital": "137:54",
+ "decimal": "137.90",
+ "text": "137 hrs 54 mins",
+ "hours": 137,
+ "minutes": 54
+ },
+ {
+ "name": "Coding",
+ "total_seconds": 273771.819754,
+ "percent": 35.54,
+ "digital": "76:02",
+ "decimal": "76.03",
+ "text": "76 hrs 2 mins",
+ "hours": 76,
+ "minutes": 2
+ }
+ ],
+ "editors": [
+ {
+ "total_seconds": 496480.13012,
+ "name": "Google Calendar",
+ "percent": 64.46,
+ "digital": "137:54",
+ "decimal": "137.90",
+ "text": "137 hrs 54 mins",
+ "hours": 137,
+ "minutes": 54
+ },
+ {
+ "total_seconds": 250778.595434,
+ "name": "VS Code",
+ "percent": 32.56,
+ "digital": "69:39",
+ "decimal": "69.65",
+ "text": "69 hrs 39 mins",
+ "hours": 69,
+ "minutes": 39
+ },
+ {
+ "total_seconds": 22993.22432,
+ "name": "DataGrip",
+ "percent": 2.99,
+ "digital": "6:23",
+ "decimal": "6.38",
+ "text": "6 hrs 23 mins",
+ "hours": 6,
+ "minutes": 23
+ }
+ ],
+ "human_readable_daily_average_including_other_language": "1 hr 35 mins",
+ "is_up_to_date_pending_future": false,
+ "human_readable_total": "73 hrs 19 mins",
+ "languages": [
+ {
+ "name": "Other",
+ "total_seconds": 506255.379601,
+ "percent": 65.73,
+ "digital": "140:37",
+ "decimal": "140.62",
+ "text": "140 hrs 37 mins",
+ "hours": 140,
+ "minutes": 37
+ },
+ {
+ "name": "TypeScript",
+ "total_seconds": 74336.229167,
+ "percent": 9.65,
+ "digital": "20:38",
+ "decimal": "20.63",
+ "text": "20 hrs 38 mins",
+ "hours": 20,
+ "minutes": 38
+ },
+ {
+ "name": "PHP",
+ "total_seconds": 41144.797498,
+ "percent": 5.34,
+ "digital": "11:25",
+ "decimal": "11.42",
+ "text": "11 hrs 25 mins",
+ "hours": 11,
+ "minutes": 25
+ },
+ {
+ "name": "Vue.js",
+ "total_seconds": 27060.047966,
+ "percent": 3.51,
+ "digital": "7:31",
+ "decimal": "7.52",
+ "text": "7 hrs 31 mins",
+ "hours": 7,
+ "minutes": 31
+ },
+ {
+ "name": "JavaScript",
+ "total_seconds": 26924.099536,
+ "percent": 3.5,
+ "digital": "7:28",
+ "decimal": "7.47",
+ "text": "7 hrs 28 mins",
+ "hours": 7,
+ "minutes": 28
+ },
+ {
+ "name": "JSON",
+ "total_seconds": 26366.784244,
+ "percent": 3.42,
+ "digital": "7:19",
+ "decimal": "7.32",
+ "text": "7 hrs 19 mins",
+ "hours": 7,
+ "minutes": 19
+ },
+ {
+ "name": "SQL",
+ "total_seconds": 23022.426581,
+ "percent": 2.99,
+ "digital": "6:23",
+ "decimal": "6.38",
+ "text": "6 hrs 23 mins",
+ "hours": 6,
+ "minutes": 23
+ },
+ {
+ "name": "Blade Template",
+ "total_seconds": 15362.231057,
+ "percent": 1.99,
+ "digital": "4:16",
+ "decimal": "4.27",
+ "text": "4 hrs 16 mins",
+ "hours": 4,
+ "minutes": 16
+ },
+ {
+ "name": "Bash",
+ "total_seconds": 8844.393415,
+ "percent": 1.15,
+ "digital": "2:27",
+ "decimal": "2.45",
+ "text": "2 hrs 27 mins",
+ "hours": 2,
+ "minutes": 27
+ },
+ {
+ "name": "HTML",
+ "total_seconds": 8555.093038,
+ "percent": 1.11,
+ "digital": "2:22",
+ "decimal": "2.37",
+ "text": "2 hrs 22 mins",
+ "hours": 2,
+ "minutes": 22
+ },
+ {
+ "name": "Markdown",
+ "total_seconds": 3799.950136,
+ "percent": 0.49,
+ "digital": "1:03",
+ "decimal": "1.05",
+ "text": "1 hr 3 mins",
+ "hours": 1,
+ "minutes": 3
+ },
+ {
+ "name": "Python",
+ "total_seconds": 3182.262429,
+ "percent": 0.41,
+ "digital": "0:53",
+ "decimal": "0.88",
+ "text": "53 mins",
+ "hours": 0,
+ "minutes": 53
+ },
+ {
+ "name": "SCSS",
+ "total_seconds": 1421.7404,
+ "percent": 0.18,
+ "digital": "0:23",
+ "decimal": "0.38",
+ "text": "23 mins",
+ "hours": 0,
+ "minutes": 23
+ },
+ {
+ "name": "TSConfig",
+ "total_seconds": 1184.367779,
+ "percent": 0.15,
+ "digital": "0:19",
+ "decimal": "0.32",
+ "text": "19 mins",
+ "hours": 0,
+ "minutes": 19
+ },
+ {
+ "name": "TOML",
+ "total_seconds": 1073.305056,
+ "percent": 0.14,
+ "digital": "0:17",
+ "decimal": "0.28",
+ "text": "17 mins",
+ "hours": 0,
+ "minutes": 17
+ },
+ {
+ "name": "Image (svg)",
+ "total_seconds": 1065.634724,
+ "percent": 0.14,
+ "digital": "0:17",
+ "decimal": "0.28",
+ "text": "17 mins",
+ "hours": 0,
+ "minutes": 17
+ },
+ {
+ "name": "Text",
+ "total_seconds": 220.856383,
+ "percent": 0.03,
+ "digital": "0:03",
+ "decimal": "0.05",
+ "text": "3 mins",
+ "hours": 0,
+ "minutes": 3
+ },
+ {
+ "name": "CSS",
+ "total_seconds": 205.648265,
+ "percent": 0.03,
+ "digital": "0:03",
+ "decimal": "0.05",
+ "text": "3 mins",
+ "hours": 0,
+ "minutes": 3
+ },
+ {
+ "name": "Git Config",
+ "total_seconds": 89.248561,
+ "percent": 0.01,
+ "digital": "0:01",
+ "decimal": "0.02",
+ "text": "1 min",
+ "hours": 0,
+ "minutes": 1
+ },
+ {
+ "name": "Makefile",
+ "total_seconds": 77.397983,
+ "percent": 0.01,
+ "digital": "0:01",
+ "decimal": "0.02",
+ "text": "1 min",
+ "hours": 0,
+ "minutes": 1
+ },
+ {
+ "name": "Diff",
+ "total_seconds": 36.762629,
+ "percent": 0,
+ "digital": "0:00",
+ "decimal": "0.00",
+ "text": "0 secs",
+ "hours": 0,
+ "minutes": 0
+ },
+ {
+ "name": "GitIgnore file",
+ "total_seconds": 8.992,
+ "percent": 0,
+ "digital": "0:00",
+ "decimal": "0.00",
+ "text": "0 secs",
+ "hours": 0,
+ "minutes": 0
+ },
+ {
+ "name": "YAML",
+ "total_seconds": 8.961989,
+ "percent": 0,
+ "digital": "0:00",
+ "decimal": "0.00",
+ "text": "0 secs",
+ "hours": 0,
+ "minutes": 0
+ },
+ {
+ "name": "Docker",
+ "total_seconds": 5.339437,
+ "percent": 0,
+ "digital": "0:00",
+ "decimal": "0.00",
+ "text": "0 secs",
+ "hours": 0,
+ "minutes": 0
+ }
+ ],
+ "human_readable_daily_average": "32 mins",
+ "is_cached": true,
+ "username": "ffflabs",
+ "is_including_today": false,
+ "human_readable_range": "last year",
+ "is_coding_activity_visible": true,
+ "is_language_usage_visible": true,
+ "is_editor_usage_visible": true,
+ "is_category_usage_visible": true,
+ "is_os_usage_visible": true
+}