Review: Remove Tailwind, implement plain CSS design system
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
All required sections present per template-issue-feature.
Traceability
- [x] story:sso-gateway label -- "Single login grants access to all platform tools"
- [x] story note verified -- sso-gateway entry found in project-pal-enterprises user-stories table (Story Note column reads "TBD" but table entry exists)
- [x] arch:rails-app label -- Rails application component
- [ ] arch note MISSING -- [SCOPE] Create architecture note arch-rails-app for the Rails application component. Searched pal-e-docs for "arch-rails-app", no matching note found.
- [x] Forgejo issue -- ldraney/pal-enterprises#10, state: open
File Targets
Files to modify (all verified to exist):
- [x]
Gemfile-- verified: containsgem "tailwindcss-rails"at line 18 - [x]
app/assets/stylesheets/application.css-- verified: exists, will be rewritten with design system - [x]
app/views/layouts/application.html.erb-- verified: contains ~15 Tailwind utility classes (bg-gray-50, text-indigo-600, shadow, etc.) - [x]
app/views/pages/home.html.erb-- verified: contains ~20 Tailwind utility classes across hero, cards, and headings - [x]
app/views/contacts/new.html.erb-- verified: contains Tailwind classes (max-w-lg, text-3xl, etc.) - [x]
app/views/contacts/_form.html.erb-- verified: heavily Tailwind-styled form with ~25 utility classes - [x]
app/views/sessions/new.html.erb-- verified: Tailwind classes on Keycloak sign-in button and layout - [x]
app/views/dashboard/index.html.erb-- verified: grid layout, cards, borders all use Tailwind utilities - [x]
Procfile.dev-- verified: containscss: bin/rails tailwindcss:watchat line 2 - [x]
README.md-- verified: exists
Files to delete (all verified to exist):
- [x]
app/assets/tailwind/application.css-- verified: contains@import "tailwindcss" - [x]
app/assets/builds/tailwind.css-- verified: contains compiled Tailwind v4.2.4 output
Files to NOT touch (verified no changes needed):
- [x]
Dockerfile-- no tailwind references found - [x]
config/-- no tailwind references found
Repo Placement
OK. Issue filed on ldraney/pal-enterprises, all file targets are within the same repo. Single-repo change, no cross-repo concerns.
Dependencies
No blocking dependencies found on the board. This ticket is in backlog alongside other backlog items. The ticket references the ror-css-guide repo as a CSS conventions reference -- the agent will need to read that repo during implementation. No board items are blocked by this ticket, and this ticket is not blocked by any in-progress items.
Acceptance Criteria
9 acceptance criteria, all verifiable:
- [x] "Zero Tailwind dependencies" -- grep-verifiable
- [x] "All colors use var(--token)" -- grep-verifiable (no hardcoded hex outside :root)
- [x] "CSS comments mark component boundaries" -- grep-verifiable
- [x] "Mobile-first layout at 390px, desktop breakpoint at 600px" -- visually verifiable
- [x] "Production Docker build serves styled pages" -- build-verifiable
- [x] "Flash messages styled for notice and alert" -- visually verifiable
- [x] "Landing page has hero, feature cards, and contact form" -- visually verifiable
- [x] "Login page renders the Keycloak sign-in button" -- visually verifiable
- [x] "Dashboard page renders styled" -- visually verifiable
All criteria are testable. The Docker build command is provided in Test Expectations.
Blast Radius
Low. This is a single Rails app with no downstream CSS consumers. No sibling services share these stylesheets. The layout and view changes are self-contained. The only external reference is the ror-css-guide conventions repo, which is read-only input.
Decomposition Assessment
10 file targets in 1 repo, 9 acceptance criteria. This technically exceeds the 5-minute rule thresholds (>5 AC). However, the changes are tightly coupled -- removing Tailwind and replacing with semantic CSS is a single atomic operation. Decomposing would create artificial boundaries (e.g., "remove Tailwind" vs "add CSS" would conflict on every file). The work is mechanical: strip utility classes, write semantic classes, build one CSS file. Estimated agent time: 5-10 minutes. No decomposition recommended despite the size, given the tight coupling.
Recommendations
- [SCOPE] Create architecture note
arch-rails-appfor the Rails application component. Thearch:rails-applabel is used on 9 board items but has no backing architecture note in pal-e-docs.