Rails 8 app scaffold + Dockerfile + CI pipeline #10

Open
opened 2026-06-19 04:22:20 +00:00 by ldraney · 3 comments
Owner

Type

Feature

Lineage

Foundation ticket — all vibe pages and deployment depend on this. No blockers.

Repo

ldraney/my-vibes-world

User Story

As a developer, I can run bin/rails server and see a working Rails 8 app with Hotwire, Importmap, and Propshaft configured, so I can build vibe pages on the correct stack.

Context

The repo currently has only documentation. This ticket creates the Rails 8 application foundation that all vibe pages will be built on. Must match the landscaping-assistant stack: Rails 8 + Hotwire (Turbo + Stimulus) + Importmap Rails + Propshaft + Puma.

File Targets

  • Gemfile, Gemfile.lock
  • config/ (Rails config, database.yml, routes.rb, importmap.rb, puma.rb)
  • app/ (controllers, views, layouts, javascript, assets)
  • db/ (schema)
  • Dockerfile (ruby-rails-build base image from Harbor, Puma, production config)
  • .woodpecker.yaml (CI: build Docker image, push to Harbor)
  • bin/ (rails, setup, dev)

Feature Flag

No

Test Expectations

  • bin/rails server starts Puma on port 3000
  • Root route renders a page
  • docker build succeeds using Harbor base image
  • Woodpecker CI pipeline builds and pushes image
  • Importmap includes Tone.js pin
  • Stimulus is configured and loads

Acceptance Criteria

  • Gemfile includes rails 8, turbo-rails, stimulus-rails, importmap-rails, propshaft, puma
  • bin/rails server boots on port 3000
  • Root route exists (simple landing or redirect)
  • Application layout (application.html.erb) includes Turbo and Stimulus
  • importmap.rb pins Tone.js and @hotwired/turbo-rails, @hotwired/stimulus
  • Propshaft serves assets correctly
  • Dockerfile builds with harbor.tail5b443a.ts.net/library/ruby-rails-build:latest base
  • .woodpecker.yaml pipeline: build → push to Harbor
  • .gitignore updated for Rails conventions (log/, tmp/, db/*.sqlite3, etc.)

Constraints

  • No vibe pages in this ticket — just the scaffold
  • Must match landscaping-assistant stack conventions
  • Database: SQLite for dev
  • No authentication or user model

Checklist

  • Rails app generated and configured
  • Gemfile locked with correct dependencies
  • Dockerfile created and builds
  • Woodpecker CI pipeline configured
  • Importmap configured with Tone.js
  • App boots cleanly on port 3000
  • my-vibes-world project
  • arch-vibe-pages architecture note
### Type Feature ### Lineage Foundation ticket — all vibe pages and deployment depend on this. No blockers. ### Repo `ldraney/my-vibes-world` ### User Story As a developer, I can run `bin/rails server` and see a working Rails 8 app with Hotwire, Importmap, and Propshaft configured, so I can build vibe pages on the correct stack. ### Context The repo currently has only documentation. This ticket creates the Rails 8 application foundation that all vibe pages will be built on. Must match the landscaping-assistant stack: Rails 8 + Hotwire (Turbo + Stimulus) + Importmap Rails + Propshaft + Puma. ### File Targets - Gemfile, Gemfile.lock - config/ (Rails config, database.yml, routes.rb, importmap.rb, puma.rb) - app/ (controllers, views, layouts, javascript, assets) - db/ (schema) - Dockerfile (ruby-rails-build base image from Harbor, Puma, production config) - .woodpecker.yaml (CI: build Docker image, push to Harbor) - bin/ (rails, setup, dev) ### Feature Flag No ### Test Expectations - `bin/rails server` starts Puma on port 3000 - Root route renders a page - `docker build` succeeds using Harbor base image - Woodpecker CI pipeline builds and pushes image - Importmap includes Tone.js pin - Stimulus is configured and loads ### Acceptance Criteria - [ ] Gemfile includes rails 8, turbo-rails, stimulus-rails, importmap-rails, propshaft, puma - [ ] `bin/rails server` boots on port 3000 - [ ] Root route exists (simple landing or redirect) - [ ] Application layout (application.html.erb) includes Turbo and Stimulus - [ ] importmap.rb pins Tone.js and @hotwired/turbo-rails, @hotwired/stimulus - [ ] Propshaft serves assets correctly - [ ] Dockerfile builds with `harbor.tail5b443a.ts.net/library/ruby-rails-build:latest` base - [ ] .woodpecker.yaml pipeline: build → push to Harbor - [ ] .gitignore updated for Rails conventions (log/, tmp/, db/*.sqlite3, etc.) ### Constraints - No vibe pages in this ticket — just the scaffold - Must match landscaping-assistant stack conventions - Database: SQLite for dev - No authentication or user model ### Checklist - [ ] Rails app generated and configured - [ ] Gemfile locked with correct dependencies - [ ] Dockerfile created and builds - [ ] Woodpecker CI pipeline configured - [ ] Importmap configured with Tone.js - [ ] App boots cleanly on port 3000 ### Related - `my-vibes-world` project - `arch-vibe-pages` architecture note
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-1517-2026-06-18
Template complete, story traced, file targets valid for greenfield scaffold, acceptance criteria all agent-testable, no decomposition needed. Two issues found:

  • [SCOPE] Architecture note arch-vibe-pages does not exist in pal-e-docs. The board item carries the arch:vibe-pages label and the issue references it in Related, but there is no backing note. Create arch-vibe-pages to document the vibe-pages component architecture.
  • [BODY] Minor: issue says .woodpecker.yml but platform convention (landscaping-assistant) uses .woodpecker.yaml. Consider updating for consistency.
## Scope Review: NEEDS_REFINEMENT Review note: `review-1517-2026-06-18` Template complete, story traced, file targets valid for greenfield scaffold, acceptance criteria all agent-testable, no decomposition needed. Two issues found: - **[SCOPE]** Architecture note `arch-vibe-pages` does not exist in pal-e-docs. The board item carries the `arch:vibe-pages` label and the issue references it in Related, but there is no backing note. Create `arch-vibe-pages` to document the vibe-pages component architecture. - **[BODY]** Minor: issue says `.woodpecker.yml` but platform convention (landscaping-assistant) uses `.woodpecker.yaml`. Consider updating for consistency.
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-1517-2026-06-19
Well-structured feature ticket with all template sections present, but triggers decomposition due to scope size.

  • [SCOPE] Architecture note arch-vibe-pages does not exist in pal-e-docs — create it to complete traceability.
  • [BODY] Add dependency note for board item #1519 (port 80→3000 overlay) to Related section.
  • [DECOMPOSE] 9 AC across 7+ file target groups, estimated >5 min agent work. Route to skill-decompose-ticket. Suggested split: (1) Rails 8 scaffold + Gemfile + core config, (2) Dockerfile + Woodpecker CI pipeline, (3) Importmap + Tone.js + Stimulus wiring.
## Scope Review: NEEDS_REFINEMENT Review note: `review-1517-2026-06-19` Well-structured feature ticket with all template sections present, but triggers decomposition due to scope size. - **[SCOPE]** Architecture note `arch-vibe-pages` does not exist in pal-e-docs — create it to complete traceability. - **[BODY]** Add dependency note for board item #1519 (port 80→3000 overlay) to Related section. - **[DECOMPOSE]** 9 AC across 7+ file target groups, estimated >5 min agent work. Route to `skill-decompose-ticket`. Suggested split: (1) Rails 8 scaffold + Gemfile + core config, (2) Dockerfile + Woodpecker CI pipeline, (3) Importmap + Tone.js + Stimulus wiring.
Author
Owner

Scope Review: READY

Review note: review-1517-2026-06-18
Scope is solid. All template sections present, traceability triangle complete (story:create-vibe verified on project page, arch-vibe-pages note confirmed in pal-e-docs). Greenfield scaffold — no file conflicts, no decomposition needed. 9 ACs all agent-verifiable. Foundation ticket with clear downstream dependents.

## Scope Review: READY Review note: `review-1517-2026-06-18` Scope is solid. All template sections present, traceability triangle complete (story:create-vibe verified on project page, arch-vibe-pages note confirmed in pal-e-docs). Greenfield scaffold — no file conflicts, no decomposition needed. 9 ACs all agent-verifiable. Foundation ticket with clear downstream dependents.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/my-vibes-world#10
No description provided.