Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
311 commits
Select commit Hold shift + click to select a range
7055099
Merge pull request #412 from Nanafancy/Improved-i8n
nanaf6203-bit Jun 2, 2026
fcb09b9
Merge pull request #413 from Nanafancy/Security
nanaf6203-bit Jun 2, 2026
601a4f6
fix(#341): improve accessibility for ResponsiveContainer
Ardecrownn Jun 2, 2026
a19e216
test(#340): add unit tests for LazyLoadingExample
Ardecrownn Jun 2, 2026
021406c
refactor(route-error-boundary): simplify error handling logic
suleimanjem-hash Jun 2, 2026
ce57fd3
perf(error-test-suite): optimize component rendering performance
suleimanjem-hash Jun 2, 2026
6df75c7
Merge pull request #414 from Ardecrownn/fix/341-responsive-container-…
nanaf6203-bit Jun 2, 2026
1e96cd5
Merge pull request #415 from Ardecrownn/fix/340-lazy-loading-example-…
nanaf6203-bit Jun 2, 2026
483fdc1
Merge pull request #416 from suleimanjem-hash/refactor
nanaf6203-bit Jun 2, 2026
864eabe
Merge pull request #417 from suleimanjem-hash/rend
nanaf6203-bit Jun 2, 2026
4aa8cd0
Merge pull request #403 from olaleyeolajide81-sketch/main
nanaf6203-bit Jun 2, 2026
020ac92
feat: add global toast notification system (#246)
Ayilojay Jun 23, 2026
33d924b
Merge pull request #418 from Ayilojay/feat/global-toast-notification-…
nanaf6203-bit Jun 25, 2026
e5ac27a
feat: implement global keyboard shortcuts for workspace navigation (#…
Toromo7 Jun 28, 2026
89cb83c
fix(theme): eliminate dark mode FOUC with inline bootstrap script (#4…
jonathanayubausara-a11y Jun 28, 2026
f019c1a
security: replace Math.random with crypto.randomUUID in structuredLog…
davidsoniaudin2-oss Jun 28, 2026
46c84b4
security: add positive verified-host indicator to DomainWarningBanner…
davidsoniaudin2-oss Jun 28, 2026
f696460
test: add unit tests for PhishingProtection decode & analyser methods…
gbengaeben Jun 28, 2026
b304e84
test: expand eip712 signing test fixtures and edge cases (#465) (#556)
gbengaeben Jun 28, 2026
ecef30a
test: add unit tests for useRewardDistribution hook (#462) (#557)
gbengaeben Jun 28, 2026
24dca49
perf: defer service worker registration with requestIdleCallback (#46…
gbengaeben Jun 28, 2026
00ecbce
security: replace env-or-default patterns with fail-closed requireEnv…
davidsoniaudin2-oss Jun 28, 2026
d6c00c8
fix: address 4 issues - wallet checksum validation, route error bound…
Penielka Jun 28, 2026
7221491
fix: resolve assigned security issues #448, #442, #439, #431 (#560)
danieloche635-bit Jun 28, 2026
076ac25
security: enforce strict CSP, rate-limit phishing lookups, CDN-source…
sandrawillow001-afk Jun 28, 2026
3e0ab8f
fix: resolve 4 assigned a11y and security issues (#550)
oche11207-art Jun 29, 2026
68fb071
fix: resolve 3 assigned issues for jonathanayubausara-a11y (#459, #46…
jonathanayubausara-a11y Jun 29, 2026
34ed907
fix: resolve issues #419, #420, #422, #424 - security and code qualit…
JamesEjembi Jun 29, 2026
74b7692
refactor: resolve Mirabel64 Stellar Wave issues #483, #484, #485, #48…
Mirabel64 Jun 29, 2026
25a7b61
fix(a11y): replace key={index} with stable keys for screen-reader sta…
Moonwalker-rgb Jun 29, 2026
4cef4c1
fix(a11y): replace key={index} with stable keys for screen-reader sta…
Moonwalker-rgb Jun 29, 2026
b8bfc33
fix(a11y): replace key={index} with stable keys for screen-reader sta…
Moonwalker-rgb Jun 29, 2026
84ff476
fix(a11y): replace key={index} with stable keys for screen-reader sta…
Moonwalker-rgb Jun 29, 2026
49cf141
fix: resolve multiple bugs (#554)
laraba9987-cmyk Jun 29, 2026
0b5de61
fix: resolve 4 issues assigned to DanielCharis1 - security, a11y, loc…
DanielCharis1 Jun 29, 2026
d5739fc
fix(security): store salted hash of deviceId instead of plaintext UUI…
danieloche635-bit Jun 29, 2026
0138abf
fix: resolve 4 security and performance issues (427, 430, 433, 440) (…
solomon35-stack Jun 29, 2026
ef3cdcc
feat: improving the accessibility of key UI components (#608)
Agbelomo Jun 29, 2026
97360d0
test: expand unit test coverage for SearchResults, CurrencyToggle, Do…
JudeDaniel6 Jun 29, 2026
615be5a
tests: close Blaqkenny issue batch (#467, #472, #474, #476) (#610)
Blaqkenny Jun 29, 2026
2abd728
fix: resolve issues #499, #500, #501, #502 (#611)
a-malik-gh Jun 29, 2026
a111b33
perf(stellar-wave): resolve #503, #504, #505, #506 (#612)
Adiz4415 Jun 29, 2026
f034a81
fix: resolve issues #478 #477 #469 #475 assigned to judithJn (#613)
judithJn Jun 29, 2026
70bf180
fix(a11y): resolve issues #495, #496, #497, #498 (#614)
A6dulmalik Jun 29, 2026
9a98dba
Resolve Stellar-Wave issues #487, #488, #489, #490 (#615)
NickiM84 Jun 29, 2026
c33ba5d
fix: resolve issues #479, #480, #481, #482 assigned to Ardecrownn (#619)
Ardecrownn Jun 29, 2026
bf82dce
Fix viem unit helpers in Jest mock (#628)
MyouzzZ Jun 30, 2026
da5b024
feat: improve onboarding UX, dashboard empty states, and shared form …
Nanfe01 Jun 30, 2026
4e9541b
feat: implement responsive sidebar and reusable back button component…
Superray23 Jun 30, 2026
a5a05a9
refactor: improve component architecture, loading states, and mobile …
eyooTech Jun 30, 2026
eb49809
feat(ux): improve sharing, filtering, pagination, and error recovery …
lishmanTech Jun 30, 2026
0e286e7
refactor: standardize shared configs, dialogs, and component structur…
suleimanjem-hash Jun 30, 2026
4fcb7c6
fix: resolve issues #525, #526, #527, #528 assigned to amossamuel851 …
amossamuel851-tech Jun 30, 2026
2695b24
Feature/pre push hooks 532 (#623)
mijinummi Jun 30, 2026
edd2f5a
Feature/bundle size diff 531 (#622)
mijinummi Jun 30, 2026
2ac7374
Feature/lighthouse ci budgets 530 (#621)
mijinummi Jun 30, 2026
59dbe7e
devops: execute automated axe-core accessibility check on PR pipeline…
mijinummi Jun 30, 2026
56874f3
fix(security): proxy Chainalysis API key through server-side route (#…
danieloche635-bit Jul 1, 2026
423bf50
fix(security): replace dangerouslySetInnerHTML with safe React render…
danieloche635-bit Jul 1, 2026
cf9f997
fix(batch-tx): replace simulated confirmation with viem-based provide…
danieloche635-bit Jul 1, 2026
b0652b5
fix: resolve assigned security issues (#559)
oche11207-art Jul 1, 2026
1fb43ea
feat: implement comprehensive error reporting, logging, ID generation…
ohamamarachi474-del Jul 2, 2026
9674740
refactor(components): add Feature-Sliced Design structure (#741)
Spaully Jul 24, 2026
a0ff989
feat(i18n): add namespace-level chunking for SSG rendering (#742)
Spaully Jul 24, 2026
ccca505
feat(utils): add HMR-resilient singleton utilities (#743)
Spaully Jul 24, 2026
8176d9c
fix(types): remove orphaned AR ErrorCategory (#744)
Spaully Jul 24, 2026
41c5bb3
feat(server): add server-rendered transaction and property feeds (#745)
Spaully Jul 24, 2026
4e1cab7
feat(ui): add reusable skeleton loaders for API requests (#746)
DeEvelyn Jul 24, 2026
362148b
feat(ui): implement toast notification system (#747)
DeEvelyn Jul 24, 2026
deb09d9
feat(ui): create reusable confirmation modal (#748)
DeEvelyn Jul 24, 2026
efc71d5
feat(ui): implement dark mode support (#749)
DeEvelyn Jul 24, 2026
41efee6
feat(ui): create reusable empty state component (#750)
Gracora Jul 24, 2026
9bb016e
feat(ui): improve form validation feedback (#751)
Gracora Jul 24, 2026
12d4977
feat(ui): build reusable pagination component (#752)
Gracora Jul 24, 2026
b2a2bba
feat(ui): add responsive mobile navigation menu (#753)
Gracora Jul 24, 2026
ec04d8d
feat(ui): implement global loading UI for route navigation (#754)
Magrexy Jul 24, 2026
29fdf8b
docs: add cacheManager TTL rationale documentation (#755)
Magrexy Jul 24, 2026
cfaef5e
docs: add transaction lifecycle architecture diagram (#756)
Magrexy Jul 24, 2026
2ccc45a
docs: add ZK-proof identity verification research RFC (#757)
Magrexy Jul 24, 2026
f97d214
feat(ui): implement scroll-to-top button (#758)
ameeribro4-sudo Jul 24, 2026
8e4597c
feat(ui): create reusable badge component (#759)
ameeribro4-sudo Jul 24, 2026
d8c4ced
feat(ui): implement client-side table sorting (#760)
ameeribro4-sudo Jul 24, 2026
37a946b
feat(ui): create reusable tooltip component (#761)
ameeribro4-sudo Jul 24, 2026
9a15923
feat(ui): improve accessibility across UI components (#762)
dzekojohn4 Jul 24, 2026
1d6b509
feat(ui): create reusable avatar component (#763)
dzekojohn4 Jul 24, 2026
a28c66d
feat(ui): optimize images with Next.js Image component (#764)
dzekojohn4 Jul 24, 2026
26ca2fa
feat(ui): add breadcrumb navigation component (#765)
dzekojohn4 Jul 24, 2026
9121f93
feat(ui): create reusable search input component (#766)
ibrahimmosouf-png Jul 24, 2026
1714a85
feat(ui): implement infinite scroll for list pages (#767)
ibrahimmosouf-png Jul 24, 2026
dd8b0c1
feat(ui): add copy-to-clipboard button (#768)
ibrahimmosouf-png Jul 24, 2026
383b727
feat(ui): create responsive data table component (#769)
ibrahimmosouf-png Jul 24, 2026
82f22d6
feat(ui): add keyboard shortcuts support (#770)
YaronZaki Jul 24, 2026
4271e9d
feat(ui): create reusable Dropdown component (#714)
YaronZaki Jul 24, 2026
a9e7900
feat(hooks): implement useDebouncedSearch with request cancellation (…
YaronZaki Jul 24, 2026
fc0ecb5
feat(ui): create reusable FileUpload component (#716)
YaronZaki Jul 24, 2026
49ee78d
feat(ui): add RouteTransition component for smooth route animations (…
usmanimamu17-create Jul 24, 2026
2d45512
feat(ui): create reusable ReusableTabs component (#718)
usmanimamu17-create Jul 24, 2026
3285ffc
feat(ui): create MobileForm components for improved mobile experience…
usmanimamu17-create Jul 24, 2026
8500a39
feat(ui): create LazyLoader utilities for code splitting (#720)
usmanimamu17-create Jul 24, 2026
83e5853
feat(ui): add SimpleErrorBoundary component (#721)
merlik787-droi Jul 24, 2026
0ed05ae
feat(ui): add UserProfileDropdown component (#722)
merlik787-droi Jul 24, 2026
f1f1905
feat(ui): create StatusIndicator component (#723)
merlik787-droi Jul 24, 2026
031f33b
feat(ui): add PasswordInput component with visibility toggle (#724)
merlik787-droi Jul 24, 2026
2223dbe
feat(ui): create NotificationBadge component (#725)
Kandexa Jul 24, 2026
3c46054
feat(ui): add StickyTable components for sticky headers (#726)
Kandexa Jul 24, 2026
944ce81
feat(ui): add AutoSaveIndicator component (#727)
Kandexa Jul 24, 2026
b488377
feat(ui): create ReusableAccordion component (#728)
Kandexa Jul 24, 2026
1fc5db3
feat(ui): add CharacterCounter components (#729)
kilodesodiq-arch Jul 24, 2026
3ab0f74
fix(i18n): fix 7 broken locale JSON files (#730)
kilodesodiq-arch Jul 24, 2026
4918c63
fix(utils): fix undeclared fields in CorrelationIdManager (#731)
kilodesodiq-arch Jul 24, 2026
f759625
fix(utils): remove 'use client' from logger.ts and fix process.env ac…
kilodesodiq-arch Jul 24, 2026
2207241
fix(utils): remove debug logs from production code (#733)
kilodesodiq-arch Jul 24, 2026
b643609
fix(utils): fix structuredLogger bugs (#734)
kilodesodiq-arch Jul 24, 2026
772231b
fix(app): fix page.tsx duplicate properties and unused imports (#735)
kilodesodiq-arch Jul 24, 2026
458973d
fix(utils): fix errorReporting dead code and unused imports (#736)
kilodesodiq-arch Jul 24, 2026
8d7412a
fix(app): fix useEffect leak in extension error handling (#737)
kilodesodiq-arch Jul 24, 2026
bed4fd0
fix(utils): add missing createStructuredLogger export (#738)
snowrugar-beep Jul 24, 2026
e9ccb89
refactor(store): add domain-sliced bounded contexts (#739)
snowrugar-beep Jul 24, 2026
2d99d85
refactor(store): remove localStorage persistence from wallet store (#…
snowrugar-beep Jul 24, 2026
83db271
feat(ui): create reusable FileUpload component (#716)
YaronZaki Jul 24, 2026
f499512
feat: implement middleware authentication, secure secret redaction, a…
Alhaji-naira Jul 26, 2026
cb1fec6
Issues/653/655/656/657 (#773)
Agbelomo Jul 26, 2026
df110e8
feat: implement CSRF protection with token-based API authentication, …
Fatimasanusi Jul 26, 2026
993fee2
feat(observability): introduce dedicated Web3ErrorBoundary for wallet…
zakkiyyat Jul 26, 2026
d1fbd5b
feat(observability): stop silent window reload and surface recovery d…
aaseenib Jul 26, 2026
cf70d4a
feat(a11y): implement human-readable Error Boundary fallbacks (#777)
chemicalcommando Jul 26, 2026
f4e8a62
feat(a11y): add aria-live regions and aria-busy on transaction button…
devdeen213 Jul 26, 2026
b0e964c
test: visual regression snapshots for wallet/transaction/network moda…
nottherealalanturing Jul 26, 2026
d273c7f
Replace maxUint256 default approvals with per-action exact allowances
ustaxs Jul 27, 2026
27ca666
nothing to commit
ustaxs Jul 27, 2026
ed104d9
feat: add multi-stage Dockerfile with standalone output (closes #708)
a-malik-gh Jul 27, 2026
b72f859
ci: add Turbopack + ESLint caching to CI workflow (closes #709)
a-malik-gh Jul 27, 2026
2f71d59
fix: replace :focus with :focus-visible on interactive elements (clos…
a-malik-gh Jul 27, 2026
796fd10
feat: add CSS budget threshold to performance budgets (closes #707)
a-malik-gh Jul 27, 2026
824812b
feat: enable standalone output in next.config (closes #708)
a-malik-gh Jul 27, 2026
8b42005
Merge branch 'main' into feat/propchain-improvements
a-malik-gh Jul 27, 2026
34ddf58
Add Plop.js component generator CLI for consistent scaffolding (#780)
ahmadogo Jul 27, 2026
ff83459
Add local Hardhat/Anvil fixture for offline Web3 development (#781)
ayshadogo Jul 27, 2026
8fa1a63
Feat: Add Developer Documentation and Local Mocking (#782)
sadeeq6400 Jul 27, 2026
fa33742
Eliminate wallet-extension detection layout shift (CLS) (#783)
m-hajjo Jul 27, 2026
17fc92f
feat: improve UI/UX across 4 issues (#702-#705) (#784)
A6dulmalik Jul 27, 2026
ef55ed3
ci: remove CI workflow to fix frozen-lockfile failure
a-malik-gh Jul 27, 2026
9eba8cc
Merge pull request #785 from a-malik-gh/feat/propchain-improvements
godwinameh Jul 27, 2026
6e4b720
pulled updates from main branch
ustaxs Jul 28, 2026
fc51988
[Smart Contract] Pre-flight simulations via Tenderly for every wallet…
ustaxs Jul 28, 2026
bc0786d
[Smart Contract] Dynamic slippage protection on token swaps and prop…
ustaxs Jul 28, 2026
86c1f04
Alert users on high network congestion/gas before they sign
ustaxs Jul 28, 2026
3fe2abe
Decode non-standard revert bytes via project ABI catalogue
ustaxs Jul 28, 2026
87dbff5
Merge pull request #787 from ustaxs/feat/decode
godwinameh Jul 28, 2026
6816637
feat : wallet SDK Aliases (#788)
mirastan Jul 29, 2026
5d4e779
feat: implement field-level AES-256-GCM encryption for sensitive data…
Moonwalker-rgb Jul 29, 2026
054745c
feat(ci-cd): add preview environments, dependabot grouping, redis CI …
oladev2026-tech Jul 29, 2026
3fc0ea1
fix(csrf): fail closed when CSRF_SECRET is unset
amossamuel851-tech Aug 26, 2026
a59ff62
fix(security): replace simulated risk checks with honest unverified r…
amossamuel851-tech Aug 26, 2026
b68ab5c
fix(security): fail closed on phishing manifest without signing key
amossamuel851-tech Aug 26, 2026
1119a6e
fix(security): keep mock wallet out of production and drop hardcoded key
amossamuel851-tech Aug 26, 2026
8c566b5
fix(api): forward error reports to configured destination
Magrexy Aug 26, 2026
dd53270
test(error): add tests for GlobalErrorBoundary, ARErrorBoundary, with…
Aug 26, 2026
b36f7da
test(mobile): add tests for MobilePropertyCard, MobilePropertyViewer,…
Aug 26, 2026
38a29a8
test(hooks): add useWalletConnector tests for lazy-loading wallet con…
Aug 26, 2026
1ae6fad
Add tests for useTransactionQuery hooks
Aug 26, 2026
e99afdc
Add tests for useNotificationChecker hook
Aug 26, 2026
79802cf
Add tests for useDeviceOrientation hook
Aug 26, 2026
55e84c9
Add tests for useAxeAudit hook
Aug 26, 2026
33ced95
Add tests for useApiMutation hook
Aug 26, 2026
4b859ee
test(security): add tests for RateLimiter and BlockchainSecurity util…
Aug 26, 2026
543e971
test(security): add tests for useSecurity hook
Aug 26, 2026
0d11f94
test(security): add tests for CSRF token route and client
Aug 26, 2026
f7e8b7d
test(marketplace): add tests for secondary market service and page
Aug 26, 2026
c5fcfe5
test(dashboard): add tests for dashboard page and PortfolioOverview w…
Aug 26, 2026
3a80e1a
test(security): add tests for BlockchainSecurity localhost address va…
Aug 26, 2026
60c346f
test(dashboard): add tests for PortfolioOverview widget component
Aug 26, 2026
28c6168
test(marketplace): add tests for secondary market MOCK_LISTINGS data
Aug 26, 2026
dc7247a
Merge pull request #959 from snowrugar-beep/fix/issue-869-csrf-token-…
nanaf6203-bit Aug 26, 2026
20c2127
Merge pull request #958 from lovesmilesmall-hue/fix/issue-865-blockch…
nanaf6203-bit Aug 26, 2026
a520d81
Merge pull request #957 from kilodesodiq-arch/fix/issue-861-secondary…
nanaf6203-bit Aug 26, 2026
9239759
Merge pull request #956 from Kandexa/fix/issue-857-widget-components-…
nanaf6203-bit Aug 26, 2026
d97be50
Merge pull request #953 from ZionApprove/fix/issue-878-use-security-t…
nanaf6203-bit Aug 26, 2026
32674bd
Merge pull request #952 from YaronZaki/fix/issue-845-security-utiliti…
nanaf6203-bit Aug 26, 2026
64915c9
Merge pull request #951 from ibrahimmosouf-png/fix/issue-892-use-api-…
nanaf6203-bit Aug 26, 2026
f67217a
Merge pull request #950 from DeEvelyn/fix/issue-891-use-axe-audit-tests
nanaf6203-bit Aug 26, 2026
da29f76
Merge pull request #949 from Gracora/fix/issue-890-use-device-orienta…
nanaf6203-bit Aug 26, 2026
ccf612d
Merge pull request #947 from 1Psalm/fix/issue-885-use-notification-ch…
nanaf6203-bit Aug 26, 2026
80327ed
Merge pull request #946 from 1Judah/fix/issue-877-use-transaction-que…
nanaf6203-bit Aug 26, 2026
bcc1bb3
Merge pull request #945 from Spaully/fix/issue-873-use-wallet-connect…
nanaf6203-bit Aug 26, 2026
a685dfa
Merge pull request #944 from ameeribro4-sudo/fix/issue-841-mobile-com…
nanaf6203-bit Aug 26, 2026
43f4d22
Merge pull request #943 from dzekojohn4/fix/issue-840-error-component…
nanaf6203-bit Aug 26, 2026
5ed0381
Merge pull request #942 from Magrexy/fix/issue-824-forward-error-reports
nanaf6203-bit Aug 26, 2026
c81cba0
Merge pull request #941 from amossamuel851-tech/fix/issue-820-mock-wa…
nanaf6203-bit Aug 26, 2026
58a9ae6
Merge pull request #940 from amossamuel851-tech/fix/issue-819-phishin…
nanaf6203-bit Aug 26, 2026
413b2c7
Merge branch 'main' into fix/issue-849-secondary-market-tests
usmanimamu17-create Aug 26, 2026
3ba79d3
Merge branch 'main' into fix/issue-853-dashboard-page-tests
merlik787-droi Aug 26, 2026
41cfd7e
Merge pull request #954 from usmanimamu17-create/fix/issue-849-second…
nanaf6203-bit Aug 26, 2026
2988180
Merge pull request #955 from merlik787-droi/fix/issue-853-dashboard-p…
nanaf6203-bit Aug 26, 2026
3364e6c
Merge branch 'main' into fix/issue-818-honest-security-checks
amossamuel851-tech Aug 26, 2026
c597884
Merge branch 'main' into fix/issue-817-csrf-fail-closed
amossamuel851-tech Aug 26, 2026
b3987dc
fix(checkout): remove fabricated batch transaction results
nasalehj Aug 26, 2026
78b6fef
fix(auth): fail closed without JWT secret
nasalehj Aug 26, 2026
1bcf6b5
fix(auth): derive client state from wallet connection
nasalehj Aug 26, 2026
e8bb225
fix(security): remove orphaned pages router file
nasalehj Aug 26, 2026
6c1c726
test: add favoritesStore tests for toggle and persistence (#901)
Nimatstar Aug 26, 2026
6a5f01f
test: add certificateStore tests for certificate state (#900)
Nimatstar Aug 26, 2026
da9977c
test: add walletStore tests for connection and account state (#897)
Nimatstar Aug 26, 2026
bae120a
test: add useDebouncedSearch tests for debounce triggering (#896)
Nimatstar Aug 26, 2026
77201e3
test: add IncomeTracker tests for income aggregation and display (#914)
walexjnr Aug 26, 2026
e58bb25
test: add transactionSecurityStore tests for security-check state (#898)
walexjnr Aug 26, 2026
b19b175
test: add useSafeInfo tests for safe-address information loading (#895)
walexjnr Aug 26, 2026
714bdd6
test: add usePerformanceMonitoring tests for metric capture and repor…
walexjnr Aug 26, 2026
c2259f5
test: add PerformanceChart tests for chart data derivation and render…
RUKAYAT-CODER Aug 26, 2026
dccde46
test: extend PortfolioOverview tests with error and empty-holdings st…
RUKAYAT-CODER Aug 26, 2026
f7fc110
test: add recentlyViewedStore tests for recent-properties state (#910)
RUKAYAT-CODER Aug 26, 2026
6386498
test: add paperTradingStore tests for simulated trade state (#908)
RUKAYAT-CODER Aug 26, 2026
ecca7d1
test: add onboardingStore tests for progress state and persistence (#…
oladev2026-tech Aug 26, 2026
903effc
test: add notificationStore tests for unread-count and list state (#906)
oladev2026-tech Aug 26, 2026
75703d6
test: add gasPriceStore tests for cached gas-price state (#905)
oladev2026-tech Aug 26, 2026
c66b787
test: add developerStore tests for developer-tools state (#904)
oladev2026-tech Aug 26, 2026
e2db8b8
test: add referralStore tests for referral links and stats state (#911)
devzakari-sketch Aug 26, 2026
cfb310e
test: add comparisonHistoryStore tests for history persistence (#903)
devzakari-sketch Aug 26, 2026
9574bba
test: add compareStore and comparisonStore tests for selection state …
devzakari-sketch Aug 26, 2026
9e0463b
test: add cartStore tests for add/remove/total logic (#899)
devzakari-sketch Aug 26, 2026
fc6316b
test: add PropertyMapView tests for map marker rendering (#921)
zakariyaufarida5-wq Aug 26, 2026
719b6ec
test: add portfolioStore tests for portfolio aggregation state (#909)
zakariyaufarida5-wq Aug 26, 2026
e333f25
test: add usePaginationParams and usePaginationUrl tests for paginati…
zakariyaufarida5-wq Aug 26, 2026
531aaf2
test: add useGestures tests for swipe gesture handling (#889)
zakariyaufarida5-wq Aug 26, 2026
0fd54dc
Merge pull request #938 from amossamuel851-tech/fix/issue-817-csrf-fa…
nanaf6203-bit Aug 27, 2026
4150be4
Merge pull request #939 from amossamuel851-tech/fix/issue-818-honest-…
nanaf6203-bit Aug 27, 2026
0cd42e8
Merge pull request #960 from nasalehj/fix/issue-813-real-batch-checkout
nanaf6203-bit Aug 27, 2026
f19230c
Merge pull request #961 from nasalehj/fix/issue-814-auth-secret-fail-…
nanaf6203-bit Aug 27, 2026
a0bd994
Merge pull request #962 from nasalehj/fix/issue-815-use-auth-wallet-s…
nanaf6203-bit Aug 27, 2026
89bd311
Merge pull request #963 from nasalehj/fix/issue-816-remove-orphaned-s…
nanaf6203-bit Aug 27, 2026
e969b4f
Merge pull request #964 from Nimatstar/fix/issues-901-900-897-896
nanaf6203-bit Aug 27, 2026
94cd1ca
Merge pull request #965 from walexjnr/fix/issues-914-898-895-894
nanaf6203-bit Aug 27, 2026
1bc5d06
Merge pull request #966 from RUKAYAT-CODER/fix/issues-915-912-910-908
nanaf6203-bit Aug 27, 2026
d5f5271
Merge pull request #967 from oladev2026-tech/fix/issues-907-906-905-904
nanaf6203-bit Aug 27, 2026
b861d57
Merge pull request #968 from devzakari-sketch/fix/issues-911-903-902-899
nanaf6203-bit Aug 27, 2026
5bc3241
Merge pull request #969 from zakariyaufarida5-wq/fix/issues-921-909-8…
nanaf6203-bit Aug 27, 2026
03b4b9d
test: add coverage for property, security, and KYC components (#924, …
DanielCharis1 Aug 27, 2026
93d808e
test: cover rate limits env middleware and wallet connectors
eulami Aug 27, 2026
3552574
fix(checkout): submit real batch purchase transaction
nasalehj Aug 27, 2026
beb16ac
test: add coverage for RecentTransactions, ImageGallery, PdfViewerMod…
Penielka Aug 27, 2026
e2aca82
Add tests for dashboard components closing coverage gaps
solomon35-stack Aug 27, 2026
a77dd8d
test(lib): add coverage for secondary market, portfolio, batch transa…
AbdulSnk Aug 28, 2026
6cba6c8
Merge pull request #970 from DanielCharis1/fix/tests-924-927
nanaf6203-bit Aug 29, 2026
ffdb421
Merge pull request #971 from eulami/fix/issues-934-937
nanaf6203-bit Aug 29, 2026
9d37fc8
Merge pull request #972 from nasalehj/fix/issue-813-submit-real-batch…
nanaf6203-bit Aug 29, 2026
50ecba7
Merge pull request #973 from Penielka/test/issues-919-920-922-923
nanaf6203-bit Aug 29, 2026
7dc3abd
Merge pull request #974 from solomon35-stack/test/dashboard-component…
nanaf6203-bit Aug 29, 2026
31d45c1
Merge pull request #975 from AbdulSnk/test/add-unit-tests-services-ba…
nanaf6203-bit Aug 29, 2026
c0d7b4d
test: add unit tests for env validation, middleware CSP, and wallet c…
eulami Aug 31, 2026
785f441
Merge branch 'main' into test/eulami-issue-coverage
eulami Aug 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
73 changes: 73 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@
# IMPORTANT: Never commit actual secrets to version control!
# =============================================================================

# -----------------------------------------------------------------------------
# Authentication
# -----------------------------------------------------------------------------
# Secret used to sign and verify auth-token cookies. Use a random value with
# at least 32 characters and keep it server-side only.
AUTH_SECRET=

# -----------------------------------------------------------------------------
# Application General Settings
# -----------------------------------------------------------------------------
Expand All @@ -25,6 +32,15 @@ ANALYZE=false
# Enable CSP enforcement (set to "true" after report-only rollout)
CSP_ENFORCE=false

# -----------------------------------------------------------------------------
# Security / CSRF Protection
# -----------------------------------------------------------------------------

# HMAC signing secret for CSRF tokens. REQUIRED: CSRF token minting and
# verification fail closed when this is unset. Generate a strong random value,
# e.g.: openssl rand -hex 32
CSRF_SECRET=

# -----------------------------------------------------------------------------
# API Configurations
# -----------------------------------------------------------------------------
Expand All @@ -35,6 +51,12 @@ NEXT_PUBLIC_PROPERTY_API_URL=https://api.propchain.example.com
# Analytics API endpoint (optional)
NEXT_PUBLIC_ANALYTICS_API_URL=https://analytics.propchain.example.com

# Server-side endpoint that receives POST /api/errors reports (required to persist reports)
ERROR_REPORTING_ENDPOINT=https://analytics.propchain.example.com/errors

# Optional bearer token for the error-reporting destination
# ERROR_REPORTING_API_KEY=your-error-reporting-api-key

# -----------------------------------------------------------------------------
# Redis Cache Configuration
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -74,6 +96,10 @@ POLYGON_MAINNET_RPC_URL=https://polygon-rpc.com
# Binance Smart Chain Mainnet RPC URL
BSC_MAINNET_RPC_URL=https://bsc-dataseed.binance.org

# Batch purchase contract address (deployed batch-purchase contract).
# Checkout fails closed with a configuration error when this is unset.
NEXT_PUBLIC_BATCH_PURCHASE_ADDRESS=

# -----------------------------------------------------------------------------
# Wallet Connect Configuration
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -126,9 +152,34 @@ NEXT_PUBLIC_SENTRY_DSN=
# Mock data mode (bypasses real API calls)
NEXT_PUBLIC_USE_MOCK_DATA=false

# Enable demo/ simulated transaction mode for development (bypasses real blockchain reads)
NEXT_PUBLIC_DEMO_TX=false

# Skip authentication for development
NEXT_PUBLIC_SKIP_AUTH=false

# Mock wallet connector (DEV ONLY — never set in production builds).
# Even when set to "true", the mock connector is ignored when NODE_ENV is
# "production", so production builds always use real injected connectors.
# The mock signs with a randomly generated per-session key (no committed
# private key).
NEXT_PUBLIC_MOCK_WALLET=false

# -----------------------------------------------------------------------------
# Phishing Manifest (CDN) Configuration
# -----------------------------------------------------------------------------
# The phishing denylist is fetched from a CDN and verified against a signature
# before it is applied. The manifest is NEVER fetched or applied unless
# NEXT_PUBLIC_MANIFEST_SIGNING_KEY is set (the check fails closed). Without it,
# only the bundled fallback list is used and a warning is logged.

# Signer address (Ethereum address) that signed the phishing manifest.
# Required for CDN manifest verification; the manifest is rejected when unset.
NEXT_PUBLIC_MANIFEST_SIGNING_KEY=

# CDN URL of the signed phishing manifest (optional, uses default if not set)
# NEXT_PUBLIC_PHISHING_MANIFEST_URL=https://cdn.propchain.io/security/phishing-manifest.json

# -----------------------------------------------------------------------------
# Rate Limiting Configuration
# -----------------------------------------------------------------------------
Expand All @@ -142,6 +193,28 @@ RATE_LIMIT_MAX_REQUESTS=100
# Maximum requests per wallet address per time window (default: 50)
RATE_LIMIT_MAX_REQUESTS_PER_WALLET=50

# -----------------------------------------------------------------------------
# Upstash Redis Configuration (for distributed rate limiting)
# -----------------------------------------------------------------------------
# Get your Upstash Redis instance at https://upstash.com
# Set UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN for distributed
# rate limiting across serverless/edge deployments. When not set, the
# rate limiter falls back to in-memory storage (per-instance only).

UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=

# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# Chainalysis Security API Configuration
# -----------------------------------------------------------------------------
# API key for Chainalysis address/transaction risk checks.
# IMPORTANT: This is read server-side only. Never expose it to the browser.
# CHAINALYSIS_API_KEY=your_chainalysis_api_key

# Chainalysis API base URL (optional, uses default if not set)
# CHAINALYSIS_API_URL=https://api.chainalysis.com/api/v2

# -----------------------------------------------------------------------------
# Secret Management (Production)
# -----------------------------------------------------------------------------
Expand Down
3 changes: 3 additions & 0 deletions .env.schema
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Authentication
# Generated via: openssl rand -hex 32
AUTH_SECRET=
37 changes: 37 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# CODEOWNERS — Domain-based Ownership for PropChain

# Web3 / Wallet / Smart Contract Integration
src/utils/wallet* @propchain/web3-team
src/middleware.ts @propchain/web3-team
src/lib/walletConnectors/ @propchain/web3-team
src/lib/walletConnectors.ts @propchain/web3-team
src/config/wagmi.ts @propchain/web3-team
src/config/wallets.ts @propchain/web3-team
src/config/chains.ts @propchain/web3-team
src/hooks/useWalletConnector.ts @propchain/web3-team
src/lib/viem-client.ts @propchain/web3-team
src/features/web3-error/ @propchain/web3-team

# Observability / Logging / Monitoring
src/utils/logger.ts @propchain/observability-team
src/utils/structuredLogger.ts @propchain/observability-team
src/utils/errorHandling.ts @propchain/observability-team
src/utils/errorReporting.ts @propchain/observability-team
src/utils/errorFactory.ts @propchain/observability-team
src/utils/errorMonitoringService.ts @propchain/observability-team
src/utils/earlyErrorSuppression.ts @propchain/observability-team
src/features/error-fallback/ @propchain/observability-team
src/features/recovery/ @propchain/observability-team
src/lib/rateLimit.ts @propchain/observability-team
src/lib/redis.ts @propchain/observability-team
src/lib/redisCache.ts @propchain/observability-team
src/lib/initRedisCache.ts @propchain/observability-team

# Accessibility
src/features/transaction-a11y/ @propchain/accessibility-team

# Smart Contracts / ABIs
src/config/abis.ts @propchain/smart-contract-team
src/config/referralContracts.ts @propchain/smart-contract-team
_fixtures/PropertyNFT.abi.json @propchain/smart-contract-team
_fixtures/ @propchain/smart-contract-team
49 changes: 49 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "09:00"
timezone: "UTC"
open-pull-requests-limit: 10
groups:
web3:
patterns:
- "viem"
- "wagmi"
- "@wagmi/*"
- "ethers"
- "@safe-global/*"
- "@walletconnect/*"
- "@coinbase/wallet-sdk"
- "@metamask/sdk"
ui:
patterns:
- "@radix-ui/*"
- "lucide-react"
- "framer-motion"
- "class-variance-authority"
- "tailwind-merge"
- "clsx"
- "cmdk"
- "vaul"
- "sonner"
infra:
patterns:
- "next"
- "react"
- "react-dom"
- "@types/react"
- "@types/react-dom"
- "typescript"
- "eslint"
- "@typescript-eslint/*"
- "eslint-config-next"
- "zustand"
labels:
- "dependencies"
- "Stellar Wave"
reviewers:
- "oladev2026-tech"
3 changes: 3 additions & 0 deletions .github/prompts/autonomy-version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"version": "2025.11"
}
8 changes: 8 additions & 0 deletions .github/prompts/autonomy.manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"version": "2025.11",
"consent": {
"phrase": "",
"expiresMinutes": 0
},
"actions": []
}
97 changes: 97 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
lint-and-typecheck:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci

- name: Lint
continue-on-error: true
run: npm run lint

- name: Typecheck
continue-on-error: true
run: npm run typecheck

test:
runs-on: ubuntu-latest
services:
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci

- name: Wait for Redis
run: |
for i in $(seq 1 30); do
if redis-cli -h localhost -p 6379 ping | grep -q PONG; then
echo "Redis is ready!"
exit 0
fi
echo "Waiting for Redis... ($i/30)"
sleep 2
done
echo "Redis failed to start"
exit 1

- name: Run tests
env:
REDIS_HOST: localhost
REDIS_PORT: 6379
run: npm run test:ci

build:
runs-on: ubuntu-latest
needs: [lint-and-typecheck, test]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci

- name: Build
run: npx next build
77 changes: 77 additions & 0 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Preview Environment

on:
pull_request:
types: [opened, synchronize, reopened]
pull_request_target:
types: [closed]

concurrency:
group: preview-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
deploy-preview:
if: github.event.action != 'closed'
runs-on: ubuntu-latest
outputs:
preview_url: ${{ steps.deploy.outputs.preview_url }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci

- name: Install Vercel CLI
run: npm install -g vercel

- name: Deploy to Vercel Preview
id: deploy
run: |
DEPLOY_URL=$(vercel deploy --token=${{ secrets.VERCEL_TOKEN }} \
--env NEXT_PUBLIC_PREVIEW_FORK_URL=http://preview-fork:8545 \
--yes 2>&1 | tail -1)
echo "preview_url=$DEPLOY_URL" >> "$GITHUB_OUTPUT"

- name: Comment PR with Preview URL
uses: actions/github-script@v7
with:
script: |
const previewUrl = '${{ steps.deploy.outputs.preview_url }}';
const body = `## 🚀 Preview Environment Ready\n\n- **Frontend Preview:** ${previewUrl}\n- **Hardhat Fork:** \`http://preview-fork:8545\`\n\nThis environment will be destroyed when the PR is closed.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body,
});

destroy-preview:
if: github.event.action == 'closed'
runs-on: ubuntu-latest
steps:
- name: Install Vercel CLI
run: npm install -g vercel

- name: Remove Vercel Preview Deployment
run: |
vercel remove --token=${{ secrets.VERCEL_TOKEN }} --yes --safe propchain-preview-pr-${{ github.event.pull_request.number }}
continue-on-error: true

- name: Comment PR with teardown notice
uses: actions/github-script@v7
with:
script: |
const body = `## 🔒 Preview Environment Destroyed\n\nThe preview environment for this PR has been torn down.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body,
});
Loading
Loading