Overview: Where Development Is Heading
The backend repo is currently focused on bug fixes, new features. Several fixes are landing to stabilize the existing flows. New feature work is progressing in parallel. Recent commit subjects include: Fix ipfs.io rate limiting: serialize requests, detect 504 lockout, cache duplicate CID fetches; Add chainWatch backfill mode (-u/-u-dry/-full): rewrite inline base64 + ipfs/http images to CDN, normalize CID URLs, per-chain + ipfs.io rate limits, per-minute stats; remove unused routes from server.js and update imports; Merge remote-tracking branch 'origin/refactor2026' into refactor2026; fix: use = instead of LIKE for numeric for_coll_id in nftMetaById. The work is tightening the foundation before more blockchain-facing features ship.
Overview: Where Development Is Heading
The frontend repo is currently focused on bug fixes, new features, style cleanup. Several fixes are landing to stabilize the existing flows. New feature work is progressing in parallel. Recent commit subjects include: fix: place flare route under $locale for /en/chains/flare; style: apply style guide tokens to error page; fix: single-layer error handling with shell-preserving boundary; fix: single-layer error handling with shell-preserving boundary; fix: hard navigate Continue button for clean one-click recovery. The work is converging on a more stable and maintainable user experience.
Project Direction — Both repos are converging on a stable, production-ready NFT marketplace. The backend is hardening core systems while the frontend improves architecture and user experience.
Backend Commits
e4ccc9b 2026-08-26 02:53:59
Fix ipfs.io rate limiting: serialize requests, detect 504 lockout, cache duplicate CID fetcheseaba5d4 2026-08-26 00:30:07
Add chainWatch backfill mode (-u/-u-dry/-full): rewrite inline base64 + ipfs/http images to CDN, normalize CID URLs, per-chain + ipfs.io rate limits, per-minute stats63692a2 2026-08-25 03:55:20
remove unused routes from server.js and update importsf149a44 2026-08-25 03:54:09
Merge remote-tracking branch 'origin/refactor2026' into refactor2026601a398 2026-08-25 02:04:42 use = instead of LIKE for numeric for_coll_id in nftMetaById
fix:02ce78b 2026-08-25 02:03:42 use = instead of LIKE for numeric for_coll_id in nftMetaById
fix:e2fe3de 2026-08-25 01:24:33
remove unused routes from server.js and update importsfcb4dbe 2026-08-24 01:52:41
Separate blockscout cache by chainId in newmeta and gitignore newmeta0cb9b26 2026-08-24 01:10:51
test(nft): drop unsupported 'order' field from nftMetaById validation testsd198115 2026-08-24 01:10:21
fix(nft): correct slug resolution in nftMetaById6519a0a 2026-08-24 00:59:48
feat(nft): accept canonicalName + chainName (slug) in nftMetaById1776276 2026-08-23 18:51:26
fix(getCollections): apply net filter — number has no .length9fa19e6 2026-08-23 18:15:03
feat(collInfo): accept canonicalName+chainName or contractAddress+chainName5bb7844 2026-08-23 18:14:54 add canonicalName column and backfill helper
feat:f538183 2026-08-23 00:37:26 preserve null query params, store contract names, remove 1000 cap, normalize new input format, pass db/tokenType into ingestContracts, update existing collections rows, fetch metadata fallback, use null-preserving token pagination serializer
fix:61dac6c 2026-08-22 20:25:30
feat(chainWatch): show canonical signature names on stdout NFT lines9364571 2026-08-22 20:13:02
feat(db): add signatures table for chainWatch learned selectorsc2e7e43 2026-08-22 20:12:37
feat(chainWatch): persist learned signatures to MySQL signatures tableb6c58c8 2026-08-22 18:36:17
fix(db): widen collections.totalSupply to BIGINT UNSIGNEDb1148e0 2026-08-22 18:36:08
fix(chainWatch): make DB writes non-fatal; log full SQL + values on failure6f55254 2026-08-22 18:27:28
feat(chainWatch): gate imports on known NFT func selectors + event topics96fd0fb 2026-08-22 18:14:22
fix(chainWatch): snapshot loop index in subscribe goroutine (nil-pointer panic on startup)19f9bfa 2026-08-22 18:05:23
feat(chainWatch): add crash handling + retry totalSupply + ipfs.io gateway78cd2a1 2026-08-22 17:40:52
docs(chainWatch): track clean crash-handling as an open task in AGENTS.md4f49917 2026-08-22 17:39:58
docs(chainWatch): add AGENTS.md capturing current watcher state
Frontend Commits
0a89396ec 2026-09-08 05:17:07 place flare route under $locale for /en/chains/flare
fix:a02d4d029 2026-09-08 05:05:17 apply style guide tokens to error page
style:61c8aa85b 2026-09-08 05:00:15 single-layer error handling with shell-preserving boundary
fix:39f1d1970 2026-09-08 04:57:00 single-layer error handling with shell-preserving boundary
fix:cfa2886dd 2026-09-08 04:41:38 hard navigate Continue button for clean one-click recovery
fix:77a1151ff 2026-09-08 04:37:22 force fresh ErrorBoundary mount on pathname change via React key
fix:c47c503a0 2026-09-08 04:29:54 use useLocation inside ErrorBoundary so pathname updates reset the class boundary on route change
fix:d4d20dcd6 2026-09-08 04:27:32 navigate-only on Continue; reset via locationKey change
fix:df2dc94fe 2026-09-08 04:25:50 reset ErrorBoundary on route change so nav links work after error
fix:afa80029a 2026-09-08 04:16:59 wire ErrorBoundary reset through ErrorComponent so users can leave the error page
fix:c183069fb 2026-09-08 04:10:06 use published @byteone/web3-style-guide 0.2.1 import path
fix:d574ec0f5 2026-09-08 04:04:46 import @byteone/web3-style-guide package instead of local CSS copies
feat:3698e70a3 2026-09-08 03:50:46
ref: copy used legacy CSS blocks into legacy-clones.css; swap App import6dbcb5dd5 2026-09-08 03:42:09 modernise SignIn page (pixel-card, pixel-input, pixel-btn; drop purple/gradient)
style:0234c0a27 2026-09-08 03:35:04 Modal2 key tied to show state to prevent partial-update flicker
fix:596c9a629 2026-09-08 03:34:00 remove showModal(true) from MetaModal content function (was causing render loop)
fix:8483a27b6 2026-09-08 03:32:05 memoize Modal2 component to prevent flashing from parent rerenders
fix:40803639d 2026-09-08 03:31:12 move Modal2 outside col-12 pane so it overlays as fixed backdrop
fix:f4b1d5caf 2026-09-08 03:29:56 remove animation causing rapid modal flicker
fix:0b12a3cab 2026-09-08 03:29:23 ItemDetails SectionInfo Modal2 handleClose + ESC (via Modal2 useEffect)
fix:4502b175b 2026-09-08 03:26:53 Modal2 closes on Escape key
feat:71f370968 2026-09-08 03:23:17 authors re-render loop — split effects, init guard, stable search state
fix:db24a9d08 2026-09-08 03:18:06 authors re-render loop — memoize fetchAuthors with useCallback, add initialAuthors dep
fix:7ac04d412 2026-09-08 03:14:23 treat collectionName as string prop, not function
fix:3037a2231 2026-09-08 03:12:54 restore valid Modal2 component (remove stray export default mid-function)
fix: