Browse Source
* chore: init CLAUDE.md * Add Copilot instructions * update gitignore * simplify --------- Co-authored-by: Mark Tolmacs <mark@lazycat.hu>pull/9561/merge
3 changed files with 81 additions and 1 deletions
@ -0,0 +1,45 @@ |
|||||||
|
# Project coding standards |
||||||
|
|
||||||
|
## Generic Communication Guidelines |
||||||
|
|
||||||
|
- Be succint and be aware that expansive generative AI answers are costly and slow |
||||||
|
- Avoid providing explanations, trying to teach unless asked for, your chat partner is an expert |
||||||
|
- Stop apologising if corrected, just provide the correct information or code |
||||||
|
- Prefer code unless asked for explanation |
||||||
|
- Stop summarizing what you've changed after modifications unless asked for |
||||||
|
|
||||||
|
## TypeScript Guidelines |
||||||
|
|
||||||
|
- Use TypeScript for all new code |
||||||
|
- Where possible, prefer implementations without allocation |
||||||
|
- When there is an option, opt for more performant solutions and trade RAM usage for less CPU cycles |
||||||
|
- Prefer immutable data (const, readonly) |
||||||
|
- Use optional chaining (?.) and nullish coalescing (??) operators |
||||||
|
|
||||||
|
## React Guidelines |
||||||
|
|
||||||
|
- Use functional components with hooks |
||||||
|
- Follow the React hooks rules (no conditional hooks) |
||||||
|
- Keep components small and focused |
||||||
|
- Use CSS modules for component styling |
||||||
|
|
||||||
|
## Naming Conventions |
||||||
|
|
||||||
|
- Use PascalCase for component names, interfaces, and type aliases |
||||||
|
- Use camelCase for variables, functions, and methods |
||||||
|
- Use ALL_CAPS for constants |
||||||
|
|
||||||
|
## Error Handling |
||||||
|
|
||||||
|
- Use try/catch blocks for async operations |
||||||
|
- Implement proper error boundaries in React components |
||||||
|
- Always log errors with contextual information |
||||||
|
|
||||||
|
## Testing |
||||||
|
|
||||||
|
- Always attempt to fix #problems |
||||||
|
- Always offer to run `yarn test:app` in the project root after modifications are complete and attempt fixing the issues reported |
||||||
|
|
||||||
|
## Types |
||||||
|
|
||||||
|
- Always include `packages/math/src/types.ts` in the context when your write math related code and always use the Point type instead of { x, y} |
||||||
@ -0,0 +1,34 @@ |
|||||||
|
# CLAUDE.md |
||||||
|
|
||||||
|
## Project Structure |
||||||
|
|
||||||
|
Excalidraw is a **monorepo** with a clear separation between the core library and the application: |
||||||
|
|
||||||
|
- **`packages/excalidraw/`** - Main React component library published to npm as `@excalidraw/excalidraw` |
||||||
|
- **`excalidraw-app/`** - Full-featured web application (excalidraw.com) that uses the library |
||||||
|
- **`packages/`** - Core packages: `@excalidraw/common`, `@excalidraw/element`, `@excalidraw/math`, `@excalidraw/utils` |
||||||
|
- **`examples/`** - Integration examples (NextJS, browser script) |
||||||
|
|
||||||
|
## Development Workflow |
||||||
|
|
||||||
|
1. **Package Development**: Work in `packages/*` for editor features |
||||||
|
2. **App Development**: Work in `excalidraw-app/` for app-specific features |
||||||
|
3. **Testing**: Always run `yarn test:update` before committing |
||||||
|
4. **Type Safety**: Use `yarn test:typecheck` to verify TypeScript |
||||||
|
|
||||||
|
## Development Commands |
||||||
|
|
||||||
|
```bash |
||||||
|
yarn test:typecheck # TypeScript type checking |
||||||
|
yarn test:update # Run all tests (with snapshot updates) |
||||||
|
yarn fix # Auto-fix formatting and linting issues |
||||||
|
``` |
||||||
|
|
||||||
|
## Architecture Notes |
||||||
|
|
||||||
|
### Package System |
||||||
|
|
||||||
|
- Uses Yarn workspaces for monorepo management |
||||||
|
- Internal packages use path aliases (see `vitest.config.mts`) |
||||||
|
- Build system uses esbuild for packages, Vite for the app |
||||||
|
- TypeScript throughout with strict configuration |
||||||
Loading…
Reference in new issue