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
Recent frontend development is centered on enhancing collection page performance and search engine optimization, with work to parallelize loader fetches across slug types, fix collection slug resolution logic, and add correct structured metadata like collection breadcrumb JSON-LD. The team is also iterating on sitemap infrastructure to support per-chain collection splits and locale variants, while addressing SSR hydration and client-side routing edge cases to eliminate unnecessary refetches and improve page load reliability.
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
83b209def 2026-08-24 23:07:24
commit/push latest sitemaps2c2c511d0 2026-08-24 04:14:50
fix(client): rewrite non-locale URL on hydration to prevent redirect refetchf6ecdb7e2 2026-08-24 03:48:57
fix(sitemap): keep locale variants in static sitemap, simplify rendererce51cd942 2026-08-24 03:45:45
feat(sitemap): split collection sitemaps per chain, use JSON chainData981f0b103 2026-08-24 00:59:57
perf(collection): parallelize loader fetches for all slug types via backend slug resolution1dfaae4c5 2026-08-24 00:53:15
perf(collection): parallelize loader fetches for numeric collection slugs9bb215065 2026-08-24 00:46:54
fix(collection): trust loader-provided NFTs to avoid redundant initial refetch7d7a7021d 2026-08-24 00:41:33
fix(collection): pass resolved numeric collection id, not slug, to searchNFTs0a3616a76 2026-08-23 22:15:53
fix(collection): improve breadcrumb chain label and valid JSON-LD SEO data8fddb0e10 2026-08-23 22:11:48 restore breadcrumb JSON-LD on collection pages
fix:6a64c4c45 2026-08-23 21:49:53 update sitemaps, style.css, and add favicon
chore:259b07185 2026-08-23 21:48:04
feat(ssr): hydrate loader and API responses from SSR into clientbc29dffcf 2026-08-23 21:36:19
fix(metadata): include chain segment in collection breadcrumb JSON-LDa6e692ec6 2026-08-23 21:26:26
fix(metadata): add collection breadcrumb JSON-LD and fix SSR metadata emissionf784722ad 2026-08-23 21:11:21
fix(metadata): emit dynamic page metadata in SSR and add collection breadcrumb JSON-LDd25af4ecc 2026-08-23 18:41:09 branch collInfo lookup by slug type in collection// route
feat:a10ea3fd4 2026-08-23 18:36:24 align getCollectionInfo API with backend collInfo contract
feat:33fc1046d 2026-08-23 18:20:55 slugify chain segment in collection card links
fix:ae92bc1c5 2026-08-23 18:16:07 use chain + canonicalName collection links in SecCollectionList
fix:be4888fb2 2026-08-23 16:44:23 set collections page size to 24 and rebuild sitemaps
chore:e1d10faba 2026-08-23 16:42:25 increase collections page size to 26
chore:a21629d11 2026-08-23 16:40:44 pass chainId to search backend and update pagination UI
fix:7e482eb7d 2026-08-23 16:23:08 add TODO.md and wire it into AGENTS.md conventions
chore:3ca396c80 2026-08-20 17:09:39 update Monad testnet/mainnet chain data from official docs/RPC
chore:09a7de22e 2026-08-20 01:18:56 expose mariadb on 0.0.0.0 with firewall allowlist for tailscale0 and lo
feat: