Upload tab: snap and store schedule paper photo in MinIO #33

Closed
opened 2026-05-25 04:27:07 +00:00 by ldraney · 0 comments
Owner

Type

Feature

Lineage

Standalone — discovered during daily usage. Lucas needs a quick way to capture the paper schedule and reference it later.

Repo

ldraney/landscaping-assistant

User Story

As a landscaping crew lead
I want to take a photo of the schedule paper and upload it from the app
So that I can reference it later without carrying the paper around

Context

The weekly schedule is handed out on paper. Lucas needs a dead-simple way to snap a photo and stash it so he (or Ava) can pull it up later in conversation. MinIO is already available on the cluster. This is intentionally minimal — no OCR, no parsing, just upload and view.

File Targets

Files the agent should modify or create:

  • app/views/ -- new Upload tab view (file picker + camera capture)
  • app/controllers/ -- controller for upload/list/show
  • app/models/ -- ActiveStorage or direct MinIO integration
  • config/routes.rb -- routes for the upload tab
  • config/storage.yml -- MinIO bucket config if using ActiveStorage

Files the agent should NOT touch:

  • Existing tab views (Today, Week, Properties) -- no changes needed

Acceptance Criteria

  • New "Upload" tab appears in the bottom nav
  • Tapping the tab shows a simple upload interface (file picker or camera)
  • Photo uploads to MinIO bucket successfully
  • Uploaded photos are listed and viewable from the tab
  • Works on mobile (camera capture via <input type="file" capture="environment">)

Test Expectations

  • Unit test: upload controller creates blob and stores in MinIO
  • Integration test: end-to-end upload and retrieval
  • Run command: bin/rails test

Constraints

  • Use ActiveStorage with MinIO S3-compatible backend (simplest path)
  • Keep the UI minimal — no gallery features, just upload + list + view
  • No Tailwind
  • Mobile-first: camera capture should be the primary input method

Checklist

  • PR opened
  • Tests pass
  • No unrelated changes
  • landscaping-assistant -- project this affects
### Type Feature ### Lineage Standalone — discovered during daily usage. Lucas needs a quick way to capture the paper schedule and reference it later. ### Repo `ldraney/landscaping-assistant` ### User Story As a landscaping crew lead I want to take a photo of the schedule paper and upload it from the app So that I can reference it later without carrying the paper around ### Context The weekly schedule is handed out on paper. Lucas needs a dead-simple way to snap a photo and stash it so he (or Ava) can pull it up later in conversation. MinIO is already available on the cluster. This is intentionally minimal — no OCR, no parsing, just upload and view. ### File Targets Files the agent should modify or create: - `app/views/` -- new Upload tab view (file picker + camera capture) - `app/controllers/` -- controller for upload/list/show - `app/models/` -- ActiveStorage or direct MinIO integration - `config/routes.rb` -- routes for the upload tab - `config/storage.yml` -- MinIO bucket config if using ActiveStorage Files the agent should NOT touch: - Existing tab views (Today, Week, Properties) -- no changes needed ### Acceptance Criteria - [ ] New "Upload" tab appears in the bottom nav - [ ] Tapping the tab shows a simple upload interface (file picker or camera) - [ ] Photo uploads to MinIO bucket successfully - [ ] Uploaded photos are listed and viewable from the tab - [ ] Works on mobile (camera capture via `<input type="file" capture="environment">`) ### Test Expectations - [ ] Unit test: upload controller creates blob and stores in MinIO - [ ] Integration test: end-to-end upload and retrieval - Run command: `bin/rails test` ### Constraints - Use ActiveStorage with MinIO S3-compatible backend (simplest path) - Keep the UI minimal — no gallery features, just upload + list + view - No Tailwind - Mobile-first: camera capture should be the primary input method ### Checklist - [ ] PR opened - [ ] Tests pass - [ ] No unrelated changes ### Related - `landscaping-assistant` -- project this affects
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/landscaping-assistant#33
No description provided.