# Project Rules

## Architecture
- Electron typescript/react app is in `js/desktop` folder
- Mobile react native expo app is in `js/mobile`
- Orion is the api server which lives in the `go/` folder along with other workers, jobs, services
- `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. Feel free to move stuff around to make things more elegant, instead of bolting on features.

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.

### Comments
Don't add non-essential comments everywhere. Clean them up if so.

### 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.
