Next.js: Mastering Dynamic and Catch-All Routes