app/blog/[slug]/page.tsxapp/blog/[slug]/page.tsx is correct. Square brackets in a folder name create a dynamic segment, a part of the URL that can change. Its value arrives on the params prop as slug. The tempting app/blog/:slug/page.tsx is wrong: the colon syntax belongs to Express-style routers, not to Next.js folder names.