Skip to content

Scaffold Vue 3 frontend#3

Merged
dellch merged 4 commits into
mainfrom
scaffold-vue-frontend
May 14, 2026
Merged

Scaffold Vue 3 frontend#3
dellch merged 4 commits into
mainfrom
scaffold-vue-frontend

Conversation

@dellch
Copy link
Copy Markdown
Owner

@dellch dellch commented May 14, 2026

Summary

  • Scaffold Vue 3 + TypeScript frontend in src/frontend/ using create-vue
  • Includes ESLint (flat config), Prettier, and Vue-maintained TypeScript config
  • All validation passes: lint, type-check, build, format

Packages adopted

  • @vue/tsconfig — TypeScript preset
  • @vue/eslint-config-typescript — ESLint integration
  • eslint-plugin-vue — Vue-specific rules
  • eslint-config-prettier — Prettier conflict avoidance
  • oxlint — supplementary fast linting (included by scaffold)

Test plan

  • cd src/frontend && npm install && npm run build succeeds
  • npm run lint reports no issues
  • npm run type-check passes
  • npm run dev starts the dev server

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a minimal Vue 3 + TypeScript SPA with an App that displays "EditorConfig Preview"
    • Included global styles and dark-mode-aware design tokens
  • Chores

    • Initialized Vite-based frontend project and build tooling
    • Added editor, linter, formatter, and TypeScript configs
    • Added .gitignore and gitattributes for frontend artifacts
  • Documentation

    • Added frontend README with setup and workflow instructions

Review Change Stack

@dellch
Copy link
Copy Markdown
Owner Author

dellch commented May 14, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR bootstraps a Vue 3 + TypeScript SPA under src/frontend/: editor and Git settings, VS Code recommendations, Prettier/OXLint/ESLint configs, Vite + TypeScript project/aliases, package scripts, and a minimal Vue app with global themed CSS.

Changes

Frontend Application Setup

Layer / File(s) Summary
Development environment configuration
src/frontend/.editorconfig, src/frontend/.gitattributes, src/frontend/.gitignore, src/frontend/.vscode/extensions.json, src/frontend/README.md
Editor settings enforce UTF-8, 2-space indents, LF line endings, and 100-char line length; Git treats all files as text with LF endings; ignore patterns exclude logs, dependencies, build artifacts, and IDE files; VS Code recommendations guide developer setup; README documents prerequisites and npm scripts for development workflows.
Build system and package management
src/frontend/package.json, src/frontend/vite.config.ts, src/frontend/env.d.ts, src/frontend/tsconfig.json, src/frontend/tsconfig.app.json, src/frontend/tsconfig.node.json
package.json declares Vue, TypeScript, and tooling dependencies with scripts for dev, build, type-check, lint, and format; Vite config loads Vue and DevTools plugins with @ alias to src; TypeScript composite config references app and node tool configs separately; app config includes Vue/DOM types and enables stricter index checks; node config targets tool files with bundler-style module resolution.
Linting and code formatting configuration
src/frontend/.oxlintrc.json, src/frontend/.prettierrc.json, src/frontend/eslint.config.ts
OXLint enables plugins for ESLint, TypeScript, Unicorn, and Vue with browser environment and error-level correctness checks; Prettier disables semicolons and enforces single quotes at 100-char line width; ESLint flat config composes Vue essential and TypeScript recommended rules, loads oxlint via .oxlintrc.json, and suppresses Prettier conflicts via flat config extension.
Vue application entry point and styling
src/frontend/index.html, src/frontend/src/main.ts, src/frontend/src/App.vue, src/frontend/src/assets/base.css, src/frontend/src/assets/main.css
index.html declares #app root and loads /src/main.ts as module entry; main.ts imports global styles, creates a Vue app from App.vue, and mounts to the DOM; App.vue renders an h1 heading. base.css defines a color palette (whites, blacks, indigo, dividers, text), semantic variables (background, border, heading, text, spacing), dark-mode overrides, and global resets for box-sizing and margins. main.css constrains and centers the #app layout with max-width and padding.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 A rabbit hops through frontend glow,
With Vue and Vite all set to go,
Colors and CSS softly align,
Linters hum and scripts will chime,
A tiny app now springs to show!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Scaffold Vue 3 frontend' directly and clearly describes the main objective of the PR, which is to scaffold a Vue 3 + TypeScript frontend in src/frontend/.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch scaffold-vue-frontend

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/frontend/.gitattributes (1)

1-1: 💤 Low value

Consider more specific patterns for text normalization.

The blanket * pattern applies LF normalization to all files. While text=auto should detect binary files, explicitly targeting text file extensions is safer and more maintainable.

♻️ Alternative: target specific text extensions
-* text=auto eol=lf
+*.{js,mjs,cjs,ts,mts,cts,jsx,tsx,vue,json,md,html,css,scss,yaml,yml} text eol=lf
+* text=auto
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/frontend/.gitattributes` at line 1, Replace the blanket line "* text=auto
eol=lf" with explicit file-extension patterns so only known text files get LF
normalization; update .gitattributes to list common text extensions (e.g.,
source, markup, config, and docs like .js, .ts, .jsx, .tsx, .css, .html, .md,
.json, .yml/.yaml, .txt) each annotated with "text" and "eol=lf", and ensure
common binary extensions (images, fonts, compiled assets) are explicitly marked
as "binary" to avoid accidental normalization.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/frontend/index.html`:
- Line 2: Set a concrete language code on the root HTML element in
src/frontend/index.html by replacing the empty lang attribute on the <html> tag
with an appropriate language code (e.g., en) so assistive technologies receive a
valid document language; update the root html tag's lang attribute in the file
(or make it derive from app locale if dynamic) to a specific value instead of
"".

---

Nitpick comments:
In `@src/frontend/.gitattributes`:
- Line 1: Replace the blanket line "* text=auto eol=lf" with explicit
file-extension patterns so only known text files get LF normalization; update
.gitattributes to list common text extensions (e.g., source, markup, config, and
docs like .js, .ts, .jsx, .tsx, .css, .html, .md, .json, .yml/.yaml, .txt) each
annotated with "text" and "eol=lf", and ensure common binary extensions (images,
fonts, compiled assets) are explicitly marked as "binary" to avoid accidental
normalization.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b678a3a-be91-4b9c-bbe1-555409581bbe

📥 Commits

Reviewing files that changed from the base of the PR and between 4afdab8 and a305ff0.

⛔ Files ignored due to path filters (2)
  • src/frontend/package-lock.json is excluded by !**/package-lock.json
  • src/frontend/public/favicon.ico is excluded by !**/*.ico
📒 Files selected for processing (20)
  • Makefile
  • src/frontend/.editorconfig
  • src/frontend/.gitattributes
  • src/frontend/.gitignore
  • src/frontend/.oxlintrc.json
  • src/frontend/.prettierrc.json
  • src/frontend/.vscode/extensions.json
  • src/frontend/README.md
  • src/frontend/env.d.ts
  • src/frontend/eslint.config.ts
  • src/frontend/index.html
  • src/frontend/package.json
  • src/frontend/src/App.vue
  • src/frontend/src/assets/base.css
  • src/frontend/src/assets/main.css
  • src/frontend/src/main.ts
  • src/frontend/tsconfig.app.json
  • src/frontend/tsconfig.json
  • src/frontend/tsconfig.node.json
  • src/frontend/vite.config.ts

Comment thread src/frontend/index.html Outdated
@dellch
Copy link
Copy Markdown
Owner Author

dellch commented May 14, 2026

The backend scaffolding added some unit tests and a test-backend target to the Makefile, can we update this branch to include at least one unit test and a test-frontend target to the Makefile?

@dellch dellch force-pushed the scaffold-vue-frontend branch from b7efa4f to 48365a2 Compare May 14, 2026 17:59
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/frontend/package.json`:
- Around line 6-16: The package.json scripts block is missing a frontend test
entry required by the PR; add a new script key (e.g., "test:frontend" and
optionally "test") under "scripts" that runs the frontend unit test runner (for
example using vitest or npm test command you standardize on) and ensures it
exits non-zero on failures; then add a minimal Vue unit test file to the
frontend test suite and update the Makefile target (test-frontend) to invoke the
new script name so CI/Make can call it. Refer to the "scripts" object and the
new "test:frontend" (and "test") script names and the Makefile target
"test-frontend" when making the changes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8da17229-d375-41ec-9169-495d981a5d46

📥 Commits

Reviewing files that changed from the base of the PR and between b7efa4f and 48365a2.

⛔ Files ignored due to path filters (2)
  • src/frontend/package-lock.json is excluded by !**/package-lock.json
  • src/frontend/public/favicon.ico is excluded by !**/*.ico
📒 Files selected for processing (20)
  • Makefile
  • src/frontend/.editorconfig
  • src/frontend/.gitattributes
  • src/frontend/.gitignore
  • src/frontend/.oxlintrc.json
  • src/frontend/.prettierrc.json
  • src/frontend/.vscode/extensions.json
  • src/frontend/README.md
  • src/frontend/env.d.ts
  • src/frontend/eslint.config.ts
  • src/frontend/index.html
  • src/frontend/package.json
  • src/frontend/src/App.vue
  • src/frontend/src/assets/base.css
  • src/frontend/src/assets/main.css
  • src/frontend/src/main.ts
  • src/frontend/tsconfig.app.json
  • src/frontend/tsconfig.json
  • src/frontend/tsconfig.node.json
  • src/frontend/vite.config.ts
✅ Files skipped from review due to trivial changes (12)
  • src/frontend/.gitattributes
  • src/frontend/.vscode/extensions.json
  • src/frontend/.gitignore
  • src/frontend/env.d.ts
  • src/frontend/src/assets/main.css
  • src/frontend/README.md
  • src/frontend/src/main.ts
  • src/frontend/.editorconfig
  • src/frontend/.prettierrc.json
  • src/frontend/.oxlintrc.json
  • src/frontend/src/App.vue
  • src/frontend/index.html
🚧 Files skipped from review as they are similar to previous changes (5)
  • src/frontend/vite.config.ts
  • src/frontend/tsconfig.node.json
  • Makefile
  • src/frontend/tsconfig.app.json
  • src/frontend/eslint.config.ts

Comment thread src/frontend/package.json
@dellch dellch force-pushed the scaffold-vue-frontend branch from 48365a2 to 53e274d Compare May 14, 2026 18:16
@dellch dellch force-pushed the scaffold-vue-frontend branch from 53e274d to 09f3e2b Compare May 14, 2026 18:22
dellch and others added 3 commits May 14, 2026 11:27
Generated with create-vue using Vue-maintained tooling defaults:
- TypeScript via vue-tsc with @vue/tsconfig presets
- Flat ESLint config with eslint-plugin-vue and @vue/eslint-config-typescript
- oxlint for fast supplementary linting
- Prettier with eslint-config-prettier to avoid rule conflicts
- Vite 8 as the build tool

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace demo content with a minimal App.vue placeholder.
Real UI components will be added during feature implementation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes empty lang attribute in index.html to improve accessibility
for assistive technologies.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@dellch dellch force-pushed the scaffold-vue-frontend branch from 09f3e2b to be0cbdf Compare May 14, 2026 18:27
@dellch dellch merged commit 76a2e73 into main May 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant