Skip to content

Add 'Your First Project' tutorial#4809

Merged
shannonbradshaw merged 64 commits intoviamrobotics:mainfrom
shannonbradshaw:stationary-vision-tutorial
Feb 2, 2026
Merged

Add 'Your First Project' tutorial#4809
shannonbradshaw merged 64 commits intoviamrobotics:mainfrom
shannonbradshaw:stationary-vision-tutorial

Conversation

@shannonbradshaw
Copy link
Collaborator

Summary

  • Adds comprehensive 6-part tutorial for building a can inspection system using Gazebo simulation
  • Part 1: Vision Pipeline (camera, ML model, vision service)
  • Part 2: Data Capture (automatic sync, alerts)
  • Part 3: Build the Inspector (Go module development)
  • Part 4: Deploy as a Module (packaging, DoCommand)
  • Part 5: Scale (fragments, fleet management)
  • Part 6: Productize (dashboard, white-label auth)
  • Includes Gazebo Harmonic Docker simulation setup guide

Test plan

  • Verify all 8 new files render correctly in Hugo
  • Check internal links between tutorial parts work
  • Verify navigation appears correctly under hello-world section
  • Confirm code samples render with proper syntax highlighting

🤖 Generated with Claude Code

A comprehensive hands-on tutorial that guides users through building
a complete Viam application using a simulated can inspection scenario:

- Part 1: Vision Pipeline - camera, ML model, and vision service setup
- Part 2: Data Capture - automatic recording and cloud sync
- Part 3: Build the Inspector - custom module development in Go
- Part 4: Deploy as a Module - packaging and deployment
- Part 5: Scale - fragments for fleet management
- Part 6: Productize - customer dashboard and white-label auth

Includes Gazebo Harmonic simulation setup guide as prerequisite.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@viambot viambot added the safe to build This pull request is marked safe to build from a trusted zone label Jan 30, 2026
@netlify
Copy link

netlify bot commented Jan 30, 2026

Deploy Preview for viam-docs ready!

Name Link
🔨 Latest commit 7306d8c
🔍 Latest deploy log https://app.netlify.com/projects/viam-docs/deploys/698049dbd39a080008d881b6
😎 Deploy Preview https://deploy-preview-4809--viam-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 44 (🟢 up 1 from production)
Accessibility: 100 (no change from production)
Best Practices: 100 (no change from production)
SEO: 92 (no change from production)
PWA: 70 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

shannonbradshaw and others added 27 commits January 30, 2026 18:55
- Remove detailed hardware table (already covered elsewhere)
- Condense intro text
- Remove simulation requirements section (covered in gazebo-setup)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Parts 1-3: ~15 min each
- Parts 4-6: ~10 min each

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use ### subheadings for sub-steps (clearer visual hierarchy)
- Split section 1.5 into 1.5 (ML Model Service) and 1.6 (Vision Service)
- Move conceptual explanations into expandable sections
- Add checkpoint after camera setup (1.4)
- Add preview list at start of ML section
- Update _index.md outline to match new structure

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update repo URL to viamrobotics/can-inspection-simulation
- Simplify credentials setup to use Machine cloud credentials copy
- Fix volume mount paths to use $(pwd) for reliable path resolution
- Add Windows port checking commands in troubleshooting
- Fix log message to match actual container output
- Use consistent "Live" terminology for machine status

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Renumber Part 1 sections after merging steps 1 and 2
- Update _index.md outline to match new section numbers
- Rename Part 4 from "Deploy as a Module" to "Deploy a Module"
- Add networking bullet point to viam-server description

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add new section 1.2 "Locate Your Machine Part" to Part 1
- Renumber subsequent sections in Part 1
- Update _index.md outline to match
- Fix bare URL in gazebo-setup.md (MD034)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update Part 5 section links in _index.md to match actual headings
- Use code formatting for localhost URL to avoid HTTPS check

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove spaces around em dashes in part-4
- Replace "via" with "through" in part-3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix double auxiliary "we've have" → "we've"
- Fix double article "the the" → "the"
- Fix incomplete sentence in vision service config
- Fix typos: Atributes, can-classifer
- Fix service name reference (can-classifier → can-model)
- Standardize: VM, ID capitalization
- Add missing comma
- Update screenshot caption to match "Live" status
- Change checkpoint alerts to success color

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert bold checkpoint to success alert
- Remove spaces around em dashes (Vale style)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Purpose info alert explaining why data capture matters
- Update Goal statement in part-1 for clarity
- Fix list numbering in part-2 (via Prettier)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change can-model to model-service
- Change can-classifier to vision-service
- Change can-detector to vision-service

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add data service step in part-2
- Rephrase to avoid em dashes for Vale compliance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add complete steps for creating data service
- Simplify vision service data capture steps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix Vale write-good.So: reword "So far" to "Up to this point"
- Fix htmltest: change localhost URL from link to inline code
- Change "blemished" to "defective" throughout tutorial

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
shannonbradshaw and others added 7 commits February 1, 2026 14:25
- Add detailed explanations for each viam module generate prompt
- Update file structure to match actual generated files (module.go not inspector.go)
- Add namespace setup instructions before module generation
- Expand file table with all generated files and accurate descriptions
- Change "Viam user interface" to "Viam app" throughout tutorial

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Split into Step 1 (connect) and Step 2 (access camera)
- Show only realMain function and imports to replace
- Add go mod tidy step for camera dependencies
- Add gofmt note for indentation
- Fix camera API: use Images() instead of deprecated Image()
- Update expected output to reflect WebRTC diagnostics
- Each step is now independently testable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update _index.md link to match renamed section anchor
  (viamrobotics#31-generate-the-module-scaffold → viamrobotics#31-generate-the-module-scaffolding)
- Replace "e.g." with "for example" per Viam style guide

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Restructure section 3.3 into 5 incremental steps following viam-chess patterns
- Adopt DoCommand pattern instead of exported interface
- Remove motor/rejector sections (3.4, 3.5) to focus on core concepts
- Remove redundant DoCommand section from Part 4
- Fix viam module upload command syntax (add --upload flag)
- Fix SQL query to use data.label instead of LIKE on JSON
- Update section numbering and index throughout

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Part 4 changes:
- Split into 4.2 Build/Upload and 4.3 Add Module sections
- Fix cross-compilation instructions with CGO_ENABLED=0 and -tags no_cgo
- Add depends_on configuration step for data manager
- Add test step using DoCommand in Configure tab
- Fix SQL queries to match actual data structure
- Update version to 0.0.1
- Clarify model terminology with info box

Parts 1 and 2:
- Add tips about exploring JSON configuration view
- Prepare readers for JSON editing in Part 4

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
shannonbradshaw and others added 16 commits February 1, 2026 23:35
Part 4:
- Add JSON data structure showing captured detection format
- Add MQL query example for counting failures by hour
- Reference Part 6 for dashboard widgets

Part 6:
- Rewrite to focus on Teleop dashboard (removed white-label auth, billing)
- Add camera stream widget configuration
- Add defects per minute widget with custom MQL pipeline
- Add confidence trend widget with custom MQL pipeline
- Include step-by-step MQL stage instructions with copy-paste JSON
- Add info boxes explaining how pipelines work

Index:
- Update Part 6 outline and time estimate (~15 min)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Part 5 is now Productize (Teleop dashboard) and Part 6 is now Scale
(fragments). This order makes more sense as users can see their
dashboard working before scaling to multiple machines.

- Update section numbers in both files
- Update table and outline in _index.md
- Fix cross-references in part-4.md
- Move Congratulations section to end of Part 6

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rewrite sentence to avoid em dash before inline code, which vale
incorrectly flags as having whitespace.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add prettier-ignore comment to prevent incorrect indentation of
Hugo shortcode closing tag.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The tutorial now ends at Part 5 (Productize) with the Teleop dashboard.
Scaling with fragments can be covered in a separate dedicated tutorial.

- Remove part-6.md
- Update _index.md to remove Part 6 references
- Add Congratulations section to part-5.md
- Update scenario list and time estimate

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Prevents 404 errors for any existing links to the removed Part 6.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Part 2: Main navigation menu (Fleet/Data/Registry)
- Part 3: Organization namespace settings
- Part 4: DoCommand test result, Data Query interface
- Part 5: Teleop workspace creation, finished dashboard

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Gazebo: simulation viewer showing both camera views
- Part 1: machine Live status, vision service test with detection
- Remove 6 unnecessary screenshot placeholders from Part 1

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Images must be in assets/tutorials/ and use {{<imgproc>}} shortcode
for Hugo to find them correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Screenshots added:
- Part 2: Data tab with captured images
- Part 3: Org settings dropdown, machine address
- Part 4: DoCommand test result, Data Query interface
- Part 5: Teleop workspaces page

Also fixed numbered list indentation in Part 4 so code blocks
don't break list numbering.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added class="imgzoom shadow" to all 10 tutorial screenshots
- Added final dashboard screenshot showing completed workspace

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@shannonbradshaw shannonbradshaw merged commit 89000e5 into viamrobotics:main Feb 2, 2026
12 checks passed
@github-actions
Copy link

github-actions bot commented Feb 2, 2026

🔎💬 Inkeep AI search and chat service is syncing content for source 'Viam Docs'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe to build This pull request is marked safe to build from a trusted zone

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants