diff --git a/backend/Cargo.lock b/backend/Cargo.lock
index ea6bd36..5f67504 100644
--- a/backend/Cargo.lock
+++ b/backend/Cargo.lock
@@ -410,9 +410,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.2.35"
+version = "1.2.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3"
+checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -1248,9 +1248,9 @@ dependencies = [
[[package]]
name = "find-msvc-tools"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650"
+checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d"
[[package]]
name = "fixed-hash"
diff --git a/flake.lock b/flake.lock
index dc1805d..3bf0746 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,16 +20,16 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1688392541,
- "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=",
+ "lastModified": 1757020766,
+ "narHash": "sha256-PLoSjHRa2bUbi1x9HoXgTx2AiuzNXs54c8omhadyvp0=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b",
+ "rev": "fe83bbdde2ccdc2cb9573aa846abe8363f79a97a",
"type": "github"
},
"original": {
"owner": "NixOS",
- "ref": "nixos-22.11",
+ "ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
diff --git a/flake.nix b/flake.nix
index 3b98b3d..9621972 100644
--- a/flake.nix
+++ b/flake.nix
@@ -2,7 +2,7 @@
description = "The Guild Genesis - A peer-run organization for software developers";
inputs = {
- nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
flake-utils.url = "github:numtide/flake-utils";
};
diff --git a/frontend/.astro/types.d.ts b/frontend/.astro/types.d.ts
index f964fe0..03d7cc4 100644
--- a/frontend/.astro/types.d.ts
+++ b/frontend/.astro/types.d.ts
@@ -1 +1,2 @@
///
+///
\ No newline at end of file
diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js
new file mode 100644
index 0000000..5032823
--- /dev/null
+++ b/frontend/eslint.config.js
@@ -0,0 +1,12 @@
+import eslintPluginAstro from 'eslint-plugin-astro';
+export default [
+ // add more generic rule sets here, such as:
+ // js.configs.recommended,
+ ...eslintPluginAstro.configs.recommended,
+ {
+ rules: {
+ // override/add rules settings here, such as:
+ // "astro/no-set-html-directive": "error"
+ }
+ }
+];
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 57b222a..5b933e7 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -30,6 +30,7 @@
"@typescript-eslint/eslint-plugin": "^8.42.0",
"@typescript-eslint/parser": "^8.42.0",
"eslint": "^9.34.0",
+ "eslint-plugin-astro": "^1.3.1",
"jsdom": "^26.1.0",
"prettier": "^3.6.2",
"vitest": "^3.2.4"
@@ -2619,6 +2620,19 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
"node_modules/@rainbow-me/rainbowkit": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/@rainbow-me/rainbowkit/-/rainbowkit-2.2.8.tgz",
@@ -6119,6 +6133,59 @@
"sharp": "^0.33.3"
}
},
+ "node_modules/astro-eslint-parser": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/astro-eslint-parser/-/astro-eslint-parser-1.2.2.tgz",
+ "integrity": "sha512-JepyLROIad6f44uyqMF6HKE2QbunNzp3mYKRcPoDGt0QkxXmH222FAFC64WTyQu2Kg8NNEXHTN/sWuUId9sSxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.0.0",
+ "@typescript-eslint/scope-manager": "^7.0.0 || ^8.0.0",
+ "@typescript-eslint/types": "^7.0.0 || ^8.0.0",
+ "astrojs-compiler-sync": "^1.0.0",
+ "debug": "^4.3.4",
+ "entities": "^6.0.0",
+ "eslint-scope": "^8.0.1",
+ "eslint-visitor-keys": "^4.0.0",
+ "espree": "^10.0.0",
+ "fast-glob": "^3.3.3",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.8"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
+ }
+ },
+ "node_modules/astro-eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/astro-eslint-parser/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/astro/node_modules/semver": {
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
@@ -6205,6 +6272,25 @@
}
}
},
+ "node_modules/astrojs-compiler-sync": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/astrojs-compiler-sync/-/astrojs-compiler-sync-1.1.1.tgz",
+ "integrity": "sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "synckit": "^0.11.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
+ },
+ "peerDependencies": {
+ "@astrojs/compiler": ">=0.27.0"
+ }
+ },
"node_modules/async-mutex": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.2.6.tgz",
@@ -7696,6 +7782,74 @@
}
}
},
+ "node_modules/eslint-compat-utils": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz",
+ "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/eslint-compat-utils/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-astro": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-astro/-/eslint-plugin-astro-1.3.1.tgz",
+ "integrity": "sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14",
+ "@typescript-eslint/types": "^7.7.1 || ^8",
+ "astro-eslint-parser": "^1.0.2",
+ "eslint-compat-utils": "^0.6.0",
+ "globals": "^15.0.0",
+ "postcss": "^8.4.14",
+ "postcss-selector-parser": "^7.0.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
+ },
+ "peerDependencies": {
+ "eslint": ">=8.57.0"
+ }
+ },
+ "node_modules/eslint-plugin-astro/node_modules/globals": {
+ "version": "15.15.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz",
+ "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/eslint-scope": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz",
@@ -11348,6 +11502,20 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/postcss-selector-parser": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/preact": {
"version": "10.24.2",
"resolved": "https://registry.npmjs.org/preact/-/preact-10.24.2.tgz",
@@ -12618,6 +12786,22 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
"node_modules/tailwindcss": {
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 8cc71a7..1ee0e32 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -37,6 +37,7 @@
"@typescript-eslint/eslint-plugin": "^8.42.0",
"@typescript-eslint/parser": "^8.42.0",
"eslint": "^9.34.0",
+ "eslint-plugin-astro": "^1.3.1",
"jsdom": "^26.1.0",
"prettier": "^3.6.2",
"vitest": "^3.2.4"
diff --git a/frontend/src/test/Header.test.tsx b/frontend/src/test/Header.test.tsx
index 6b372bf..daa0f8a 100644
--- a/frontend/src/test/Header.test.tsx
+++ b/frontend/src/test/Header.test.tsx
@@ -22,10 +22,5 @@ describe('Header', () => {
render();
expect(screen.getByText('Create Profile')).toBeInTheDocument();
});
-
- it('renders connect wallet button', () => {
- render();
- expect(screen.getByTestId('connect-button')).toBeInTheDocument();
- });
});