Overview: Where Development Is Heading
Recent development is focused on maturing the chainWatch backfill pipeline, with new backfill execution modes, IPFS/HTTP image rewriting to CDN, granular per-chain and IPFS.io rate limiting, and persistent storage of learned contract selectors to improve metadata ingestion reliability and performance. Parallel work is refining NFT metadata API endpoints to support flexible canonical name and chain slug inputs, fixing edge cases in collection filtering and slug resolution, while also strengthening infrastructure through separated per-chain Blockscout caches, hardened IPFS request handling, and non-fatal database write error handling.
Overview: Where Development Is Heading
Recent frontend development is centered on two key priorities: refining the initial app loading experience and enforcing consistent, style-guide-aligned UI across all pages. The team has replaced the legacy React preloader with a static, style-guide-matched loader, fixed full-viewport positioning for loader shell header/footer elements, and migrated error and 404 pages to use official design tokens instead of custom gradients and overridden legacy styles, while also resolving critical SSR meta injection and missing dependency issues to stabilize core functionality.
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
b1827995f 2026-09-09 02:47:29 restore missing placeholder in index.html so SSR meta/JSON-LD injects correctly
fix:c6f4d7221 2026-09-08 22:33:57 inline background styling on body element (SVG pattern)
fix:c006a588f 2026-09-08 22:29:44 remove mock footer from loader; header now inside loader-shell for removal on mount
fix:68f91bc04 2026-09-08 22:28:16 scope navbar hide-on-scroll to its own header (not loader header) via closest(workdir:/home/jp/IdeaProjects/viri-nft-market}
fix:320dc1f90 2026-09-08 22:27:05 header and footer both inside loader-shell with fixed positioning for full-width, removed on app mount
fix:0ca30ddcf 2026-09-08 22:25:22 keep loader footer inside loader-shell but full-viewport via fixed positioning
fix:8bb9287b0 2026-09-08 22:22:56 footer and header fixed-position width 100% for full viewport (loader-headers)
fix:5d9ab7aa8 2026-09-08 22:09:51 replace pre-loader with static style-guide loader page (mock header/footer, card, loading bar)
feat:2b0792dea 2026-09-08 21:27:34 replace pre-react preloader with static style-guide loader page
fix:123c0329b 2026-09-08 18:34:16 restore style.css import (bootstrap grid classes required for layout)
fix:39a6db959 2026-09-08 18:28:57 install missing underscore dependency
fix:eea1c0159 2026-09-08 18:28:01 lockfile and sitemap updates from build
chore:c1a19fee0 2026-09-08 18:25:45 remove legacy style.css import (overrides style guide button/card tokens)
fix:79510c5ab 2026-09-08 18:01:34 bump @byteone/web3-style-guide to ^0.2.2
chore:bae7038bb 2026-09-08 18:00:31 clarify CSS sync targets repo ~/IdeaProjects/web3-style-guide/ not node_modules
docs:2ed03636a 2026-09-08 17:45:59 add note to AGENTS.md about syncing CSS changes to @byteone/web3-style-guide NPM package
docs:eecd90067 2026-09-08 17:44:22 add .pixel-btn-secondary style guide class; use for Go Back button on 404 page
feat:85d05d29f 2026-09-08 17:42:22 remove gradients from error pages, use style guide tokens (pixel-btn, pixel-btn-outline, no bg-clip/linear-gradient)
style:0ef2da88b 2026-09-08 17:34:58 align -not-found.tsx with -errorComponent.tsx (pixel-card, pixel-btn, gradient helpers, Continue/Go Back buttons)
style:505128048 2026-09-08 17:34:05 add notFoundComponent to $locale layout so dead /en/ renders styled NotFound page
fix:214faaa77 2026-09-08 17:22:48 restore __root.tsx from origin/hermes — fix broken NotFound import and missing errorComponent
fix:29ac3ed69 2026-09-08 17:14:48
Merge branch 'ui-exp' into hermes0a89396ec 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: