Curio.today (Frontend) is a public, production-grade web application built with Next.js 16 App Router and React, written entirely in TypeScript.
The application supports multiple languages via next-intl, follows modern frontend best practices, and includes a strong testing and CI/CD setup using Jest, Playwright, and GitHub Actions.
- Next.js 16 (App Router)
- React 19
- TypeScript
- pnpm as the package manager
- next-intl for internationalization
- shadcn/ui component library
Reusable UI components based on shadcn are stored in @/components/core/*
ESLint for static code analysis and consistency
- Jest – unit and component testing
- Playwright – end-to-end (E2E) testing
The project uses next-intl to provide localized content and locale-based routing.
- Latvian
- Russian
- English
The following environment variables are required to run the project:
NEXT_PUBLIC_API_URL=<api-url>
NEXT_PUBLIC_PAYLOAD_URL=<admin-panel-url>For local development, create a .env.local file and define the variables there.
The following environment variables are required to run the project:
# This variable is used to fetch API
NEXT_PUBLIC_API_URL=<api-url>
# This variable is used to fetch admin panel without any endpoint
NEXT_PUBLIC_PAYLOAD_URL=<admin-panel-url>- Node.js v22
- pnpm
- Clone the repository
- Install dependencies using
pnpm - Start the development server using
pnpm dev - Open http://localhost:3000
The frontend runs as part of a Docker Compose setup alongside other services.
- Docker
- Docker Compose
- Build and start all services using
docker compose up --build - Access the application at http://localhost:3000
Run unit tests using:
pnpm testIf you don't have installed Playwright, install it first:
pnpm exec playwright installRun E2E tests using:
pnpm test:e2eThe project uses GitHub Actions for continuous integration and deployment.
- tests.yml – runs linting, unit tests, and E2E tests
- deploy.yml – handles deployment after successful checks
pnpm dev– start development serverpnpm build– build for productionpnpm start– start production serverpnpm lint– run ESLintpnpm test– run all (unit and e2e) testspnpm test:unit- run unit testspnpm test:e2e– run Playwright tests
This is a public repository. Contributions, issues, and feature requests are welcome.
Please ensure that:
- Code passes ESLint checks
- Tests are added or updated when relevant
MIT License