From b15742ae98e3e63ee6dd8a54d75c587e661fd40c Mon Sep 17 00:00:00 2001
From: Natalia Luzuriaga
Date: Tue, 17 Feb 2026 12:03:17 -0800
Subject: [PATCH 1/4] Update urls in index.html
Signed-off-by: Natalia Luzuriaga
---
index.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/index.html b/index.html
index f14cab5d..3c760b45 100644
--- a/index.html
+++ b/index.html
@@ -34,12 +34,12 @@ Developers
href="https://github.com/GSA/code-gov/blob/master/README.md" target="_blank">contribute here. Help
improve America's Code by exploring projects.
- Explore projects
+ Explore projects
Agency Partners
@@ -47,7 +47,7 @@
Agency Partners
Federal agency partners use Code.gov to share usable open source code, promote open source
projects, and track compliance with federal open source policy.
-
Agency Compliance
+
Agency Compliance
From a0145a5a62d5a917a7ebf97b787d0d03348ab39e Mon Sep 17 00:00:00 2001
From: Natalia Luzuriaga
Date: Tue, 17 Feb 2026 12:08:33 -0800
Subject: [PATCH 2/4] Fix issues link in index.html
Signed-off-by: Natalia Luzuriaga
---
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 3c760b45..cf6b1e34 100644
--- a/index.html
+++ b/index.html
@@ -108,7 +108,7 @@ OPT-IN WITH LABELS
From ba9889eec5a0b6d84a0cffbd2bc8243eb1d2b194 Mon Sep 17 00:00:00 2001
From: Natalia Luzuriaga
Date: Tue, 17 Feb 2026 12:13:24 -0800
Subject: [PATCH 3/4] Add privacy policy page
Signed-off-by: Natalia Luzuriaga
---
content/privacy-policy/index.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 content/privacy-policy/index.md
diff --git a/content/privacy-policy/index.md b/content/privacy-policy/index.md
new file mode 100644
index 00000000..0d19cf9a
--- /dev/null
+++ b/content/privacy-policy/index.md
@@ -0,0 +1,16 @@
+---
+title: Privacy Policy
+description: 'Privacy Policy'
+permalink: /privacy-policy/
+layout: layouts/page
+tags: codegov
+eleventyNavigation:
+ parent: codegov-privacypolicy
+ key: codegov-privacypolicy-main
+ order: 1
+ title: Privacy Policy
+sidenav: false
+sticky_sidenav: false
+---
+
+This website follows the [HHS Privacy Policy](https://www.hhs.gov/web/policies-and-standards/hhs-web-policies/privacy/index.html).
\ No newline at end of file
From be841c44cf36e3f862e679fbd6b137403277738d Mon Sep 17 00:00:00 2001
From: Natalia Luzuriaga
Date: Tue, 17 Feb 2026 12:22:06 -0800
Subject: [PATCH 4/4] Fix linting errors
Signed-off-by: Natalia Luzuriaga
---
_data/codegovData.js | 6 +++---
assets/_common/js/filters.js | 6 ++----
assets/_common/js/issue-filters.js | 10 +++-------
config/updateCodeGov.js | 10 +++++-----
config/updateIssuePool.js | 28 ++++++++++++++--------------
5 files changed, 27 insertions(+), 33 deletions(-)
diff --git a/_data/codegovData.js b/_data/codegovData.js
index 9c4f5511..38e261eb 100644
--- a/_data/codegovData.js
+++ b/_data/codegovData.js
@@ -87,8 +87,8 @@ module.exports = function() {
agencies.push({
code: agencyName,
name: agencyName,
- version: "1.0.0",
- measurementType: "Projects",
+ version: '1.0.0',
+ measurementType: 'Projects',
organizations: agencyOrgs,
projectCount: releases.length,
totalLaborHours: releases.reduce((acc, curr) => acc + (curr.laborHours || 0), 0)
@@ -112,7 +112,7 @@ module.exports = function() {
projects.push({
agencyCode: agencyName,
- agencyName: agencyName,
+ agencyName,
organization: release.organization,
name: release.name,
description: release.description,
diff --git a/assets/_common/js/filters.js b/assets/_common/js/filters.js
index 36b6b2a7..2974e14e 100644
--- a/assets/_common/js/filters.js
+++ b/assets/_common/js/filters.js
@@ -30,8 +30,7 @@ const applySearchFilter = (data, searchTerm, targetType) => {
});
};
-const applySelectFilters = (data, filters, targetType) => {
- return Object.entries(filters).reduce((filtered, [key, value]) => {
+const applySelectFilters = (data, filters, targetType) => Object.entries(filters).reduce((filtered, [key, value]) => {
if (!value || key === 'search') return filtered;
return filtered.filter(item => {
@@ -80,13 +79,12 @@ const applySelectFilters = (data, filters, targetType) => {
}
});
}, data);
-};
const sortData = (data, sortBy) => {
const [field, direction] = sortBy.split('-');
return [...data].sort((a, b) => {
- let aVal, bVal;
+ let aVal; let bVal;
switch (field) {
case 'name':
diff --git a/assets/_common/js/issue-filters.js b/assets/_common/js/issue-filters.js
index b834e010..808fd6bd 100644
--- a/assets/_common/js/issue-filters.js
+++ b/assets/_common/js/issue-filters.js
@@ -34,8 +34,7 @@ const applySearchFilter = (data, searchTerm) => {
});
};
-const applySelectFilters = (data, filters) => {
- return Object.entries(filters).reduce((filtered, [key, value]) => {
+const applySelectFilters = (data, filters) => Object.entries(filters).reduce((filtered, [key, value]) => {
if (!value || key === 'search') return filtered;
return filtered.filter(issue => {
@@ -58,13 +57,12 @@ const applySelectFilters = (data, filters) => {
}
});
}, data);
-};
const sortData = (data, sortBy) => {
const [field, direction] = sortBy.split('-');
return [...data].sort((a, b) => {
- let aVal, bVal;
+ let aVal; let bVal;
switch (field) {
case 'created':
@@ -294,8 +292,7 @@ const bindEvents = (state, setState) => {
}
};
-const preprocessIssuesData = (issues) => {
- return issues.map(issue => {
+const preprocessIssuesData = (issues) => issues.map(issue => {
// Extract repo name from URL
if (issue.url) {
const urlParts = issue.url.split('/');
@@ -310,7 +307,6 @@ const preprocessIssuesData = (issues) => {
return issue;
});
-};
const initializeIssueFilters = (data) => {
const processedData = preprocessIssuesData(data);
diff --git a/config/updateCodeGov.js b/config/updateCodeGov.js
index 492a88fc..03608c9d 100644
--- a/config/updateCodeGov.js
+++ b/config/updateCodeGov.js
@@ -1,10 +1,10 @@
-const fs = require("fs").promises
+const fs = require('fs').promises
const path = require('path')
// these will always stay constant
const CONFIG = {
- agencyDirectory: path.resolve(__dirname, "../agency-indexes"),
- outputFile: path.resolve(__dirname, "../codegov.json"),
+ agencyDirectory: path.resolve(__dirname, '../agency-indexes'),
+ outputFile: path.resolve(__dirname, '../codegov.json'),
regex: /^(.*?)-.*\.json$/
}
@@ -25,7 +25,7 @@ async function updateCodeGov() {
const filePath = path.join(CONFIG.agencyDirectory, file)
try {
- const content = await fs.readFile(filePath, "utf-8")
+ const content = await fs.readFile(filePath, 'utf-8')
const jsonData = JSON.parse(content)
// store the agency name only for readability in codegov.json
@@ -45,7 +45,7 @@ async function updateCodeGov() {
return updatedJSON
} catch (error) {
- console.error("❌ Failed to update codegov.json:", error)
+ console.error('❌ Failed to update codegov.json:', error)
}
}
diff --git a/config/updateIssuePool.js b/config/updateIssuePool.js
index c157a63e..2c347e2b 100644
--- a/config/updateIssuePool.js
+++ b/config/updateIssuePool.js
@@ -1,9 +1,9 @@
-const fs = require("fs").promises
+const fs = require('fs').promises
const path = require('path')
const CONFIG = {
- repoFilePath: path.resolve(__dirname, "../codegov.json"),
- issueFilePath: path.resolve(__dirname, "../issue-pool.json"),
+ repoFilePath: path.resolve(__dirname, '../codegov.json'),
+ issueFilePath: path.resolve(__dirname, '../issue-pool.json'),
regex: /https?:\/\/github\.com\/([^\/]+)\/([^\/]+)/,
githubToken: process.env.GITHUB_TOKEN,
requiredLabel: 'code-gov',
@@ -41,10 +41,10 @@ async function fetchWithRateLimit(url, options = {}) {
}
async function getRepoInfo() { // dont know how i feel about this double loop setup...
- let repoInfo = []
+ const repoInfo = []
try {
- const content = await fs.readFile(CONFIG.repoFilePath, "utf-8")
+ const content = await fs.readFile(CONFIG.repoFilePath, 'utf-8')
const jsonData = JSON.parse(content)
for (const agencyKey in jsonData) {
@@ -71,7 +71,7 @@ async function getRepoInfo() { // dont know how i feel about this double loop se
}
}
} catch (error) {
- console.error("Error in getting repo information:", error)
+ console.error('Error in getting repo information:', error)
}
// console.log(repoInfo)
@@ -102,11 +102,11 @@ function transformIssue(issue, repo, repoLanguage) {
id: String(issue.id),
number: issue.number,
url: issue.html_url,
- content_title: issue.title || "",
- content_description: issue.body || "",
+ content_title: issue.title || '',
+ content_description: issue.body || '',
repo_name: repo.repoName,
repo_url: `https://github.com/${repo.ownerName}/${repo.repoName}`,
- repo_language: repoLanguage || "",
+ repo_language: repoLanguage || '',
repo_owner: repo.ownerName,
status_is_open: issue.state === 'open',
status_has_assignee: issue.assignee !== null,
@@ -115,9 +115,9 @@ function transformIssue(issue, repo, repoLanguage) {
time_last_updated: issue.updated_at,
time_days_old: daysBetween(createdDate, now),
time_last_activity_days_ago: daysBetween(updatedDate, now),
- people_author: issue.user?.login || "",
+ people_author: issue.user?.login || '',
people_assignee: issue.assignee?.login || null,
- people_author_type: issue.user?.type || "",
+ people_author_type: issue.user?.type || '',
labels_list: labelNames,
labels_count: labelNames.length,
labels_has_priority: checkLabelKeywords(issue.labels, ['priority', 'p0', 'p1', 'p2', 'urgent']),
@@ -146,7 +146,7 @@ async function processSingleRepository(repo, headers) {
}
const repoData = await repoResponse.json()
- const repoLanguage = repoData.language || ""
+ const repoLanguage = repoData.language || ''
let page = 1
let hasMore = true
@@ -215,9 +215,9 @@ async function updateIssuePool() {
try {
await fs.writeFile(CONFIG.issueFilePath, JSON.stringify(issuePool, null, 2))
- console.log(`Successfully saved issues!`)
+ console.log('Successfully saved issues!')
} catch (error) {
- console.error("Error saving issue pool:", error)
+ console.error('Error saving issue pool:', error)
}
return issuePool