Marketing and company site for Valory: homepage, news/blog, legal pages. Built with Next.js and content from a backend CMS.
- Next.js 15 (Pages Router), React, TypeScript, Tailwind CSS.
- CMS: Blog posts and images are served from a Strapi-compatible backend. The client fetches content via
utils/api(getPosts,getPost), which hits the Strapi REST API directly at${NEXT_PUBLIC_CMS_URL}/api/posts.Post.find/findOneandUpload.findare enabled on Strapi's Public role, so no auth header is sent.NEXT_PUBLIC_CMS_URLis also used to build image URLs. Image domains for the CMS are configured innext.config.ts. - Dynamic posts: List at
/post, single post at/post/[id]whereidis the post’sfilename. All post data is loaded client-side from the CMS. - Middleware: Redirects users from certain regions (by
x-vercel-ip-region) to/restricted; static and API paths are excluded.
For more detail (paths, types, conventions), see CLAUDE.md.
# Install
yarn install
# Copy env and set CMS URL
cp env.example .env
# Edit .env: NEXT_PUBLIC_CMS_URL
# Run dev server
yarn devOpen http://localhost:3000.
| Command | Description |
|---|---|
yarn dev |
Development server |
yarn build |
Production build (includes next-sitemap) |
yarn start |
Run production server |
yarn lint |
Run ESLint |
See CONTRIBUTING.md for workflow, branch naming, and PR process.
The app is deployable to Vercel. Set NEXT_PUBLIC_CMS_URL in the project environment.