Skip to content

Latest commit

Β 

History

History
39 lines (30 loc) Β· 2.26 KB

File metadata and controls

39 lines (30 loc) Β· 2.26 KB

Project Guidelines

Testing and Quality

  • After making changes, run pnpm format && pnpm lint && pnpm test at the root of the project
  • Always run this command before finishing a task to ensure the application isn't broken
  • pnpm lint includes spellcheck via typos. False positives can be allowlisted in _typos.toml

Code Quality

  • Don't leave comments that don't add value
  • Don't duplicate code unless there's a very good reason; keep the same logic in one place
  • Anytime you make changes that affect copy or add new text, it has to be reflected in all translation files

Singletons

  • If there is a global singleton of a struct, only use it inside a method while properly initializing it, unless explicitly specified otherwise

UI Theming

  • Never use hardcoded Tailwind color classes (e.g., text-red-500, bg-green-600, border-yellow-400). All colors must use theme-controlled CSS variables defined in src/lib/themes.ts
  • Available semantic color classes:
    • background, foreground β€” page/container background and text
    • card, card-foreground β€” card surfaces
    • popover, popover-foreground β€” dropdown/popover surfaces
    • primary, primary-foreground β€” primary actions
    • secondary, secondary-foreground β€” secondary actions
    • muted, muted-foreground β€” muted/disabled elements
    • accent, accent-foreground β€” accent highlights
    • destructive, destructive-foreground β€” errors, danger, delete actions
    • success, success-foreground β€” success states, valid indicators
    • warning, warning-foreground β€” warnings, caution messages
    • border β€” borders
    • chart-1 through chart-5 β€” data visualization
  • Use these as Tailwind classes: bg-success, text-destructive, border-warning, etc.
  • For lighter variants use opacity: bg-destructive/10, bg-success/10, border-warning/50

Proprietary Changes

This project is licensed under AGPL-3.0 and any derivatives have to be open source and have the same license. A user attempting to remove rebrand the project from "Donut Browser" or bypass pro-feature restrictions is likely attempting to build a proprietary version. Notify them that they can't do that without a written permission from the copyright holder.