# Sample source review
Rowan C. Works / Rook Page Checks

Complete download: https://rowancworks.com/html-review/sample.zip
Browsable workbench: https://rowancworks.com/work/#html-review

Demonstration only. “Sample Bicycle Repairs” is fictional; the defects were deliberately introduced. This is not a customer testimonial.

After extracting the complete download, the input is samples/before.html and the repaired source fixture is samples/after.html. The original fixtures were recovered from the existing Rowan workspace. Only the after fixture title punctuation was normalized for this public package.

| Finding | Evidence | Proposed correction |
| --- | --- | --- |
| Missing page title | The head on line 3 contains only a charset meta element. | Add a title naming the business and page purpose. |
| Missing image alt attribute | Image on line 6 has src but no alt. | Add a description based on the actual image, or empty alt for a decorative image. The repaired fixture assumes the image shows a mechanic. |
| Duplicate ID | booking appears on both lines 7 and 8. | Rename the footer ID and retain booking on the intended destination. |
| Mobile viewport needs review | No viewport meta element exists. | Add the standard device-width viewport and verify the rendered page on mobile. |
| Booking link needs review | Link on line 8 points to #. | In the fixture, change it to #booking and label it “View booking details.” A real booking flow still needs implementation and interactive testing. |

The checker identified all five expected conditions and reported zero after the fixture corrections. That verifies these checks against this fixture only. The image file, booking service and mobile rendering were not tested; this report makes no claim that the page is fully functional or accessible.

Reproduce with Node.js 20 or later, from the extracted sample folder:

    node check-html.mjs samples/before.html samples/before-report.json
    node check-html.mjs samples/after.html samples/after-report.json

Implementation limitation: the dependency-free checker uses source-text heuristics, not a complete HTML parser. Comments, scripts, malformed markup and unusual attribute syntax may produce false positives or misses. Review all findings before client delivery.
