Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 23 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The documentation of Cloudsmith.

## Getting Started
## Contributor Guides

If you are first getting started, please read the following guide:

Expand All @@ -15,15 +15,15 @@ Then refer to the following guides on how to manage the content of the website:
- [Editing menus](./docs/menus.md)
- [OpenAPI Schemas](./docs/schemas.md)

## Getting started
## Local Development

Make sure you’re running Node version `22.11.0` (LTS). Then install the dependencies.
Make sure you are running Node version `22.12.0` (from `.nvmrc`). Then install dependencies.

```bash
npm i
```

Next run the desired task
Then run the desired task:

```bash
# Starts app and components in dev mode
Expand All @@ -32,13 +32,13 @@ npm run dev
# Build the app
npm run build

# Build the app
# Start the production server
npm run start

# Linting everything
npm run lint

# Linting JS
# Lint JavaScript/TypeScript (ESLint flat config)
npm run lint:js

# Linting CSS
Expand All @@ -49,10 +49,24 @@ npm run lint:css:fix

# Download API schemas. Used in development mode to minimize the amount of requests to the API
npm run schemas:download

# Run test suite
npm run test
```

> [!NOTE]
> Only development mode is using Turbopack atm. This will change in the future when Turbopack supports build process. Be aware that Turbopack is the successor of Webpack meaning it's [not 1:1 compatible](https://turbo.build/pack/docs/migrating-from-webpack).
## Latest Branch Changes

This branch includes a dependency refresh and framework/tooling upgrades. Highlights:

- Next.js upgraded to 16.x and React/React DOM to 19.2.x.
- ESLint moved to flat config (`eslint.config.mjs`) and `npm run lint:js` now runs `eslint .`.
- TypeScript upgraded to 6.x, including compiler config updates for Next.js 16 (`moduleResolution: bundler`, updated includes/types).
- Shiki upgraded to 4.x, with code block styling updates.
- Video playback stack updated with a `react-player` v3 migration in `src/components/Video/Video.tsx`.
- Fixed Wistia URL compatibility in `src/components/Video/Video.tsx` to prevent `Cannot read properties of null (reading '1')` on `/developer-tools/terraform-provider`.
- API Sandbox input flow updated in `RequestBody.tsx` and `ParamInput.tsx`.
- Global/layout CSS updates in navigation, sidenav, homepage hero, background grid, and related components.
- Stylelint upgraded to 17.x with rule adjustments to preserve existing style patterns.

### Tooling

Expand All @@ -64,7 +78,7 @@ npm run schemas:download

### App

- [Next.js 15](https://nextjs.org/docs) using App Router
- [Next.js 16](https://nextjs.org/docs) using App Router

### General tooling

Expand Down
25 changes: 25 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright 2026 Cloudsmith Ltd

import nextCoreWebVitals from 'eslint-config-next/core-web-vitals';
import nextTypeScript from 'eslint-config-next/typescript';
import eslintConfigPrettier from 'eslint-config-prettier';
import { defineConfig } from 'eslint/config';

export default defineConfig([
{
ignores: ['.history/**', '.next/**', 'node_modules/**'],
},
...nextCoreWebVitals,
...nextTypeScript,
eslintConfigPrettier,
{
rules: {
'@typescript-eslint/no-namespace': 'off',
'react-hooks/refs': 'off',
'react-hooks/set-state-in-effect': 'off',
'react-hooks/static-components': 'off',
'react-hooks/use-memo': 'off',
'react-hooks/preserve-manual-memoization': 'off',
},
},
]);
12 changes: 6 additions & 6 deletions next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ const nextConfig = {
pageExtensions: ['mdx', 'tsx'],
experimental: {
optimizePackageImports: ['@/components', '@/markdown', '@/icons'],
turbo: {
rules: {
'*.svg': {
loaders: ['@svgr/webpack'],
as: '*.js',
},
},
turbopack: {
rules: {
'*.svg': {
loaders: ['@svgr/webpack'],
as: '*.js',
},
},
},
Expand Down
Loading