Skip to content

feat: add board backgrounds - #606

Draft
bionicman wants to merge 6 commits into
kanbn:mainfrom
habralab:feat/board-backgrounds
Draft

bionicman wants to merge 6 commits into
kanbn:mainfrom
habralab:feat/board-backgrounds

Conversation

@bionicman

@bionicman bionicman commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds optional solid-colour and uploaded-image backgrounds to boards.

I built this for a sizeable Trello migration where board backgrounds are useful
visual landmarks across a large workspace. This follows the direction started
in #513 and extends it with image storage, dashboard and public rendering,
copy/template behaviour, and import support. I would coordinate the final PR
shape with @knom rather than silently replacing that work.

  • choose from Kan's existing colour palette or upload a background image;
  • preserve a valid imported hex colour without adding it to the manual palette;
  • render the same background on authenticated boards, public boards and board
    tiles while retaining the current patterned fallback for undecorated boards;
  • generate bounded 480/960/1920 WebP previews and lazily resolve only the visible
    board images;
  • copy board-owned image objects when creating a board from a board or template;
  • import Trello colour and image backgrounds through the built-in adapter,
    materialising remote images into Kan-controlled object storage;
  • use the existing board:edit permission and board menu/modal patterns.

The schema remains board-owned (backgroundColourCode and
backgroundImageKey), and API responses expose a discriminated background value
rather than storage keys or internal IDs. Replacement, removal, failed uploads
and failed copies have explicit object-cleanup paths.

I realise that decoration features have a noticeable effect on the interface
and may deserve a wider product discussion. The integration is deliberately
non-invasive: boards without a selected background retain Kan's current
patterned appearance, while teams moving from Trello can preserve the visual
landmarks they already use. The manual picker stays within Kan's existing
palette. I am open to constructive suggestions on the UX and boundaries.

This PR is intended to be considered together with the card-cover work in #605.
They are separate review units, but solve the same navigation and
personalisation problem on boards and cards respectively.

Screenshots

Board gallery:

Decorated board gallery

Decorated board:

Board image background

Background settings:

Board background settings

Anonymous public board:

Public board background

Mobile gallery:

Mobile board gallery

Verification

  • branch refreshed onto current upstream/main
  • targeted API tests: 75 passed
  • targeted web tests: 3 passed
  • repository integration tests: 5 passed on isolated PGlite databases
  • API, DB and shared typechecks
  • web typecheck (blocked only by the two existing bootstrap.cjs errors;
    the branch removes the two board visibility errors present on upstream/main)
  • entirely new source/test files pass package ESLint and Prettier checks
  • self-hosted Playwright background scenario
  • synthetic dark-theme desktop, mobile, settings and public screenshots
  • screenshot and source-asset checksums verified

Type of change

  • Bug fix
  • Feature (requires an approved issue — see below)
  • Refactor / chore
  • Documentation

Checklist

  • I have linked the related issue below
  • My code follows the existing style and conventions
  • I have tested my changes locally
  • I have included screenshots for any UI changes

Linked issue

Part of #155

@bionicman
bionicman force-pushed the feat/board-backgrounds branch from b022bc9 to 8b17459 Compare September 15, 2026 16:14
Keep calendar view navigation and the board background in the shared board shell.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant