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. -