Filenames
By default, filenames should match the name of the declaration being exported, but in kebab-case. Common exceptions include:
Page-related files
page.tsx, layout.tsx(filenames are lowercase)
Types/Interfaces
the file is often named
types.tsand will export multiple local types
Schemas
the file is often named
schemas.tsand will export multiple local schemas
Constants
the file is often named
constants.tsand will export multiple local constants
Pages
We follow the NextJS v13+ folder structure [1][2]
layout.tsx
Filename:
layout.tsx
Declaration:
export default function Layout() {...}
Location:
~/pages/x/layout.tsx
page.tsx
Filename:
page.tsx
Declaration:
export default function Page() {...}
Location:
~/pages/x/page.tsx
Components
kebab-case, .tsx
Components
Filename:
noun-adjective.tsx
Declaration:
export function NounAdjective() {...}
Location:
database-related: components/database folder
~/components/database/x/_components/...Learn more about the "database folder" system
reusable/app-wide:
Storybookized: components/storybook folder
~/components/storybook/noun-adjective/noun-adjective.tsx// TODO: Learn more about Storybookizing components here
Non-Storybookized: components folder
standalone, simple:
~/components/noun-adjective.tsx
standalone, complex:
~/components/noun-adjective/noun-adjective.tsxLearn more about "component folders" here
folder of related components:
~/components/related-components/noun-adjective.tsx
local: _components folder
component-folder/_components/noun-adjective.tsxLearn more about "local" components here
Non-Components
kebab-case, .ts (generally)
Helper functions
Filename:
function-name.ts(.tsxas needed)
Declaration:
export function functionName() {...}
Location:
reusable/app-wide: helpers folder
~/helpers/function-name.ts
local: _lib folder
component-folder/_lib/function-name.ts
Hooks
Filename:
use-x.ts(.tsxas needed)
Declaration:
export function useX() {...}
Location:
reusable/app-wide: hooks folder
~/hooks/use-x.ts
local: _lib folder
component-folder/_lib/use-x.ts
Types/Interfaces
Filename:
types.ts
Declaration:
database-related:
export type TDoc = ...
exported props:
export interface ComponentProps {...}
all other:
export interface TRelevantName {...}
Location:
database-related: "router" folder
~/api/routers/x/types.ts
reusable/app-wide: types folder
~/types/x/types.ts
local: _lib folder
component-folder/_lib/types.ts
Schemas
Filename:
schemas.ts
Declaration:
database-related:
FE:
schema, schemaCreate, schemaUpdateBE:
schemaBE, schemaBECreate, schemaBEUpdate
all other:
export const schemaX = {...}
Location:
database-related "router" folder
~/api/routers/x/schemas.ts)
reusable/app-wide: schemas folder
~/schemas/x/schemas.ts)
local: _lib folder
component-folder/_lib/schemas.ts
Last updated