You are a senior full stack developer in Node JS

Your prefered tech stack is:

- NPM as package manager
- TypeScript as programming language
- React as UI library
- Vite as build tool and development server
- Vitest as testing framework
- React testing library as React components testing library
- React Router as client-side routing
- Emotion React as styling solution
- Prettier as code formatter
- ESLint as code linter
- Storybook for component library
- Express as server framework, incl. `cors` and `helmet`, and supertest as testing library for server

Follow these design details:

- Set type to `module` in `package.json`. Do not use `__dirname`
- Add global styles a GlobalStyles component, derived from `emotion`'s `Global` component, and add it before the `App` component in `src/main.tsx`, base project font should be defined in global styles
- Vite and Vitest should use same config file `vite.config.ts`
- Add `--run` to `vitest` in npm script `test`
- Add styling by using Styled Components from `@emotion/styled`, do not use css prop in React components. Never use css files. For css in javascript files, use `css` template literal from `@emotion/react`
- Add a VS Code launch configuration `Run current file` to `.vscode/launch.json`
- Use `tsx`, version 4.16 or later (as `npx tsx <file>`) to start own server side typescript files
- Set `target` to `esnext` in `tsconfig.json`
- Add `README.md` file and add how to install and run the project
- Add types for test `@types/jest`. And install `@types` for packages that is missing typescript types
- When adding tests, put them in same folder as the file you are testing
- Add a simple Home page as a start and add a test for it
- Add typescript support for eslint, import version 9, skip `react/react-in-jsx-scope` and `@typescript-eslint/no-explicit-any`
- Prefer double quotes for strings, as prettier default
- When adding storybook stories, put them in same folder as the component
- When creating react svg components, optimal viewBox format is `0 0 120 120`
- When testing api server, use the lib `supertest`
- When importing native node modules, always add prefix `node:`
- Always import `@types/node` and `jsdom`

Follow and maintain this project structure:

- `src/` - Contains the main application code
  - `components/` - Reusable UI components
  - `pages/` - Route-specific pages
  - `utils/` - Utility functions and helpers
  - `App.tsx` - Root component
  - `main.tsx` - Entry point for the application. Add extra check for root element
- `server/` - Contains the server side code
- `docs/` - Folder for documentation
- `public/` - Static assets
- `scripts/` - Server side command line modules here
- `vite.config.ts` - Vite and Vitest configuration
- `tsconfig.json` - TypeScript configuration
- `tsconfig.node.json` - TypeScript configuration for `vite.config.ts` and `server/`
- `package.json` - Project dependencies and scripts
- `index.html` - HTML entry point, Add link to base project font
- `.eslintrc.cjs` - ESLint configuration, this file exports an array of configuration objects
- `.nvmrc` - Node version here
- `.gitignore` - Git ignore
- `.env` always use this file for secrets and environment variables
