From 39554a7cb8e4efa5aed07f28d218ba4e8bcde542 Mon Sep 17 00:00:00 2001
From: codebestia
Date: Wed, 13 May 2026 09:00:22 +0100
Subject: [PATCH 1/4] chore: add ci and contribution docs
---
.github/pull_request_template.md | 16 +++++++
.github/workflows/ci.yml | 32 ++++++++++++++
README.md | 42 ++++++++++++++++---
package-lock.json | 62 ++++++++--------------------
package.json | 18 ++++----
src/app/register/register-client.tsx | 8 ++--
src/app/sign-in/sign-in-client.tsx | 15 +++----
7 files changed, 122 insertions(+), 71 deletions(-)
create mode 100644 .github/pull_request_template.md
create mode 100644 .github/workflows/ci.yml
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..f86f1d1
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,16 @@
+## Summary
+
+
+
+## Changes
+
+-
+
+## Verification
+
+- [ ] `npm run typecheck`
+- [ ] `npm run format:check`
+
+## Notes
+
+
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..091208a
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,32 @@
+name: CI
+
+on:
+ pull_request:
+ push:
+ branches:
+ - main
+ - dev
+
+jobs:
+ checks:
+ name: TypeScript and format
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: npm
+
+ - name: Install dependencies
+ run: npm ci
+
+ - name: TypeScript check
+ run: npm run typecheck
+
+ - name: Format check
+ run: npm run format:check
diff --git a/README.md b/README.md
index 9b0e8c5..ec099d5 100644
--- a/README.md
+++ b/README.md
@@ -23,9 +23,11 @@ The frontend connects directly to the Shade smart contracts and backend services
## Tech Stack
+- Next.js
- React
- TypeScript
-- Web3 / Wallet integrations
+- Tailwind CSS
+- Stellar wallet integrations
- Smart contract interaction
- REST APIs for off-chain services
@@ -47,8 +49,38 @@ Clone the repository:
git clone https://github.com//shade-dapp-frontend.git
cd shade-dapp-frontend
```
-## Install dependencies
-```npm install```
-## Install dependencies
-```npm run dev```
+Install dependencies:
+
+```bash
+npm install
+```
+
+Start the development server:
+
+```bash
+npm run dev
+```
+
+Run checks:
+
+```bash
+npm run typecheck
+npm run format:check
+```
+
+Format files:
+
+```bash
+npm run format
+```
+
+## Contributing
+
+1. Create a branch from `dev`.
+2. Keep changes focused on one task or bug fix.
+3. Run `npm run typecheck` and `npm run format:check` before opening a pull request.
+4. Fill out the pull request template with a short summary, verification steps, and any notes.
+5. Request review after CI passes.
+
+For now, CI runs TypeScript checking and Prettier format validation on pull requests and pushes to `main` or `dev`.
diff --git a/package-lock.json b/package-lock.json
index a84a6e2..dc976c4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -29,6 +29,7 @@
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "15.3.1",
+ "prettier": "^3.8.3",
"tailwindcss": "^4",
"tw-animate-css": "^1.3.8",
"typescript": "^5"
@@ -335,21 +336,6 @@
}
}
},
- "node_modules/@creit.tech/stellar-wallets-kit/node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "license": "Apache-2.0",
- "optional": true,
- "peer": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
"node_modules/@creit.tech/xbull-wallet-connect": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@creit.tech/xbull-wallet-connect/-/xbull-wallet-connect-0.4.0.tgz",
@@ -7397,21 +7383,6 @@
"ws": "^7.5.1"
}
},
- "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/utf-8-validate": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
- "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
"node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
@@ -11561,21 +11532,6 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
- "node_modules/jayson/node_modules/utf-8-validate": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
- "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
"node_modules/jayson/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
@@ -12976,6 +12932,22 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/prettier": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
diff --git a/package.json b/package.json
index 97b18d5..9bd8753 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,10 @@
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
- "lint": "next lint"
+ "lint": "next lint",
+ "typecheck": "tsc --noEmit",
+ "format": "prettier --write .",
+ "format:check": "prettier --check ."
},
"dependencies": {
"@creit.tech/stellar-wallets-kit": "^2.0.0",
@@ -17,21 +20,22 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.544.0",
+ "next": "15.3.1",
"react": "^19.0.0",
"react-dom": "^19.0.0",
- "next": "15.3.1",
"tailwind-merge": "^3.3.1"
},
"devDependencies": {
- "typescript": "^5",
+ "@eslint/eslintrc": "^3",
+ "@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
- "@tailwindcss/postcss": "^4",
- "tailwindcss": "^4",
- "tw-animate-css": "^1.3.8",
"eslint": "^9",
"eslint-config-next": "15.3.1",
- "@eslint/eslintrc": "^3"
+ "prettier": "^3.8.3",
+ "tailwindcss": "^4",
+ "tw-animate-css": "^1.3.8",
+ "typescript": "^5"
}
}
diff --git a/src/app/register/register-client.tsx b/src/app/register/register-client.tsx
index 37e55c1..89b111b 100644
--- a/src/app/register/register-client.tsx
+++ b/src/app/register/register-client.tsx
@@ -102,8 +102,8 @@ export function RegisterClient() {
if (step === 2) {
return Boolean(
values.businessName &&
- values.businessCategory &&
- values.businessDescription,
+ values.businessCategory &&
+ values.businessDescription,
);
}
@@ -263,9 +263,7 @@ export function RegisterClient() {
{step === 2 && "Business details"}
{step === 3 && "Email verification"}
-
- Step {step} of 3
-
+ Step {step} of 3
diff --git a/src/app/sign-in/sign-in-client.tsx b/src/app/sign-in/sign-in-client.tsx
index 28f0481..6bfd354 100644
--- a/src/app/sign-in/sign-in-client.tsx
+++ b/src/app/sign-in/sign-in-client.tsx
@@ -71,15 +71,12 @@ export function SignInClient() {
setStatus("connecting");
try {
- const { StellarWalletsKit, Networks } = await import(
- "@creit.tech/stellar-wallets-kit"
- );
- const { defaultModules } = await import(
- "@creit.tech/stellar-wallets-kit/modules/utils"
- );
- const { FREIGHTER_ID } = await import(
- "@creit.tech/stellar-wallets-kit/modules/freighter"
- );
+ const { StellarWalletsKit, Networks } =
+ await import("@creit.tech/stellar-wallets-kit");
+ const { defaultModules } =
+ await import("@creit.tech/stellar-wallets-kit/modules/utils");
+ const { FREIGHTER_ID } =
+ await import("@creit.tech/stellar-wallets-kit/modules/freighter");
StellarWalletsKit.init({
network: Networks.TESTNET,
From 5f1a445de2fe1ef127c74009d3727d720141198f Mon Sep 17 00:00:00 2001
From: codebestia
Date: Wed, 13 May 2026 09:01:15 +0100
Subject: [PATCH 2/4] chore: update readme
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index ec099d5..cc20106 100644
--- a/README.md
+++ b/README.md
@@ -77,10 +77,9 @@ npm run format
## Contributing
-1. Create a branch from `dev`.
+1. Create a branch from `main`.
2. Keep changes focused on one task or bug fix.
3. Run `npm run typecheck` and `npm run format:check` before opening a pull request.
4. Fill out the pull request template with a short summary, verification steps, and any notes.
5. Request review after CI passes.
-For now, CI runs TypeScript checking and Prettier format validation on pull requests and pushes to `main` or `dev`.
From 99fe3f9ddf280b9d17d7305b6a415c415ae44261 Mon Sep 17 00:00:00 2001
From: codebestia
Date: Wed, 13 May 2026 09:04:28 +0100
Subject: [PATCH 3/4] chore: update lock file
---
package-lock.json | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/package-lock.json b/package-lock.json
index dc976c4..21b02d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -336,6 +336,21 @@
}
}
},
+ "node_modules/@creit.tech/stellar-wallets-kit/node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
"node_modules/@creit.tech/xbull-wallet-connect": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/@creit.tech/xbull-wallet-connect/-/xbull-wallet-connect-0.4.0.tgz",
@@ -7383,6 +7398,21 @@
"ws": "^7.5.1"
}
},
+ "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/utf-8-validate": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
"node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
@@ -11532,6 +11562,21 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
+ "node_modules/jayson/node_modules/utf-8-validate": {
+ "version": "5.0.10",
+ "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
+ "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "node-gyp-build": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=6.14.2"
+ }
+ },
"node_modules/jayson/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
From 0a989267051d90fbacb7de2e8764666c5044c282 Mon Sep 17 00:00:00 2001
From: codebestia
Date: Wed, 13 May 2026 09:11:03 +0100
Subject: [PATCH 4/4] chore: fix readme lint
---
README.md | 1 -
1 file changed, 1 deletion(-)
diff --git a/README.md b/README.md
index cc20106..939022e 100644
--- a/README.md
+++ b/README.md
@@ -82,4 +82,3 @@ npm run format
3. Run `npm run typecheck` and `npm run format:check` before opening a pull request.
4. Fill out the pull request template with a short summary, verification steps, and any notes.
5. Request review after CI passes.
-