# specs/domain/features/UC001-typescript.feature # # SINGLE SOURCE OF TRUTH for TypeScript repository initialization behaviour. # This file is: # (1) referenced by specs/domain/use_cases/UC001-init_repo.md (documentation) # (2) executed by the acceptance test suite (living documentation) # # Rules: # - Scenario IDs (e.g. UC001-TS-S01) must match the use case document. # - Step definitions live in: internal/acceptance/ # - Keep scenarios focused: one behaviour per scenario. # - Use exact terms from specs/domain/glossary.md. Feature: Initialize a TypeScript Repository (Including Scaffolding) As a software engineer I want to initialize an empty Git repository with scaffolding files So that I can immediately start developing a TypeScript/React web frontend. # --------------------------------------------------------------------------- # TypeScript React Frontend # --------------------------------------------------------------------------- Scenario: UC001-TS-S01 Successful initialization of a TypeScript frontend-react repository (GitLab) Given current directory is an empty Git repository When the user initializes this repository with the following settings: | Parameter | Value | | Project Name | My React Frontend | | Project Description | My React Frontend. | | Artifact Name | frontend-react | | Language | typescript | | Artifact Type | frontend-react | | CI Type | gitlab | Then the repository contains exactly these essential files and directories: | .claude/agents/code-reviewer.md | | .claude/agents/security-auditor.md | | .claude/commands/new-component.md | | .claude/commands/new-domain-object.md | | .claude/commands/new-view.md | | .claude/rules/bash_coding.md | | .claude/rules/ci_cd.md | | .claude/rules/containerization.md | | .claude/rules/data_modeling.md | | .claude/rules/error_handling.md | | .claude/rules/general_coding.md | | .claude/rules/git.md | | .claude/rules/library_design.md | | .claude/rules/oo_design_and_programming.md | | .claude/rules/performance.md | | .claude/rules/refactoring.md | | .claude/rules/responsive_web.md | | .claude/rules/security.md | | .claude/rules/spec_consistency.md | | .claude/rules/technical_writing.md | | .claude/rules/testing.md | | .claude/rules/tool_chain.md | | .claude/rules/typescript_coding.md | | .claude/rules/ui_architecture.md | | .claude/rules/ui_design_input.md | | .claude/rules/user_experience.md | | .claude/settings.json | | .claude/hooks/session-start.sh | | .claude/skills/adr/SKILL.md | | .claude/skills/adr/adr-template.md | | .claude/skills/arch-check/SKILL.md | | .claude/skills/commit/SKILL.md | | .claude/skills/review/SKILL.md | | .claude/skills/security-review/SKILL.md | | .claude/skills/test-coverage/SKILL.md | | .claude/skills/tdd/SKILL.md | | .claude/skills/systematic-debugging/SKILL.md | | .claude/skills/verification-before-completion/SKILL.md | | .claude/skills/update-versions/SKILL.md | | .dependency-cruiser.cjs | | .gitignore | | .gitlab-ci.yml | | .markdownlint.json | | .mcp.json | | .prettierignore | | .repo.yaml | | CHANGELOG.md | | CLAUDE.md | | LICENSE | | Makefile | | Makefile.local | | README.md | | avatar/avatar.afdesign | | biome.json | | cliff.toml | | devbox.json | | e2e/README.md | | e2e/features/greeting.feature | | e2e/steps/greeting.steps.ts | | e2e/steps/hooks.ts | | image/Dockerfile | | image/nginx.conf | | index.html | | mkdocs.yml | | package.json | | playwright.config.ts | | specs/architecture/ADRs/ADR-001-structured_logging.md | | specs/architecture/ADRs/ADR-002-hermetic-ci-build-images.md | | specs/architecture/ADRs/ADR-003-gitlab-pages-release-docs.md | | specs/architecture/ADRs/ADR-004-ci_pipeline_design.md | | specs/architecture/ADRs/ADR-005-react-framework-choice.md | | specs/architecture/ADRs/ADR-006-typescript-over-javascript.md | | specs/architecture/ADRs/ADR-007-browser-support-matrix.md | | specs/architecture/ADRs/ADR-008-api-codegen-over-handwritten.md | | specs/architecture/ADRs/README.md | | specs/architecture/APIs/consumed/README.md | | specs/architecture/APIs/provided/README.md | | specs/architecture/system_context.md | | specs/domain/business_rules.md | | specs/domain/domain_model.md | | specs/domain/features/UC001-sample_use_case.feature | | specs/domain/glossary.md | | specs/domain/use_cases/UC001-sample_use_case.md | | specs/guidelines/bash_coding.md | | specs/guidelines/ci_cd.md | | specs/guidelines/containerization.md | | specs/guidelines/data_modeling.md | | specs/guidelines/error_handling.md | | specs/guidelines/general_coding.md | | specs/guidelines/git.md | | specs/guidelines/library_design.md | | specs/guidelines/oo_design_and_programming.md | | specs/guidelines/performance.md | | specs/guidelines/refactoring.md | | specs/guidelines/responsive_web.md | | specs/guidelines/security.md | | specs/guidelines/technical_writing.md | | specs/guidelines/testing.md | | specs/guidelines/tool_chain.md | | specs/guidelines/typescript_coding.md | | specs/guidelines/ui_architecture.md | | specs/guidelines/ui_design_input.md | | specs/guidelines/user_experience.md | | specs/index.md | | src/app/App.tsx | | src/app/greeting/GreetingPage.test.tsx | | src/app/greeting/GreetingPage.tsx | | src/app/greeting/GreetingView.test.tsx | | src/app/greeting/GreetingView.tsx | | src/domain/greeting.test.ts | | src/domain/greeting.ts | | src/infra/api/GreetingApiClient.ts | | src/infra/api/mocks/browser.ts | | src/infra/api/mocks/handlers.ts | | src/infra/api/mocks/server.ts | | src/infra/auth/NoopAuthProvider.test.ts | | src/infra/auth/NoopAuthProvider.ts | | src/main.tsx | | src/test/setup.ts | | src/usecase/auth/AuthProvider.ts | | src/usecase/greeting/GreetingRepository.ts | | src/usecase/greeting/useGreeting.ts | | src/usecase/greeting/useGreetingPresentationModel.test.ts | | src/usecase/greeting/useGreetingPresentationModel.ts | | src/usecase/greeting/useGreetingViewModel.test.ts | | src/usecase/greeting/useGreetingViewModel.ts | | tsconfig.json | | vite.config.ts |