Cheezy World

Eat more cheese

Building a LiveView app using AI - Part 15

Polish & Enhancement

It is finally time to get back and finish phase 7 of our plan. Here is what remains:

#### Phase 7: Polish & Enhancement

- [ ] **UI/UX improvements**
  - [ ] Design beautiful board cards with Tailwind CSS
  - [ ] Add hover effects and transitions
  - [ ] Improve spacing and typography
  - [ ] Add loading states for async actions
  - [ ] Add empty states for boards without columns/tasks
- [ ] **Add notifications**
  - [ ] Use Phoenix LiveView flash messages for success/error
  - [ ] Style flash messages with Tailwind CSS
- [ ] **Add confirmation dialogs**
  - [ ] Add confirmation for board deletion
  - [ ] Add confirmation for column deletion (mention tasks will be deleted)
  - [ ] Add confirmation for task deletion
- [ ] **Error handling**
  - [ ] Add proper error messages for validation failures
  - [ ] Handle edge cases (deleting last column, etc.)
  - [ ] Add 404 pages for missing resources
- [ ] **Final Quality Checks**:
  - [ ] Run `mix test` and ensure all tests pass (510 tests, 0 failures)
  - [ ] Run `mix test --cover` and verify coverage meets threshold (94.60% coverage)
  - [ ] Run `mix credo --strict` and fix any issues (no issues found)
  - [ ] Run `mix sobelow --config` and fix any security issues (no issues found)
  - [ ] Run `mix precommit` to run all checks together (all checks passed)

Starting with UI/UX improvements

We start by asking TideWave to complete the first two tasks under UI/UX improvements. Less than five minutes later we have some sparkle.


Building a LiveView app using AI - Part 14

Cleaning up Authentication

This is the last episode before we get back to our original plan. The authentication system currently in place is what was generated by running the mix phx.gen.auth command. The styles were cleaned up a little when I asked Claude to create a nice style for the entire site. But the behaviour is the generated form and is not what I want. In part 14 we will attack this head on.


Building a LiveView app using AI - Part 13

Setting permissions for users

Currently every user can do everything in the application. A read only user can delete a board or make any type of change they want. Let’s fix that.

Focus on Owners first

First I want to focus on ensuring the board owner can do board-level actions and other users cannot. Let me start by listing out the things that only owners can do:

  • Edit and delete their boards
  • Add new columns to a board
  • Edit or delete columns from their boards
  • Reorder columns (including drag-and-drop)

I think this is a good list. Let’s ask TideWave to make these changes.


Building a LiveView app using AI - Part 12

Adding users to boards and tasks

Since the announcement of Claude Code running inside of Tidewave I have been extremely happy about this combo. For now I am using it for nearly all of my changes to the codebase. I have even given it a name - ClaudeWave. All of the changes in this post were done using ClaudeWave.

So far our boards only have an owner. I want an owner to have the ability to add other users to a board and also assign tasks to one of those users. Let’s get started.


Building a LiveView app using AI - Part 11

Tasked with improving Tasks

The final phase of our plan is focused on visual cleanup and better error handling. Before I focused on the visual cleanup I wanted to fill in some of the gaps that exist in our plan. I’m starting with Tasks. There are several missing features that I wanted to add to Tasks to make them more useful. This post includes those changes.

Rounding out Tasks

At this time Tasks only have a title, description, and their position in the column. This really is not enough for a serious Kanban application. I asked Claude to add the following fields: