   })
 
 (defn filter-by-status
+  "Filter card by status"
   [status cards]
-  (filter #(= status (:status %)) cards))
+  (filter #(= status (-> % deref :status)) cards))
 
 (defn filter-by-title
-  "Keep only cards that contains the searched string inside their title"
-  [title cards]
-  (if (empty? title)
-    cards
-    (filter #(utils/str-contains (-> % second :title) title) cards)))
+  "Return the id of the cards that contains the searched string inside their title"
+  [filter cards]
+  (->>
+    (if (empty? filter) cards
+     (filter #(utils/str-contains (-> % second :title) filter) cards))
+    (map first)
+  ))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 

(defn render-card
  ; TODO - Try to avoid the update-card! use and use messages / cursors
  ; * Fix the filter on top of the board to provide cursors down?
  [card]
  (let [show-details (::show-details card)
        toggle-details #(update-card! (update-in card [::show-details] not))
        title-style (if show-details :div.card__title--is-open :div.card__title)
        details-style (when-not show-details {:style {:display "none"}})]
    [:div.card
     [:div {:style (card-side-color card)}]
     [title-style {:on-click toggle-details} (:title card)]

  [status cards]
  [:div.list
   [:h1 (status->str status)]
   (for [c (filter-by-status status cards)]
     ^{:key (:card-id @c)} [render-card c])
  ])

(defn render-board
