[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content:legacy:page:\u002Fposts\u002Fgit\u002Fbrightly-decorate-graph":3,"content:legacy:navigation":932,"content:legacy:surround:\u002Fposts\u002Fgit\u002Fbrightly-decorate-graph":1217,"content:related-articles:Brightly decorate your GitHub Graph":1220},{"id":4,"title":5,"aside":6,"body":7,"categories":6,"category":887,"description":917,"duration":242,"extension":918,"footer":6,"header":6,"icon":6,"image":919,"main":6,"meta":922,"navigation":6,"path":923,"publishedAt":924,"seo":925,"sitemap":926,"stem":927,"tags":928,"toc":6,"top":930,"__hash__":931},"content\u002Fposts\u002Fgit\u002Fbrightly-decorate-graph.md","Brightly decorate your GitHub Graph",null,{"type":8,"value":9,"toc":913},"minimark",[10,15,30,34,909],[11,12,14],"h2",{"id":13},"motivation","🌟 Motivation",[16,17,18,19,29],"p",{},"In the past I was searching for good libraries of npm and I stumbled upon a library called ",[20,21,25],"a",{"href":22,"rel":23},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fsimple-git",[24],"nofollow",[26,27,28],"strong",{},"simple-git",". This is a library that runs git commands on nodejs. And then I immediately thought of the contributions chart on github, is there a way to make this chart green? And so this article was born.",[11,31,33],{"id":32},"️-setup","🏗️ Setup",[35,36,37,42,167,171,178,190,194,201,871,875,878,890,893,906],"steps",{},[38,39,41],"h4",{"id":40},"_1-initial-nodejs-project-and-install-dependencies","1. Initial Nodejs project and install dependencies",[43,44,45,88,115,141],"code-group",{},[46,47,53],"pre",{"className":48,"code":49,"filename":50,"language":51,"meta":52,"style":52},"language-bash shiki shiki-themes github-light github-dark","npm init\nnpm install jsonfile moment random simple-git\n","npm","bash","",[54,55,56,68],"code",{"__ignoreMap":52},[57,58,61,64],"span",{"class":59,"line":60},"line",1,[57,62,50],{"class":63},"sScJk",[57,65,67],{"class":66},"sZZnC"," init\n",[57,69,71,73,76,79,82,85],{"class":59,"line":70},2,[57,72,50],{"class":63},[57,74,75],{"class":66}," install",[57,77,78],{"class":66}," jsonfile",[57,80,81],{"class":66}," moment",[57,83,84],{"class":66}," random",[57,86,87],{"class":66}," simple-git\n",[46,89,92],{"className":48,"code":90,"filename":91,"language":51,"meta":52,"style":52},"yarn init\nyarn add jsonfile moment random simple-git\n","yarn",[54,93,94,100],{"__ignoreMap":52},[57,95,96,98],{"class":59,"line":60},[57,97,91],{"class":63},[57,99,67],{"class":66},[57,101,102,104,107,109,111,113],{"class":59,"line":70},[57,103,91],{"class":63},[57,105,106],{"class":66}," add",[57,108,78],{"class":66},[57,110,81],{"class":66},[57,112,84],{"class":66},[57,114,87],{"class":66},[46,116,119],{"className":48,"code":117,"filename":118,"language":51,"meta":52,"style":52},"pnpm init\npnpm add jsonfile moment random simple-git\n","pnpm",[54,120,121,127],{"__ignoreMap":52},[57,122,123,125],{"class":59,"line":60},[57,124,118],{"class":63},[57,126,67],{"class":66},[57,128,129,131,133,135,137,139],{"class":59,"line":70},[57,130,118],{"class":63},[57,132,106],{"class":66},[57,134,78],{"class":66},[57,136,81],{"class":66},[57,138,84],{"class":66},[57,140,87],{"class":66},[46,142,145],{"className":48,"code":143,"filename":144,"language":51,"meta":52,"style":52},"bun init\nbun add jsonfile moment random simple-git\n","bun",[54,146,147,153],{"__ignoreMap":52},[57,148,149,151],{"class":59,"line":60},[57,150,144],{"class":63},[57,152,67],{"class":66},[57,154,155,157,159,161,163,165],{"class":59,"line":70},[57,156,144],{"class":63},[57,158,106],{"class":66},[57,160,78],{"class":66},[57,162,81],{"class":66},[57,164,84],{"class":66},[57,166,87],{"class":66},[38,168,170],{"id":169},"_2-fake-data","2. Fake data",[16,172,173,174,177],{},"Create a file named ",[54,175,176],{},"data.json"," at the root of the project to store changes when committing new code.",[46,179,183],{"className":180,"code":181,"filename":176,"language":182,"meta":52,"style":52},"language-json shiki shiki-themes github-light github-dark","add something here\n","json",[54,184,185],{"__ignoreMap":52},[57,186,187],{"class":59,"line":60},[57,188,181],{"class":189},"sVt8B",[38,191,193],{"id":192},"_3-insert-script","3. Insert script",[16,195,196,197,200],{},"Create a javascript file name ",[54,198,199],{},"index.js"," with the following content at the root of the project.",[46,202,206],{"className":203,"code":204,"filename":199,"language":205,"meta":52,"style":52},"language-js shiki shiki-themes github-light github-dark","import jsonfile from 'jsonfile';\nimport moment from 'moment';\nimport simpleGit from 'simple-git';\nimport random from 'random';\n\nconst path = '.\u002Fdata.json';\n\nfunction isValidDate(date) {\n  const startDate = moment('2019-01-01');\n  const endDate = moment('2024-12-13');\n  return date.isBetween(startDate, endDate, null, '[]');\n}\n\nasync function markCommit(date) {\n  const data = { date: date.toISOString() };\n  await jsonfile.writeFile(path, data);\n\n  const git = simpleGit();\n  await git.add([path]);\n  await git.commit(date.toISOString(), { '-d': date.toISOString() });\n}\n\nasync function makeCommits(n) {\n  const git = simpleGit();\n\n  for (let i = 0; i \u003C n; i++) {\n    const randomDays = random.int(0, 6);\n    const randomWeeks = random.int(0, 54 * 4);\n\n    const randomDate = moment('2019-01-01')\n      .add(randomDays, 'days')\n      .add(randomWeeks, 'weeks');\n\n    if (isValidDate(randomDate)) {\n      console.log(`Creating commit: ${randomDate.toISOString()}`);\n      await markCommit(randomDate);\n    } else {\n      console.log(`Invalid date: ${randomDate.toISOString()}, skipping...`);\n    }\n  }\n\n  console.log('Pushing all commits...');\n  await git.push();\n}\n\nmakeCommits(50000);\n","js",[54,207,208,226,240,255,270,277,295,300,319,340,359,385,391,396,414,433,448,453,469,483,512,517,522,539,552,557,592,621,652,657,676,692,707,712,726,756,767,779,804,810,816,821,836,848,853,858],{"__ignoreMap":52},[57,209,210,214,217,220,223],{"class":59,"line":60},[57,211,213],{"class":212},"szBVR","import",[57,215,216],{"class":189}," jsonfile ",[57,218,219],{"class":212},"from",[57,221,222],{"class":66}," 'jsonfile'",[57,224,225],{"class":189},";\n",[57,227,228,230,233,235,238],{"class":59,"line":70},[57,229,213],{"class":212},[57,231,232],{"class":189}," moment ",[57,234,219],{"class":212},[57,236,237],{"class":66}," 'moment'",[57,239,225],{"class":189},[57,241,243,245,248,250,253],{"class":59,"line":242},3,[57,244,213],{"class":212},[57,246,247],{"class":189}," simpleGit ",[57,249,219],{"class":212},[57,251,252],{"class":66}," 'simple-git'",[57,254,225],{"class":189},[57,256,258,260,263,265,268],{"class":59,"line":257},4,[57,259,213],{"class":212},[57,261,262],{"class":189}," random ",[57,264,219],{"class":212},[57,266,267],{"class":66}," 'random'",[57,269,225],{"class":189},[57,271,273],{"class":59,"line":272},5,[57,274,276],{"emptyLinePlaceholder":275},true,"\n",[57,278,280,283,287,290,293],{"class":59,"line":279},6,[57,281,282],{"class":212},"const",[57,284,286],{"class":285},"sj4cs"," path",[57,288,289],{"class":212}," =",[57,291,292],{"class":66}," '.\u002Fdata.json'",[57,294,225],{"class":189},[57,296,298],{"class":59,"line":297},7,[57,299,276],{"emptyLinePlaceholder":275},[57,301,303,306,309,312,316],{"class":59,"line":302},8,[57,304,305],{"class":212},"function",[57,307,308],{"class":63}," isValidDate",[57,310,311],{"class":189},"(",[57,313,315],{"class":314},"s4XuR","date",[57,317,318],{"class":189},") {\n",[57,320,322,325,328,330,332,334,337],{"class":59,"line":321},9,[57,323,324],{"class":212},"  const",[57,326,327],{"class":285}," startDate",[57,329,289],{"class":212},[57,331,81],{"class":63},[57,333,311],{"class":189},[57,335,336],{"class":66},"'2019-01-01'",[57,338,339],{"class":189},");\n",[57,341,343,345,348,350,352,354,357],{"class":59,"line":342},10,[57,344,324],{"class":212},[57,346,347],{"class":285}," endDate",[57,349,289],{"class":212},[57,351,81],{"class":63},[57,353,311],{"class":189},[57,355,356],{"class":66},"'2024-12-13'",[57,358,339],{"class":189},[57,360,362,365,368,371,374,377,380,383],{"class":59,"line":361},11,[57,363,364],{"class":212},"  return",[57,366,367],{"class":189}," date.",[57,369,370],{"class":63},"isBetween",[57,372,373],{"class":189},"(startDate, endDate, ",[57,375,376],{"class":285},"null",[57,378,379],{"class":189},", ",[57,381,382],{"class":66},"'[]'",[57,384,339],{"class":189},[57,386,388],{"class":59,"line":387},12,[57,389,390],{"class":189},"}\n",[57,392,394],{"class":59,"line":393},13,[57,395,276],{"emptyLinePlaceholder":275},[57,397,399,402,405,408,410,412],{"class":59,"line":398},14,[57,400,401],{"class":212},"async",[57,403,404],{"class":212}," function",[57,406,407],{"class":63}," markCommit",[57,409,311],{"class":189},[57,411,315],{"class":314},[57,413,318],{"class":189},[57,415,417,419,422,424,427,430],{"class":59,"line":416},15,[57,418,324],{"class":212},[57,420,421],{"class":285}," data",[57,423,289],{"class":212},[57,425,426],{"class":189}," { date: date.",[57,428,429],{"class":63},"toISOString",[57,431,432],{"class":189},"() };\n",[57,434,436,439,442,445],{"class":59,"line":435},16,[57,437,438],{"class":212},"  await",[57,440,441],{"class":189}," jsonfile.",[57,443,444],{"class":63},"writeFile",[57,446,447],{"class":189},"(path, data);\n",[57,449,451],{"class":59,"line":450},17,[57,452,276],{"emptyLinePlaceholder":275},[57,454,456,458,461,463,466],{"class":59,"line":455},18,[57,457,324],{"class":212},[57,459,460],{"class":285}," git",[57,462,289],{"class":212},[57,464,465],{"class":63}," simpleGit",[57,467,468],{"class":189},"();\n",[57,470,472,474,477,480],{"class":59,"line":471},19,[57,473,438],{"class":212},[57,475,476],{"class":189}," git.",[57,478,479],{"class":63},"add",[57,481,482],{"class":189},"([path]);\n",[57,484,486,488,490,493,496,498,501,504,507,509],{"class":59,"line":485},20,[57,487,438],{"class":212},[57,489,476],{"class":189},[57,491,492],{"class":63},"commit",[57,494,495],{"class":189},"(date.",[57,497,429],{"class":63},[57,499,500],{"class":189},"(), { ",[57,502,503],{"class":66},"'-d'",[57,505,506],{"class":189},": date.",[57,508,429],{"class":63},[57,510,511],{"class":189},"() });\n",[57,513,515],{"class":59,"line":514},21,[57,516,390],{"class":189},[57,518,520],{"class":59,"line":519},22,[57,521,276],{"emptyLinePlaceholder":275},[57,523,525,527,529,532,534,537],{"class":59,"line":524},23,[57,526,401],{"class":212},[57,528,404],{"class":212},[57,530,531],{"class":63}," makeCommits",[57,533,311],{"class":189},[57,535,536],{"class":314},"n",[57,538,318],{"class":189},[57,540,542,544,546,548,550],{"class":59,"line":541},24,[57,543,324],{"class":212},[57,545,460],{"class":285},[57,547,289],{"class":212},[57,549,465],{"class":63},[57,551,468],{"class":189},[57,553,555],{"class":59,"line":554},25,[57,556,276],{"emptyLinePlaceholder":275},[57,558,560,563,566,569,572,575,578,581,584,587,590],{"class":59,"line":559},26,[57,561,562],{"class":212},"  for",[57,564,565],{"class":189}," (",[57,567,568],{"class":212},"let",[57,570,571],{"class":189}," i ",[57,573,574],{"class":212},"=",[57,576,577],{"class":285}," 0",[57,579,580],{"class":189},"; i ",[57,582,583],{"class":212},"\u003C",[57,585,586],{"class":189}," n; i",[57,588,589],{"class":212},"++",[57,591,318],{"class":189},[57,593,595,598,601,603,606,609,611,614,616,619],{"class":59,"line":594},27,[57,596,597],{"class":212},"    const",[57,599,600],{"class":285}," randomDays",[57,602,289],{"class":212},[57,604,605],{"class":189}," random.",[57,607,608],{"class":63},"int",[57,610,311],{"class":189},[57,612,613],{"class":285},"0",[57,615,379],{"class":189},[57,617,618],{"class":285},"6",[57,620,339],{"class":189},[57,622,624,626,629,631,633,635,637,639,641,644,647,650],{"class":59,"line":623},28,[57,625,597],{"class":212},[57,627,628],{"class":285}," randomWeeks",[57,630,289],{"class":212},[57,632,605],{"class":189},[57,634,608],{"class":63},[57,636,311],{"class":189},[57,638,613],{"class":285},[57,640,379],{"class":189},[57,642,643],{"class":285},"54",[57,645,646],{"class":212}," *",[57,648,649],{"class":285}," 4",[57,651,339],{"class":189},[57,653,655],{"class":59,"line":654},29,[57,656,276],{"emptyLinePlaceholder":275},[57,658,660,662,665,667,669,671,673],{"class":59,"line":659},30,[57,661,597],{"class":212},[57,663,664],{"class":285}," randomDate",[57,666,289],{"class":212},[57,668,81],{"class":63},[57,670,311],{"class":189},[57,672,336],{"class":66},[57,674,675],{"class":189},")\n",[57,677,679,682,684,687,690],{"class":59,"line":678},31,[57,680,681],{"class":189},"      .",[57,683,479],{"class":63},[57,685,686],{"class":189},"(randomDays, ",[57,688,689],{"class":66},"'days'",[57,691,675],{"class":189},[57,693,695,697,699,702,705],{"class":59,"line":694},32,[57,696,681],{"class":189},[57,698,479],{"class":63},[57,700,701],{"class":189},"(randomWeeks, ",[57,703,704],{"class":66},"'weeks'",[57,706,339],{"class":189},[57,708,710],{"class":59,"line":709},33,[57,711,276],{"emptyLinePlaceholder":275},[57,713,715,718,720,723],{"class":59,"line":714},34,[57,716,717],{"class":212},"    if",[57,719,565],{"class":189},[57,721,722],{"class":63},"isValidDate",[57,724,725],{"class":189},"(randomDate)) {\n",[57,727,729,732,735,737,740,743,746,748,751,754],{"class":59,"line":728},35,[57,730,731],{"class":189},"      console.",[57,733,734],{"class":63},"log",[57,736,311],{"class":189},[57,738,739],{"class":66},"`Creating commit: ${",[57,741,742],{"class":189},"randomDate",[57,744,745],{"class":66},".",[57,747,429],{"class":63},[57,749,750],{"class":66},"()",[57,752,753],{"class":66},"}`",[57,755,339],{"class":189},[57,757,759,762,764],{"class":59,"line":758},36,[57,760,761],{"class":212},"      await",[57,763,407],{"class":63},[57,765,766],{"class":189},"(randomDate);\n",[57,768,770,773,776],{"class":59,"line":769},37,[57,771,772],{"class":189},"    } ",[57,774,775],{"class":212},"else",[57,777,778],{"class":189}," {\n",[57,780,782,784,786,788,791,793,795,797,799,802],{"class":59,"line":781},38,[57,783,731],{"class":189},[57,785,734],{"class":63},[57,787,311],{"class":189},[57,789,790],{"class":66},"`Invalid date: ${",[57,792,742],{"class":189},[57,794,745],{"class":66},[57,796,429],{"class":63},[57,798,750],{"class":66},[57,800,801],{"class":66},"}, skipping...`",[57,803,339],{"class":189},[57,805,807],{"class":59,"line":806},39,[57,808,809],{"class":189},"    }\n",[57,811,813],{"class":59,"line":812},40,[57,814,815],{"class":189},"  }\n",[57,817,819],{"class":59,"line":818},41,[57,820,276],{"emptyLinePlaceholder":275},[57,822,824,827,829,831,834],{"class":59,"line":823},42,[57,825,826],{"class":189},"  console.",[57,828,734],{"class":63},[57,830,311],{"class":189},[57,832,833],{"class":66},"'Pushing all commits...'",[57,835,339],{"class":189},[57,837,839,841,843,846],{"class":59,"line":838},43,[57,840,438],{"class":212},[57,842,476],{"class":189},[57,844,845],{"class":63},"push",[57,847,468],{"class":189},[57,849,851],{"class":59,"line":850},44,[57,852,390],{"class":189},[57,854,856],{"class":59,"line":855},45,[57,857,276],{"emptyLinePlaceholder":275},[57,859,861,864,866,869],{"class":59,"line":860},46,[57,862,863],{"class":63},"makeCommits",[57,865,311],{"class":189},[57,867,868],{"class":285},"50000",[57,870,339],{"class":189},[38,872,874],{"id":873},"_4-action","4. Action",[16,876,877],{},"Initialize the git repo (if empty), skip this step if you already have a git repo.",[46,879,881],{"className":48,"code":880,"language":51,"meta":52,"style":52},"git init\n",[54,882,883],{"__ignoreMap":52},[57,884,885,888],{"class":59,"line":60},[57,886,887],{"class":63},"git",[57,889,67],{"class":66},[16,891,892],{},"Run the script to create commit.",[46,894,896],{"className":48,"code":895,"language":51,"meta":52,"style":52},"node index.js\n",[54,897,898],{"__ignoreMap":52},[57,899,900,903],{"class":59,"line":60},[57,901,902],{"class":63},"node",[57,904,905],{"class":66}," index.js\n",[16,907,908],{},"Finally, push code to remote then enjoy the result.",[910,911,912],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":52,"searchDepth":70,"depth":70,"links":914},[915,916],{"id":13,"depth":70,"text":14},{"id":32,"depth":70,"text":33},"Impress viewers by sleek profile with just 40 lines of code","md",{"src":920,"alt":921},"https:\u002F\u002Fraw.githubusercontent.com\u002Ffullstack-core\u002Fblog\u002Frefs\u002Fheads\u002Fmain\u002Fblog\u002Fcover\u002Fbrightly-decorate-your-github-graph.webp","GitHub Graph",{},"\u002Fposts\u002Fgit\u002Fbrightly-decorate-graph","2024-12-24",{"title":5,"description":917},{"loc":923,"lastmod":924},"posts\u002Fgit\u002Fbrightly-decorate-graph",[887,929],"github",false,"iUBZPoy2ZmDtECXdjFrr7d-Nzp7kDmHPCKHCeI0Fh6s",[933,1049,1057,1196],{"title":934,"icon":935,"path":936,"stem":937,"children":938,"page":930},"Cheatsheets","fluent-color:paw-16","\u002Fcheatsheets","cheatsheets",[939,944,949,954,959,964,969,974,979,984,989,994,999,1004,1009,1014,1019,1024,1029,1034,1039,1044],{"title":940,"path":941,"stem":942,"icon":943},"Bash","\u002Fcheatsheets\u002Fbash","cheatsheets\u002Fbash","material-icon-theme:powershell",{"title":945,"path":946,"stem":947,"icon":948},"CSS","\u002Fcheatsheets\u002Fcss","cheatsheets\u002Fcss","vscode-icons:file-type-css2",{"title":950,"path":951,"stem":952,"icon":953},"Docker","\u002Fcheatsheets\u002Fdocker","cheatsheets\u002Fdocker","vscode-icons:file-type-docker2",{"title":955,"path":956,"stem":957,"icon":958},"Git","\u002Fcheatsheets\u002Fgit","cheatsheets\u002Fgit","devicon:git",{"title":960,"path":961,"stem":962,"icon":963},"Golang","\u002Fcheatsheets\u002Fgo","cheatsheets\u002Fgo","material-icon-theme:go",{"title":965,"path":966,"stem":967,"icon":968},"HTML","\u002Fcheatsheets\u002Fhtml","cheatsheets\u002Fhtml","material-icon-theme:html",{"title":970,"path":971,"stem":972,"icon":973},"JavaScript","\u002Fcheatsheets\u002Fjavascript","cheatsheets\u002Fjavascript","material-icon-theme:javascript",{"title":975,"path":976,"stem":977,"icon":978},"Latex","\u002Fcheatsheets\u002Flatex","cheatsheets\u002Flatex","material-icon-theme:latexmk",{"title":980,"path":981,"stem":982,"icon":983},"Linux","\u002Fcheatsheets\u002Flinux","cheatsheets\u002Flinux","devicon:linux",{"title":985,"path":986,"stem":987,"icon":988},"Markdown","\u002Fcheatsheets\u002Fmarkdown","cheatsheets\u002Fmarkdown","material-icon-theme:markdown",{"title":990,"path":991,"stem":992,"icon":993},"Mongo","\u002Fcheatsheets\u002Fmongo","cheatsheets\u002Fmongo","devicon:mongodb",{"title":995,"path":996,"stem":997,"icon":998},"Nest","\u002Fcheatsheets\u002Fnest","cheatsheets\u002Fnest","material-icon-theme:nest",{"title":1000,"path":1001,"stem":1002,"icon":1003},"Next","\u002Fcheatsheets\u002Fnext","cheatsheets\u002Fnext","logos:nextjs-icon",{"title":1005,"path":1006,"stem":1007,"icon":1008},"Node","\u002Fcheatsheets\u002Fnode","cheatsheets\u002Fnode","material-icon-theme:nodejs",{"title":1010,"path":1011,"stem":1012,"icon":1013},"Nuxt","\u002Fcheatsheets\u002Fnuxt","cheatsheets\u002Fnuxt","material-icon-theme:nuxt",{"title":1015,"path":1016,"stem":1017,"icon":1018},"React","\u002Fcheatsheets\u002Freact","cheatsheets\u002Freact","material-icon-theme:react",{"title":1020,"path":1021,"stem":1022,"icon":1023},"Redis","\u002Fcheatsheets\u002Fredis","cheatsheets\u002Fredis","vscode-icons:folder-type-redis-opened",{"title":1025,"path":1026,"stem":1027,"icon":1028},"SQL","\u002Fcheatsheets\u002Fsql","cheatsheets\u002Fsql","material-icon-theme:database",{"title":1030,"path":1031,"stem":1032,"icon":1033},"Typescript","\u002Fcheatsheets\u002Ftypescript","cheatsheets\u002Ftypescript","material-icon-theme:typescript",{"title":1035,"path":1036,"stem":1037,"icon":1038},"Vercel","\u002Fcheatsheets\u002Fvercel","cheatsheets\u002Fvercel","vscode-icons:file-type-light-vercel",{"title":1040,"path":1041,"stem":1042,"icon":1043},"Vue","\u002Fcheatsheets\u002Fvue","cheatsheets\u002Fvue","material-icon-theme:vue",{"title":1045,"path":1046,"stem":1047,"icon":1048},"Windows","\u002Fcheatsheets\u002Fwindow","cheatsheets\u002Fwindow","material-icon-theme:folder-windows",{"title":1050,"icon":935,"path":1051,"stem":1052,"children":1053,"page":930},"Interviews","\u002Finterviews","interviews",[1054],{"title":965,"path":1055,"stem":1056,"icon":968},"\u002Finterviews\u002Fhtml","interviews\u002Fhtml",{"title":1058,"icon":1059,"path":1060,"stem":1061,"children":1062,"page":930},"Posts","fluent-color:data-bar-vertical-ascending-24","\u002Fposts","posts",[1063,1072,1088,1111,1119,1132,1141,1150,1160,1186],{"title":1064,"icon":1028,"redirect":1065,"path":1066,"stem":1067,"children":1068,"page":930},"Database","\u002Fposts\u002Fdatabase\u002Freplication-strategy","\u002Fposts\u002Fdatabase","posts\u002Fdatabase",[1069],{"title":1070,"path":1065,"stem":1071,"icon":6},"Database Replication strategy in large systems","posts\u002Fdatabase\u002Freplication-strategy",{"title":950,"icon":953,"redirect":1073,"path":1074,"stem":1075,"children":1076,"page":930},"\u002Fposts\u002Fdocker\u002Fdocker-commands","\u002Fposts\u002Fdocker","posts\u002Fdocker",[1077,1080,1084],{"title":1078,"path":1073,"stem":1079,"icon":6},"Docker commands essentials","posts\u002Fdocker\u002Fdocker-commands",{"title":1081,"path":1082,"stem":1083,"icon":6},"Some useful Dockerfile templates","\u002Fposts\u002Fdocker\u002Fdockerfile-templates","posts\u002Fdocker\u002Fdockerfile-templates",{"title":1085,"path":1086,"stem":1087,"icon":6},"Setup Docker environment on Windows","\u002Fposts\u002Fdocker\u002Fsetup-docker-on-window","posts\u002Fdocker\u002Fsetup-docker-on-window",{"title":1089,"icon":1090,"redirect":923,"path":1091,"stem":1092,"children":1093,"page":930},"Git & GitHub","material-icon-theme:git","\u002Fposts\u002Fgit","posts\u002Fgit",[1094,1095,1099,1103,1107],{"title":5,"path":923,"stem":927,"icon":6},{"title":1096,"path":1097,"stem":1098,"icon":6},"Download a specific folder on GitHub repository","\u002Fposts\u002Fgit\u002Fdownload-specific-folder","posts\u002Fgit\u002Fdownload-specific-folder",{"title":1100,"path":1101,"stem":1102,"icon":6},"Syncing Git Tags across to other repositories","\u002Fposts\u002Fgit\u002Fsyncing-tags-across-repositories","posts\u002Fgit\u002Fsyncing-tags-across-repositories",{"title":1104,"path":1105,"stem":1106,"icon":6},"Unlocking GitHub Achievement badges","\u002Fposts\u002Fgit\u002Funlocking-achievement-badges","posts\u002Fgit\u002Funlocking-achievement-badges",{"title":1108,"path":1109,"stem":1110,"icon":6},"Essential Git commands every developer should master","\u002Fposts\u002Fgit\u002Fuseful-commands-like-pro","posts\u002Fgit\u002Fuseful-commands-like-pro",{"title":960,"icon":963,"redirect":1112,"path":1113,"stem":1114,"children":1115,"page":930},"\u002Fposts\u002Fgolang\u002Foptimizing-performance-with-pgo","\u002Fposts\u002Fgolang","posts\u002Fgolang",[1116],{"title":1117,"path":1112,"stem":1118,"icon":6},"Optimizing Performance in Go Applications with PGO","posts\u002Fgolang\u002Foptimizing-performance-with-pgo",{"title":970,"icon":1120,"redirect":1121,"path":1122,"stem":1123,"children":1124,"page":930},"vscode-icons:file-type-js","\u002Fposts\u002Fjavascript\u002F9-lines-of-tips","\u002Fposts\u002Fjavascript","posts\u002Fjavascript",[1125,1128],{"title":1126,"path":1121,"stem":1127,"icon":6},"9 lines of JavaScript replace 50 lines of code","posts\u002Fjavascript\u002F9-lines-of-tips",{"title":1129,"path":1130,"stem":1131,"icon":6},"Javascript Promises - Specific functions and use cases","\u002Fposts\u002Fjavascript\u002Fpromises-cheatsheet","posts\u002Fjavascript\u002Fpromises-cheatsheet",{"title":1005,"icon":1133,"redirect":1134,"path":1135,"stem":1136,"children":1137,"page":930},"material-icon-theme:nodejs-alt","\u002Fposts\u002Fnodejs\u002Fevent-loop","\u002Fposts\u002Fnodejs","posts\u002Fnodejs",[1138],{"title":1139,"path":1134,"stem":1140,"icon":6},"Secret about Event Loop flow in Nodejs","posts\u002Fnodejs\u002Fevent-loop",{"title":1010,"icon":1142,"redirect":1143,"path":1144,"stem":1145,"children":1146,"page":930},"vscode-icons:file-type-nuxt","\u002Fposts\u002Fnuxt\u002Fenable-pwa-in-nuxt","\u002Fposts\u002Fnuxt","posts\u002Fnuxt",[1147],{"title":1148,"path":1143,"stem":1149,"icon":6},"Enable PWA and Service Worker in Nuxt","posts\u002Fnuxt\u002Fenable-pwa-in-nuxt",{"title":1151,"icon":1152,"redirect":1153,"path":1154,"stem":1155,"children":1156,"page":930},"Performance","emojione:rocket","\u002Fposts\u002Fperformance\u002Fbackground-image-injection-problem","\u002Fposts\u002Fperformance","posts\u002Fperformance",[1157],{"title":1158,"path":1153,"stem":1159,"icon":6},"Background-Image injection problem in UX","posts\u002Fperformance\u002Fbackground-image-injection-problem",{"title":1161,"icon":1162,"redirect":1163,"path":1164,"stem":1165,"children":1166,"page":930},"Tutorial","fluent-color:book-open-lightbulb-24","\u002Fposts\u002Ftutorial\u002Fclassification-and-functionality-of-the-servers","\u002Fposts\u002Ftutorial","posts\u002Ftutorial",[1167,1170,1174,1178,1182],{"title":1168,"path":1163,"stem":1169,"icon":6},"Classification and functionality of the servers","posts\u002Ftutorial\u002Fclassification-and-functionality-of-the-servers",{"title":1171,"path":1172,"stem":1173,"icon":6},"What is the difference between localhost and 127.0.0.1?","\u002Fposts\u002Ftutorial\u002Fdifferent-between-localhost-and-127-0-0-1","posts\u002Ftutorial\u002Fdifferent-between-localhost-and-127-0-0-1",{"title":1175,"path":1176,"stem":1177,"icon":6},"8 essential network protocols every programmer should know","\u002Fposts\u002Ftutorial\u002Fessential-network-protocols","posts\u002Ftutorial\u002Fessential-network-protocols",{"title":1179,"path":1180,"stem":1181,"icon":6},"Pre rels in header link tag - SEO technique enhancement","\u002Fposts\u002Ftutorial\u002Fpre-rels-in-header-link-tag","posts\u002Ftutorial\u002Fpre-rels-in-header-link-tag",{"title":1183,"path":1184,"stem":1185,"icon":6},"Better code with SOLID principles","\u002Fposts\u002Ftutorial\u002Fwhat-is-solid","posts\u002Ftutorial\u002Fwhat-is-solid",{"title":1187,"icon":1188,"redirect":1189,"path":1190,"stem":1191,"children":1192,"page":930},"UI\u002FUX","devicon:figma","\u002Fposts\u002Fuiux\u002Fcommon-button-mistake","\u002Fposts\u002Fuiux","posts\u002Fuiux",[1193],{"title":1194,"path":1189,"stem":1195,"icon":6},"Common Button Mistake in UI\u002FUX","posts\u002Fuiux\u002Fcommon-button-mistake",{"title":1197,"icon":1198,"path":1199,"stem":1200,"children":1201,"page":930},"Templates","fluent-color:data-pie-24","\u002Ftemplates","templates",[1202,1205,1208,1211,1214],{"title":960,"path":1203,"stem":1204,"icon":963},"\u002Ftemplates\u002Fgo","templates\u002Fgo",{"title":1000,"path":1206,"stem":1207,"icon":1003},"\u002Ftemplates\u002Fnext","templates\u002Fnext",{"title":1010,"path":1209,"stem":1210,"icon":1013},"\u002Ftemplates\u002Fnuxt","templates\u002Fnuxt",{"title":1015,"path":1212,"stem":1213,"icon":1018},"\u002Ftemplates\u002Freact","templates\u002Freact",{"title":1040,"path":1215,"stem":1216,"icon":1043},"\u002Ftemplates\u002Fvue","templates\u002Fvue",[1218,1219],{"title":1085,"path":1086,"stem":1087,"children":-1},{"title":1096,"path":1097,"stem":1098,"children":-1},[1221,1228,1235],{"_path":1109,"title":1108,"description":1222,"image":1223,"category":887,"tags":1226,"duration":272,"publishedAt":1227},"Master Git like a pro with these powerful commands for commit management, branch operations, and workflow optimization",{"src":1224,"alt":1225},"https:\u002F\u002Fwww.matillion.com\u002Fuploads\u002Fcards\u002F_1200x630_crop_center-center_82_none\u002FBlog-GIT-Part3.png","Essential_Git_commands_image",[887,929],"2025-08-05",{"_path":1101,"title":1100,"description":1229,"image":1230,"category":887,"tags":1233,"duration":60,"publishedAt":1234},"Learn how to synchronize Git tags between multiple repositories effortlessly.",{"src":1231,"alt":1232},"https:\u002F\u002Fmedia.licdn.com\u002Fdms\u002Fimage\u002Fv2\u002FD4E12AQGPhWyP7Rc1sw\u002Farticle-cover_image-shrink_720_1280\u002Farticle-cover_image-shrink_720_1280\u002F0\u002F1729234511193?e=2147483647&v=beta&t=nRMwzDEvPjm0UJ_TW9cP9gQF4_kfB0HbJh3a5lrVA3M","Syncing_Git_Tags_image",[887,929],"2025-07-11",{"_path":1105,"title":1104,"description":1236,"image":1237,"category":887,"tags":1240,"duration":279,"publishedAt":1241},"A comprehensive guide to get achievement badges on your GitHub profile!",{"src":1238,"alt":1239},"https:\u002F\u002Frepository-images.githubusercontent.com\u002F634841108\u002F401fc2d0-ee6e-4a75-aabf-e63330221642","GitHub_Achievements_image",[887,929],"2025-07-07"]