Overview: Where Development Is Heading
The backend is focused on hardening and scaling its multi-chain blockchain data ingestion and querying capabilities, with recent work centering on the chainWatch backfill pipeline. Recent improvements add configurable backfill modes with inline asset rewriting to CDN, granular per-chain and IPFS.io rate limiting with duplicate CID fetch caching, and persistent storage for learned contract signatures to cut down on redundant metadata lookups. Parallel efforts are refining NFT and collection query endpoints to support canonical name and chain slug inputs, fixing resolution edge cases, and cleaning up unused server routes alongside database schema tweaks to support larger supply values and non-fatal ingest writes.
Overview: Where Development Is Heading
Recent frontend development is centered on improving collection page performance, reliability, and SEO, with optimizations like parallelized loader fetches, corrected chain-aware slug and ID handling to cut redundant data refetches, and fixed SSR hydration to avoid unnecessary redirect-triggered revalidation. The team is also prioritizing discoverability and metadata accuracy, with updates to collection page JSON-LD breadcrumb data, restructuring of sitemaps to retain locale variants and split per blockchain chain, and alignment of collection info APIs with backend contracts.
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: