# Project Rules

## Architecture
- Electron typescript/react app is in `js/` folder
- Orion is the api server which lives in the `go/` folder
- `cpp/` points to our prototype of a C++ Qt widgets client

Whenever implementing anything, make sure to take into account best practices without over-engineering.

## Electron App
### Quality
We care about overall architectural quality and keeping consistent patterns according to best practices.

Another tradeoff we make is simpler, maintainable code over clever behavior.

As an example, we have as high of a bar as a product team like Linear and Apple, which outputs high quality software. Let's avoid slop at all costs.

### Package Manager
- Use **yarn** (not npm) for all dependency management

### Design system
Whenever possible, we should use the design system components. If we need to add a new component from the available ones in [shadcn](https://ui.shadcn.com/docs/components), we should add it to the design system (using `shadcn add _`) and use it in the app.

### Implementation completeness
When adding a feature on the client side, make sure that the api actually supports it by just checking orion implementation all the way through.

IF you find that the API is poorly designed, please suggest changes to improve the client experience.

## Verification
Check using `yarn compile` which lives in the package.json as a script.
