Initial commit from Specify template

This commit is contained in:
2025-09-19 01:06:11 +08:00
commit 01a8fa90e8
26 changed files with 7986 additions and 0 deletions

36
.claude/commands/plan.md Normal file
View File

@@ -0,0 +1,36 @@
---
description: Execute the implementation planning workflow using the plan template to generate design artifacts.
---
Given the implementation details provided as an argument, do this:
1. Run `.specify/scripts/bash/setup-plan.sh --json` from the repo root and parse JSON for FEATURE_SPEC, IMPL_PLAN, SPECS_DIR, BRANCH. All future file paths must be absolute.
2. Read and analyze the feature specification to understand:
- The feature requirements and user stories
- Functional and non-functional requirements
- Success criteria and acceptance criteria
- Any technical constraints or dependencies mentioned
3. Read the constitution at `.specify/memory/constitution.md` to understand constitutional requirements.
4. Execute the implementation plan template:
- Load `.specify/templates/plan-template.md` (already copied to IMPL_PLAN path)
- Set Input path to FEATURE_SPEC
- Run the Execution Flow (main) function steps 1-9
- The template is self-contained and executable
- Follow error handling and gate checks as specified
- Let the template guide artifact generation in $SPECS_DIR:
* Phase 0 generates research.md
* Phase 1 generates data-model.md, contracts/, quickstart.md
* Phase 2 generates tasks.md
- Incorporate user-provided details from arguments into Technical Context: $ARGUMENTS
- Update Progress Tracking as you complete each phase
5. Verify execution completed:
- Check Progress Tracking shows all phases complete
- Ensure all required artifacts were generated
- Confirm no ERROR states in execution
6. Report results with branch name, file paths, and generated artifacts.
Use absolute paths with the repository root for all file operations to avoid path issues.

View File

@@ -0,0 +1,12 @@
---
description: Create or update the feature specification from a natural language feature description.
---
Given the feature description provided as an argument, do this:
1. Run the script `.specify/scripts/bash/create-new-feature.sh --json "$ARGUMENTS"` from repo root and parse its JSON output for BRANCH_NAME and SPEC_FILE. All file paths must be absolute.
2. Load `.specify/templates/spec-template.md` to understand required sections.
3. Write the specification to SPEC_FILE using the template structure, replacing placeholders with concrete details derived from the feature description (arguments) while preserving section order and headings.
4. Report completion with branch name, spec file path, and readiness for the next phase.
Note: The script creates and checks out the new branch and initializes the spec file before writing.

58
.claude/commands/tasks.md Normal file
View File

@@ -0,0 +1,58 @@
---
description: Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.
---
Given the context provided as an argument, do this:
1. Run `.specify/scripts/bash/check-task-prerequisites.sh --json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute.
2. Load and analyze available design documents:
- Always read plan.md for tech stack and libraries
- IF EXISTS: Read data-model.md for entities
- IF EXISTS: Read contracts/ for API endpoints
- IF EXISTS: Read research.md for technical decisions
- IF EXISTS: Read quickstart.md for test scenarios
Note: Not all projects have all documents. For example:
- CLI tools might not have contracts/
- Simple libraries might not need data-model.md
- Generate tasks based on what's available
3. Generate tasks following the template:
- Use `.specify/templates/tasks-template.md` as the base
- Replace example tasks with actual tasks based on:
* **Setup tasks**: Project init, dependencies, linting
* **Test tasks [P]**: One per contract, one per integration scenario
* **Core tasks**: One per entity, service, CLI command, endpoint
* **Integration tasks**: DB connections, middleware, logging
* **Polish tasks [P]**: Unit tests, performance, docs
4. Task generation rules:
- Each contract file → contract test task marked [P]
- Each entity in data-model → model creation task marked [P]
- Each endpoint → implementation task (not parallel if shared files)
- Each user story → integration test marked [P]
- Different files = can be parallel [P]
- Same file = sequential (no [P])
5. Order tasks by dependencies:
- Setup before everything
- Tests before implementation (TDD)
- Models before services
- Services before endpoints
- Core before integration
- Everything before polish
6. Include parallel execution examples:
- Group [P] tasks that can run together
- Show actual Task agent commands
7. Create FEATURE_DIR/tasks.md with:
- Correct feature name from implementation plan
- Numbered tasks (T001, T002, etc.)
- Clear file paths for each task
- Dependency notes
- Parallel execution guidance
Context for task generation: $ARGUMENTS
The tasks.md should be immediately executable - each task must be specific enough that an LLM can complete it without additional context.

View File

@@ -0,0 +1,50 @@
# [PROJECT_NAME] Constitution
<!-- Example: Spec Constitution, TaskFlow Constitution, etc. -->
## Core Principles
### [PRINCIPLE_1_NAME]
<!-- Example: I. Library-First -->
[PRINCIPLE_1_DESCRIPTION]
<!-- Example: Every feature starts as a standalone library; Libraries must be self-contained, independently testable, documented; Clear purpose required - no organizational-only libraries -->
### [PRINCIPLE_2_NAME]
<!-- Example: II. CLI Interface -->
[PRINCIPLE_2_DESCRIPTION]
<!-- Example: Every library exposes functionality via CLI; Text in/out protocol: stdin/args → stdout, errors → stderr; Support JSON + human-readable formats -->
### [PRINCIPLE_3_NAME]
<!-- Example: III. Test-First (NON-NEGOTIABLE) -->
[PRINCIPLE_3_DESCRIPTION]
<!-- Example: TDD mandatory: Tests written → User approved → Tests fail → Then implement; Red-Green-Refactor cycle strictly enforced -->
### [PRINCIPLE_4_NAME]
<!-- Example: IV. Integration Testing -->
[PRINCIPLE_4_DESCRIPTION]
<!-- Example: Focus areas requiring integration tests: New library contract tests, Contract changes, Inter-service communication, Shared schemas -->
### [PRINCIPLE_5_NAME]
<!-- Example: V. Observability, VI. Versioning & Breaking Changes, VII. Simplicity -->
[PRINCIPLE_5_DESCRIPTION]
<!-- Example: Text I/O ensures debuggability; Structured logging required; Or: MAJOR.MINOR.BUILD format; Or: Start simple, YAGNI principles -->
## [SECTION_2_NAME]
<!-- Example: Additional Constraints, Security Requirements, Performance Standards, etc. -->
[SECTION_2_CONTENT]
<!-- Example: Technology stack requirements, compliance standards, deployment policies, etc. -->
## [SECTION_3_NAME]
<!-- Example: Development Workflow, Review Process, Quality Gates, etc. -->
[SECTION_3_CONTENT]
<!-- Example: Code review requirements, testing gates, deployment approval process, etc. -->
## Governance
<!-- Example: Constitution supersedes all other practices; Amendments require documentation, approval, migration plan -->
[GOVERNANCE_RULES]
<!-- Example: All PRs/reviews must verify compliance; Complexity must be justified; Use [GUIDANCE_FILE] for runtime development guidance -->
**Version**: [CONSTITUTION_VERSION] | **Ratified**: [RATIFICATION_DATE] | **Last Amended**: [LAST_AMENDED_DATE]
<!-- Example: Version: 2.1.1 | Ratified: 2025-06-13 | Last Amended: 2025-07-16 -->

View File

@@ -0,0 +1,85 @@
# Constitution Update Checklist
When amending the constitution (`/memory/constitution.md`), ensure all dependent documents are updated to maintain consistency.
## Templates to Update
### When adding/modifying ANY article:
- [ ] `/templates/plan-template.md` - Update Constitution Check section
- [ ] `/templates/spec-template.md` - Update if requirements/scope affected
- [ ] `/templates/tasks-template.md` - Update if new task types needed
- [ ] `/.claude/commands/plan.md` - Update if planning process changes
- [ ] `/.claude/commands/tasks.md` - Update if task generation affected
- [ ] `/CLAUDE.md` - Update runtime development guidelines
### Article-specific updates:
#### Article I (Library-First):
- [ ] Ensure templates emphasize library creation
- [ ] Update CLI command examples
- [ ] Add llms.txt documentation requirements
#### Article II (CLI Interface):
- [ ] Update CLI flag requirements in templates
- [ ] Add text I/O protocol reminders
#### Article III (Test-First):
- [ ] Update test order in all templates
- [ ] Emphasize TDD requirements
- [ ] Add test approval gates
#### Article IV (Integration Testing):
- [ ] List integration test triggers
- [ ] Update test type priorities
- [ ] Add real dependency requirements
#### Article V (Observability):
- [ ] Add logging requirements to templates
- [ ] Include multi-tier log streaming
- [ ] Update performance monitoring sections
#### Article VI (Versioning):
- [ ] Add version increment reminders
- [ ] Include breaking change procedures
- [ ] Update migration requirements
#### Article VII (Simplicity):
- [ ] Update project count limits
- [ ] Add pattern prohibition examples
- [ ] Include YAGNI reminders
## Validation Steps
1. **Before committing constitution changes:**
- [ ] All templates reference new requirements
- [ ] Examples updated to match new rules
- [ ] No contradictions between documents
2. **After updating templates:**
- [ ] Run through a sample implementation plan
- [ ] Verify all constitution requirements addressed
- [ ] Check that templates are self-contained (readable without constitution)
3. **Version tracking:**
- [ ] Update constitution version number
- [ ] Note version in template footers
- [ ] Add amendment to constitution history
## Common Misses
Watch for these often-forgotten updates:
- Command documentation (`/commands/*.md`)
- Checklist items in templates
- Example code/commands
- Domain-specific variations (web vs mobile vs CLI)
- Cross-references between documents
## Template Sync Status
Last sync check: 2025-07-16
- Constitution version: 2.1.1
- Templates aligned: ❌ (missing versioning, observability details)
---
*This checklist ensures the constitution's principles are consistently applied across all project documentation.*

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -e
JSON_MODE=false
for arg in "$@"; do case "$arg" in --json) JSON_MODE=true ;; --help|-h) echo "Usage: $0 [--json]"; exit 0 ;; esac; done
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
eval $(get_feature_paths)
check_feature_branch "$CURRENT_BRANCH" || exit 1
if [[ ! -d "$FEATURE_DIR" ]]; then echo "ERROR: Feature directory not found: $FEATURE_DIR"; echo "Run /specify first."; exit 1; fi
if [[ ! -f "$IMPL_PLAN" ]]; then echo "ERROR: plan.md not found in $FEATURE_DIR"; echo "Run /plan first."; exit 1; fi
if $JSON_MODE; then
docs=(); [[ -f "$RESEARCH" ]] && docs+=("research.md"); [[ -f "$DATA_MODEL" ]] && docs+=("data-model.md"); ([[ -d "$CONTRACTS_DIR" ]] && [[ -n "$(ls -A "$CONTRACTS_DIR" 2>/dev/null)" ]]) && docs+=("contracts/"); [[ -f "$QUICKSTART" ]] && docs+=("quickstart.md");
json_docs=$(printf '"%s",' "${docs[@]}"); json_docs="[${json_docs%,}]"; printf '{"FEATURE_DIR":"%s","AVAILABLE_DOCS":%s}\n' "$FEATURE_DIR" "$json_docs"
else
echo "FEATURE_DIR:$FEATURE_DIR"; echo "AVAILABLE_DOCS:"; check_file "$RESEARCH" "research.md"; check_file "$DATA_MODEL" "data-model.md"; check_dir "$CONTRACTS_DIR" "contracts/"; check_file "$QUICKSTART" "quickstart.md"; fi

37
.specify/scripts/bash/common.sh Executable file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
# (Moved to scripts/bash/) Common functions and variables for all scripts
get_repo_root() { git rev-parse --show-toplevel; }
get_current_branch() { git rev-parse --abbrev-ref HEAD; }
check_feature_branch() {
local branch="$1"
if [[ ! "$branch" =~ ^[0-9]{3}- ]]; then
echo "ERROR: Not on a feature branch. Current branch: $branch" >&2
echo "Feature branches should be named like: 001-feature-name" >&2
return 1
fi; return 0
}
get_feature_dir() { echo "$1/specs/$2"; }
get_feature_paths() {
local repo_root=$(get_repo_root)
local current_branch=$(get_current_branch)
local feature_dir=$(get_feature_dir "$repo_root" "$current_branch")
cat <<EOF
REPO_ROOT='$repo_root'
CURRENT_BRANCH='$current_branch'
FEATURE_DIR='$feature_dir'
FEATURE_SPEC='$feature_dir/spec.md'
IMPL_PLAN='$feature_dir/plan.md'
TASKS='$feature_dir/tasks.md'
RESEARCH='$feature_dir/research.md'
DATA_MODEL='$feature_dir/data-model.md'
QUICKSTART='$feature_dir/quickstart.md'
CONTRACTS_DIR='$feature_dir/contracts'
EOF
}
check_file() { [[ -f "$1" ]] && echo "$2" || echo "$2"; }
check_dir() { [[ -d "$1" && -n $(ls -A "$1" 2>/dev/null) ]] && echo "$2" || echo "$2"; }

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env bash
# (Moved to scripts/bash/) Create a new feature with branch, directory structure, and template
set -e
JSON_MODE=false
ARGS=()
for arg in "$@"; do
case "$arg" in
--json) JSON_MODE=true ;;
--help|-h) echo "Usage: $0 [--json] <feature_description>"; exit 0 ;;
*) ARGS+=("$arg") ;;
esac
done
FEATURE_DESCRIPTION="${ARGS[*]}"
if [ -z "$FEATURE_DESCRIPTION" ]; then
echo "Usage: $0 [--json] <feature_description>" >&2
exit 1
fi
REPO_ROOT=$(git rev-parse --show-toplevel)
SPECS_DIR="$REPO_ROOT/specs"
mkdir -p "$SPECS_DIR"
HIGHEST=0
if [ -d "$SPECS_DIR" ]; then
for dir in "$SPECS_DIR"/*; do
[ -d "$dir" ] || continue
dirname=$(basename "$dir")
number=$(echo "$dirname" | grep -o '^[0-9]\+' || echo "0")
number=$((10#$number))
if [ "$number" -gt "$HIGHEST" ]; then HIGHEST=$number; fi
done
fi
NEXT=$((HIGHEST + 1))
FEATURE_NUM=$(printf "%03d" "$NEXT")
BRANCH_NAME=$(echo "$FEATURE_DESCRIPTION" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/-\+/-/g' | sed 's/^-//' | sed 's/-$//')
WORDS=$(echo "$BRANCH_NAME" | tr '-' '\n' | grep -v '^$' | head -3 | tr '\n' '-' | sed 's/-$//')
BRANCH_NAME="${FEATURE_NUM}-${WORDS}"
git checkout -b "$BRANCH_NAME"
FEATURE_DIR="$SPECS_DIR/$BRANCH_NAME"
mkdir -p "$FEATURE_DIR"
TEMPLATE="$REPO_ROOT/templates/spec-template.md"
SPEC_FILE="$FEATURE_DIR/spec.md"
if [ -f "$TEMPLATE" ]; then cp "$TEMPLATE" "$SPEC_FILE"; else touch "$SPEC_FILE"; fi
if $JSON_MODE; then
printf '{"BRANCH_NAME":"%s","SPEC_FILE":"%s","FEATURE_NUM":"%s"}\n' "$BRANCH_NAME" "$SPEC_FILE" "$FEATURE_NUM"
else
echo "BRANCH_NAME: $BRANCH_NAME"
echo "SPEC_FILE: $SPEC_FILE"
echo "FEATURE_NUM: $FEATURE_NUM"
fi

View File

@@ -0,0 +1,7 @@
#!/usr/bin/env bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
eval $(get_feature_paths)
check_feature_branch "$CURRENT_BRANCH" || exit 1
echo "REPO_ROOT: $REPO_ROOT"; echo "BRANCH: $CURRENT_BRANCH"; echo "FEATURE_DIR: $FEATURE_DIR"; echo "FEATURE_SPEC: $FEATURE_SPEC"; echo "IMPL_PLAN: $IMPL_PLAN"; echo "TASKS: $TASKS"

View File

@@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -e
JSON_MODE=false
for arg in "$@"; do case "$arg" in --json) JSON_MODE=true ;; --help|-h) echo "Usage: $0 [--json]"; exit 0 ;; esac; done
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"
eval $(get_feature_paths)
check_feature_branch "$CURRENT_BRANCH" || exit 1
mkdir -p "$FEATURE_DIR"
TEMPLATE="$REPO_ROOT/.specify/templates/plan-template.md"
[[ -f "$TEMPLATE" ]] && cp "$TEMPLATE" "$IMPL_PLAN"
if $JSON_MODE; then
printf '{"FEATURE_SPEC":"%s","IMPL_PLAN":"%s","SPECS_DIR":"%s","BRANCH":"%s"}\n' \
"$FEATURE_SPEC" "$IMPL_PLAN" "$FEATURE_DIR" "$CURRENT_BRANCH"
else
echo "FEATURE_SPEC: $FEATURE_SPEC"; echo "IMPL_PLAN: $IMPL_PLAN"; echo "SPECS_DIR: $FEATURE_DIR"; echo "BRANCH: $CURRENT_BRANCH"
fi

View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
set -e
REPO_ROOT=$(git rev-parse --show-toplevel)
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
FEATURE_DIR="$REPO_ROOT/specs/$CURRENT_BRANCH"
NEW_PLAN="$FEATURE_DIR/plan.md"
CLAUDE_FILE="$REPO_ROOT/CLAUDE.md"; GEMINI_FILE="$REPO_ROOT/GEMINI.md"; COPILOT_FILE="$REPO_ROOT/.github/copilot-instructions.md"; CURSOR_FILE="$REPO_ROOT/.cursor/rules/specify-rules.mdc"; QWEN_FILE="$REPO_ROOT/QWEN.md"; AGENTS_FILE="$REPO_ROOT/AGENTS.md"
AGENT_TYPE="$1"
[ -f "$NEW_PLAN" ] || { echo "ERROR: No plan.md found at $NEW_PLAN"; exit 1; }
echo "=== Updating agent context files for feature $CURRENT_BRANCH ==="
NEW_LANG=$(grep "^**Language/Version**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Language\/Version**: //' | grep -v "NEEDS CLARIFICATION" || echo "")
NEW_FRAMEWORK=$(grep "^**Primary Dependencies**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Primary Dependencies**: //' | grep -v "NEEDS CLARIFICATION" || echo "")
NEW_DB=$(grep "^**Storage**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Storage**: //' | grep -v "N/A" | grep -v "NEEDS CLARIFICATION" || echo "")
NEW_PROJECT_TYPE=$(grep "^**Project Type**: " "$NEW_PLAN" 2>/dev/null | head -1 | sed 's/^**Project Type**: //' || echo "")
update_agent_file() { local target_file="$1" agent_name="$2"; echo "Updating $agent_name context file: $target_file"; local temp_file=$(mktemp); if [ ! -f "$target_file" ]; then
echo "Creating new $agent_name context file..."; if [ -f "$REPO_ROOT/.specify/templates/agent-file-template.md" ]; then cp "$REPO_ROOT/.specify/templates/agent-file-template.md" "$temp_file"; else echo "ERROR: Template not found"; return 1; fi;
sed -i.bak "s/\[PROJECT NAME\]/$(basename $REPO_ROOT)/" "$temp_file"; sed -i.bak "s/\[DATE\]/$(date +%Y-%m-%d)/" "$temp_file"; sed -i.bak "s/\[EXTRACTED FROM ALL PLAN.MD FILES\]/- $NEW_LANG + $NEW_FRAMEWORK ($CURRENT_BRANCH)/" "$temp_file";
if [[ "$NEW_PROJECT_TYPE" == *"web"* ]]; then sed -i.bak "s|\[ACTUAL STRUCTURE FROM PLANS\]|backend/\nfrontend/\ntests/|" "$temp_file"; else sed -i.bak "s|\[ACTUAL STRUCTURE FROM PLANS\]|src/\ntests/|" "$temp_file"; fi;
if [[ "$NEW_LANG" == *"Python"* ]]; then COMMANDS="cd src && pytest && ruff check ."; elif [[ "$NEW_LANG" == *"Rust"* ]]; then COMMANDS="cargo test && cargo clippy"; elif [[ "$NEW_LANG" == *"JavaScript"* ]] || [[ "$NEW_LANG" == *"TypeScript"* ]]; then COMMANDS="npm test && npm run lint"; else COMMANDS="# Add commands for $NEW_LANG"; fi; sed -i.bak "s|\[ONLY COMMANDS FOR ACTIVE TECHNOLOGIES\]|$COMMANDS|" "$temp_file";
sed -i.bak "s|\[LANGUAGE-SPECIFIC, ONLY FOR LANGUAGES IN USE\]|$NEW_LANG: Follow standard conventions|" "$temp_file"; sed -i.bak "s|\[LAST 3 FEATURES AND WHAT THEY ADDED\]|- $CURRENT_BRANCH: Added $NEW_LANG + $NEW_FRAMEWORK|" "$temp_file"; rm "$temp_file.bak";
else
echo "Updating existing $agent_name context file..."; manual_start=$(grep -n "<!-- MANUAL ADDITIONS START -->" "$target_file" | cut -d: -f1); manual_end=$(grep -n "<!-- MANUAL ADDITIONS END -->" "$target_file" | cut -d: -f1); if [ -n "$manual_start" ] && [ -n "$manual_end" ]; then sed -n "${manual_start},${manual_end}p" "$target_file" > /tmp/manual_additions.txt; fi;
python3 - "$target_file" <<'EOF'
import re,sys,datetime
target=sys.argv[1]
with open(target) as f: content=f.read()
NEW_LANG="'$NEW_LANG'";NEW_FRAMEWORK="'$NEW_FRAMEWORK'";CURRENT_BRANCH="'$CURRENT_BRANCH'";NEW_DB="'$NEW_DB'";NEW_PROJECT_TYPE="'$NEW_PROJECT_TYPE'"
# Tech section
m=re.search(r'## Active Technologies\n(.*?)\n\n',content, re.DOTALL)
if m:
existing=m.group(1)
additions=[]
if '$NEW_LANG' and '$NEW_LANG' not in existing: additions.append(f"- $NEW_LANG + $NEW_FRAMEWORK ($CURRENT_BRANCH)")
if '$NEW_DB' and '$NEW_DB' not in existing and '$NEW_DB'!='N/A': additions.append(f"- $NEW_DB ($CURRENT_BRANCH)")
if additions:
new_block=existing+"\n"+"\n".join(additions)
content=content.replace(m.group(0),f"## Active Technologies\n{new_block}\n\n")
# Recent changes
m2=re.search(r'## Recent Changes\n(.*?)(\n\n|$)',content, re.DOTALL)
if m2:
lines=[l for l in m2.group(1).strip().split('\n') if l]
lines.insert(0,f"- $CURRENT_BRANCH: Added $NEW_LANG + $NEW_FRAMEWORK")
lines=lines[:3]
content=re.sub(r'## Recent Changes\n.*?(\n\n|$)', '## Recent Changes\n'+"\n".join(lines)+'\n\n', content, flags=re.DOTALL)
content=re.sub(r'Last updated: \d{4}-\d{2}-\d{2}', 'Last updated: '+datetime.datetime.now().strftime('%Y-%m-%d'), content)
open(target+'.tmp','w').write(content)
EOF
mv "$target_file.tmp" "$target_file"; if [ -f /tmp/manual_additions.txt ]; then sed -i.bak '/<!-- MANUAL ADDITIONS START -->/,/<!-- MANUAL ADDITIONS END -->/d' "$target_file"; cat /tmp/manual_additions.txt >> "$target_file"; rm /tmp/manual_additions.txt "$target_file.bak"; fi;
fi; mv "$temp_file" "$target_file" 2>/dev/null || true; echo "$agent_name context file updated successfully"; }
case "$AGENT_TYPE" in
claude) update_agent_file "$CLAUDE_FILE" "Claude Code" ;;
gemini) update_agent_file "$GEMINI_FILE" "Gemini CLI" ;;
copilot) update_agent_file "$COPILOT_FILE" "GitHub Copilot" ;;
cursor) update_agent_file "$CURSOR_FILE" "Cursor IDE" ;;
qwen) update_agent_file "$QWEN_FILE" "Qwen Code" ;;
opencode) update_agent_file "$AGENTS_FILE" "opencode" ;;
"") [ -f "$CLAUDE_FILE" ] && update_agent_file "$CLAUDE_FILE" "Claude Code"; \
[ -f "$GEMINI_FILE" ] && update_agent_file "$GEMINI_FILE" "Gemini CLI"; \
[ -f "$COPILOT_FILE" ] && update_agent_file "$COPILOT_FILE" "GitHub Copilot"; \
[ -f "$CURSOR_FILE" ] && update_agent_file "$CURSOR_FILE" "Cursor IDE"; \
[ -f "$QWEN_FILE" ] && update_agent_file "$QWEN_FILE" "Qwen Code"; \
[ -f "$AGENTS_FILE" ] && update_agent_file "$AGENTS_FILE" "opencode"; \
if [ ! -f "$CLAUDE_FILE" ] && [ ! -f "$GEMINI_FILE" ] && [ ! -f "$COPILOT_FILE" ] && [ ! -f "$CURSOR_FILE" ] && [ ! -f "$QWEN_FILE" ] && [ ! -f "$AGENTS_FILE" ]; then update_agent_file "$CLAUDE_FILE" "Claude Code"; fi ;;
*) echo "ERROR: Unknown agent type '$AGENT_TYPE' (expected claude|gemini|copilot|cursor|qwen|opencode)"; exit 1 ;;
esac
echo; echo "Summary of changes:"; [ -n "$NEW_LANG" ] && echo "- Added language: $NEW_LANG"; [ -n "$NEW_FRAMEWORK" ] && echo "- Added framework: $NEW_FRAMEWORK"; [ -n "$NEW_DB" ] && [ "$NEW_DB" != "N/A" ] && echo "- Added database: $NEW_DB"; echo; echo "Usage: $0 [claude|gemini|copilot|cursor|qwen|opencode]"

View File

@@ -0,0 +1,23 @@
# [PROJECT NAME] Development Guidelines
Auto-generated from all feature plans. Last updated: [DATE]
## Active Technologies
[EXTRACTED FROM ALL PLAN.MD FILES]
## Project Structure
```
[ACTUAL STRUCTURE FROM PLANS]
```
## Commands
[ONLY COMMANDS FOR ACTIVE TECHNOLOGIES]
## Code Style
[LANGUAGE-SPECIFIC, ONLY FOR LANGUAGES IN USE]
## Recent Changes
[LAST 3 FEATURES AND WHAT THEY ADDED]
<!-- MANUAL ADDITIONS START -->
<!-- MANUAL ADDITIONS END -->

View File

@@ -0,0 +1,211 @@
# Implementation Plan: [FEATURE]
**Branch**: `[###-feature-name]` | **Date**: [DATE] | **Spec**: [link]
**Input**: Feature specification from `/specs/[###-feature-name]/spec.md`
## Execution Flow (/plan command scope)
```
1. Load feature spec from Input path
→ If not found: ERROR "No feature spec at {path}"
2. Fill Technical Context (scan for NEEDS CLARIFICATION)
→ Detect Project Type from context (web=frontend+backend, mobile=app+api)
→ Set Structure Decision based on project type
3. Fill the Constitution Check section based on the content of the constitution document.
4. Evaluate Constitution Check section below
→ If violations exist: Document in Complexity Tracking
→ If no justification possible: ERROR "Simplify approach first"
→ Update Progress Tracking: Initial Constitution Check
5. Execute Phase 0 → research.md
→ If NEEDS CLARIFICATION remain: ERROR "Resolve unknowns"
6. Execute Phase 1 → contracts, data-model.md, quickstart.md, agent-specific template file (e.g., `CLAUDE.md` for Claude Code, `.github/copilot-instructions.md` for GitHub Copilot, `GEMINI.md` for Gemini CLI, `QWEN.md` for Qwen Code or `AGENTS.md` for opencode).
7. Re-evaluate Constitution Check section
→ If new violations: Refactor design, return to Phase 1
→ Update Progress Tracking: Post-Design Constitution Check
8. Plan Phase 2 → Describe task generation approach (DO NOT create tasks.md)
9. STOP - Ready for /tasks command
```
**IMPORTANT**: The /plan command STOPS at step 7. Phases 2-4 are executed by other commands:
- Phase 2: /tasks command creates tasks.md
- Phase 3-4: Implementation execution (manual or via tools)
## Summary
[Extract from feature spec: primary requirement + technical approach from research]
## Technical Context
**Language/Version**: [e.g., Python 3.11, Swift 5.9, Rust 1.75 or NEEDS CLARIFICATION]
**Primary Dependencies**: [e.g., FastAPI, UIKit, LLVM or NEEDS CLARIFICATION]
**Storage**: [if applicable, e.g., PostgreSQL, CoreData, files or N/A]
**Testing**: [e.g., pytest, XCTest, cargo test or NEEDS CLARIFICATION]
**Target Platform**: [e.g., Linux server, iOS 15+, WASM or NEEDS CLARIFICATION]
**Project Type**: [single/web/mobile - determines source structure]
**Performance Goals**: [domain-specific, e.g., 1000 req/s, 10k lines/sec, 60 fps or NEEDS CLARIFICATION]
**Constraints**: [domain-specific, e.g., <200ms p95, <100MB memory, offline-capable or NEEDS CLARIFICATION]
**Scale/Scope**: [domain-specific, e.g., 10k users, 1M LOC, 50 screens or NEEDS CLARIFICATION]
## Constitution Check
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
[Gates determined based on constitution file]
## Project Structure
### Documentation (this feature)
```
specs/[###-feature]/
├── plan.md # This file (/plan command output)
├── research.md # Phase 0 output (/plan command)
├── data-model.md # Phase 1 output (/plan command)
├── quickstart.md # Phase 1 output (/plan command)
├── contracts/ # Phase 1 output (/plan command)
└── tasks.md # Phase 2 output (/tasks command - NOT created by /plan)
```
### Source Code (repository root)
```
# Option 1: Single project (DEFAULT)
src/
├── models/
├── services/
├── cli/
└── lib/
tests/
├── contract/
├── integration/
└── unit/
# Option 2: Web application (when "frontend" + "backend" detected)
backend/
├── src/
│ ├── models/
│ ├── services/
│ └── api/
└── tests/
frontend/
├── src/
│ ├── components/
│ ├── pages/
│ └── services/
└── tests/
# Option 3: Mobile + API (when "iOS/Android" detected)
api/
└── [same as backend above]
ios/ or android/
└── [platform-specific structure]
```
**Structure Decision**: [DEFAULT to Option 1 unless Technical Context indicates web/mobile app]
## Phase 0: Outline & Research
1. **Extract unknowns from Technical Context** above:
- For each NEEDS CLARIFICATION research task
- For each dependency best practices task
- For each integration patterns task
2. **Generate and dispatch research agents**:
```
For each unknown in Technical Context:
Task: "Research {unknown} for {feature context}"
For each technology choice:
Task: "Find best practices for {tech} in {domain}"
```
3. **Consolidate findings** in `research.md` using format:
- Decision: [what was chosen]
- Rationale: [why chosen]
- Alternatives considered: [what else evaluated]
**Output**: research.md with all NEEDS CLARIFICATION resolved
## Phase 1: Design & Contracts
*Prerequisites: research.md complete*
1. **Extract entities from feature spec** → `data-model.md`:
- Entity name, fields, relationships
- Validation rules from requirements
- State transitions if applicable
2. **Generate API contracts** from functional requirements:
- For each user action → endpoint
- Use standard REST/GraphQL patterns
- Output OpenAPI/GraphQL schema to `/contracts/`
3. **Generate contract tests** from contracts:
- One test file per endpoint
- Assert request/response schemas
- Tests must fail (no implementation yet)
4. **Extract test scenarios** from user stories:
- Each story → integration test scenario
- Quickstart test = story validation steps
5. **Update agent file incrementally** (O(1) operation):
- Run `.specify/scripts/bash/update-agent-context.sh claude` for your AI assistant
- If exists: Add only NEW tech from current plan
- Preserve manual additions between markers
- Update recent changes (keep last 3)
- Keep under 150 lines for token efficiency
- Output to repository root
**Output**: data-model.md, /contracts/*, failing tests, quickstart.md, agent-specific file
## Phase 2: Task Planning Approach
*This section describes what the /tasks command will do - DO NOT execute during /plan*
**Task Generation Strategy**:
- Load `.specify/templates/tasks-template.md` as base
- Generate tasks from Phase 1 design docs (contracts, data model, quickstart)
- Each contract → contract test task [P]
- Each entity → model creation task [P]
- Each user story → integration test task
- Implementation tasks to make tests pass
**Ordering Strategy**:
- TDD order: Tests before implementation
- Dependency order: Models before services before UI
- Mark [P] for parallel execution (independent files)
**Estimated Output**: 25-30 numbered, ordered tasks in tasks.md
**IMPORTANT**: This phase is executed by the /tasks command, NOT by /plan
## Phase 3+: Future Implementation
*These phases are beyond the scope of the /plan command*
**Phase 3**: Task execution (/tasks command creates tasks.md)
**Phase 4**: Implementation (execute tasks.md following constitutional principles)
**Phase 5**: Validation (run tests, execute quickstart.md, performance validation)
## Complexity Tracking
*Fill ONLY if Constitution Check has violations that must be justified*
| Violation | Why Needed | Simpler Alternative Rejected Because |
|-----------|------------|-------------------------------------|
| [e.g., 4th project] | [current need] | [why 3 projects insufficient] |
| [e.g., Repository pattern] | [specific problem] | [why direct DB access insufficient] |
## Progress Tracking
*This checklist is updated during execution flow*
**Phase Status**:
- [ ] Phase 0: Research complete (/plan command)
- [ ] Phase 1: Design complete (/plan command)
- [ ] Phase 2: Task planning complete (/plan command - describe approach only)
- [ ] Phase 3: Tasks generated (/tasks command)
- [ ] Phase 4: Implementation complete
- [ ] Phase 5: Validation passed
**Gate Status**:
- [ ] Initial Constitution Check: PASS
- [ ] Post-Design Constitution Check: PASS
- [ ] All NEEDS CLARIFICATION resolved
- [ ] Complexity deviations documented
---
*Based on Constitution v2.1.1 - See `/memory/constitution.md`*

View File

@@ -0,0 +1,116 @@
# Feature Specification: [FEATURE NAME]
**Feature Branch**: `[###-feature-name]`
**Created**: [DATE]
**Status**: Draft
**Input**: User description: "$ARGUMENTS"
## Execution Flow (main)
```
1. Parse user description from Input
→ If empty: ERROR "No feature description provided"
2. Extract key concepts from description
→ Identify: actors, actions, data, constraints
3. For each unclear aspect:
→ Mark with [NEEDS CLARIFICATION: specific question]
4. Fill User Scenarios & Testing section
→ If no clear user flow: ERROR "Cannot determine user scenarios"
5. Generate Functional Requirements
→ Each requirement must be testable
→ Mark ambiguous requirements
6. Identify Key Entities (if data involved)
7. Run Review Checklist
→ If any [NEEDS CLARIFICATION]: WARN "Spec has uncertainties"
→ If implementation details found: ERROR "Remove tech details"
8. Return: SUCCESS (spec ready for planning)
```
---
## ⚡ Quick Guidelines
- ✅ Focus on WHAT users need and WHY
- ❌ Avoid HOW to implement (no tech stack, APIs, code structure)
- 👥 Written for business stakeholders, not developers
### Section Requirements
- **Mandatory sections**: Must be completed for every feature
- **Optional sections**: Include only when relevant to the feature
- When a section doesn't apply, remove it entirely (don't leave as "N/A")
### For AI Generation
When creating this spec from a user prompt:
1. **Mark all ambiguities**: Use [NEEDS CLARIFICATION: specific question] for any assumption you'd need to make
2. **Don't guess**: If the prompt doesn't specify something (e.g., "login system" without auth method), mark it
3. **Think like a tester**: Every vague requirement should fail the "testable and unambiguous" checklist item
4. **Common underspecified areas**:
- User types and permissions
- Data retention/deletion policies
- Performance targets and scale
- Error handling behaviors
- Integration requirements
- Security/compliance needs
---
## User Scenarios & Testing *(mandatory)*
### Primary User Story
[Describe the main user journey in plain language]
### Acceptance Scenarios
1. **Given** [initial state], **When** [action], **Then** [expected outcome]
2. **Given** [initial state], **When** [action], **Then** [expected outcome]
### Edge Cases
- What happens when [boundary condition]?
- How does system handle [error scenario]?
## Requirements *(mandatory)*
### Functional Requirements
- **FR-001**: System MUST [specific capability, e.g., "allow users to create accounts"]
- **FR-002**: System MUST [specific capability, e.g., "validate email addresses"]
- **FR-003**: Users MUST be able to [key interaction, e.g., "reset their password"]
- **FR-004**: System MUST [data requirement, e.g., "persist user preferences"]
- **FR-005**: System MUST [behavior, e.g., "log all security events"]
*Example of marking unclear requirements:*
- **FR-006**: System MUST authenticate users via [NEEDS CLARIFICATION: auth method not specified - email/password, SSO, OAuth?]
- **FR-007**: System MUST retain user data for [NEEDS CLARIFICATION: retention period not specified]
### Key Entities *(include if feature involves data)*
- **[Entity 1]**: [What it represents, key attributes without implementation]
- **[Entity 2]**: [What it represents, relationships to other entities]
---
## Review & Acceptance Checklist
*GATE: Automated checks run during main() execution*
### Content Quality
- [ ] No implementation details (languages, frameworks, APIs)
- [ ] Focused on user value and business needs
- [ ] Written for non-technical stakeholders
- [ ] All mandatory sections completed
### Requirement Completeness
- [ ] No [NEEDS CLARIFICATION] markers remain
- [ ] Requirements are testable and unambiguous
- [ ] Success criteria are measurable
- [ ] Scope is clearly bounded
- [ ] Dependencies and assumptions identified
---
## Execution Status
*Updated by main() during processing*
- [ ] User description parsed
- [ ] Key concepts extracted
- [ ] Ambiguities marked
- [ ] User scenarios defined
- [ ] Requirements generated
- [ ] Entities identified
- [ ] Review checklist passed
---

View File

@@ -0,0 +1,127 @@
# Tasks: [FEATURE NAME]
**Input**: Design documents from `/specs/[###-feature-name]/`
**Prerequisites**: plan.md (required), research.md, data-model.md, contracts/
## Execution Flow (main)
```
1. Load plan.md from feature directory
→ If not found: ERROR "No implementation plan found"
→ Extract: tech stack, libraries, structure
2. Load optional design documents:
→ data-model.md: Extract entities → model tasks
→ contracts/: Each file → contract test task
→ research.md: Extract decisions → setup tasks
3. Generate tasks by category:
→ Setup: project init, dependencies, linting
→ Tests: contract tests, integration tests
→ Core: models, services, CLI commands
→ Integration: DB, middleware, logging
→ Polish: unit tests, performance, docs
4. Apply task rules:
→ Different files = mark [P] for parallel
→ Same file = sequential (no [P])
→ Tests before implementation (TDD)
5. Number tasks sequentially (T001, T002...)
6. Generate dependency graph
7. Create parallel execution examples
8. Validate task completeness:
→ All contracts have tests?
→ All entities have models?
→ All endpoints implemented?
9. Return: SUCCESS (tasks ready for execution)
```
## Format: `[ID] [P?] Description`
- **[P]**: Can run in parallel (different files, no dependencies)
- Include exact file paths in descriptions
## Path Conventions
- **Single project**: `src/`, `tests/` at repository root
- **Web app**: `backend/src/`, `frontend/src/`
- **Mobile**: `api/src/`, `ios/src/` or `android/src/`
- Paths shown below assume single project - adjust based on plan.md structure
## Phase 3.1: Setup
- [ ] T001 Create project structure per implementation plan
- [ ] T002 Initialize [language] project with [framework] dependencies
- [ ] T003 [P] Configure linting and formatting tools
## Phase 3.2: Tests First (TDD) ⚠️ MUST COMPLETE BEFORE 3.3
**CRITICAL: These tests MUST be written and MUST FAIL before ANY implementation**
- [ ] T004 [P] Contract test POST /api/users in tests/contract/test_users_post.py
- [ ] T005 [P] Contract test GET /api/users/{id} in tests/contract/test_users_get.py
- [ ] T006 [P] Integration test user registration in tests/integration/test_registration.py
- [ ] T007 [P] Integration test auth flow in tests/integration/test_auth.py
## Phase 3.3: Core Implementation (ONLY after tests are failing)
- [ ] T008 [P] User model in src/models/user.py
- [ ] T009 [P] UserService CRUD in src/services/user_service.py
- [ ] T010 [P] CLI --create-user in src/cli/user_commands.py
- [ ] T011 POST /api/users endpoint
- [ ] T012 GET /api/users/{id} endpoint
- [ ] T013 Input validation
- [ ] T014 Error handling and logging
## Phase 3.4: Integration
- [ ] T015 Connect UserService to DB
- [ ] T016 Auth middleware
- [ ] T017 Request/response logging
- [ ] T018 CORS and security headers
## Phase 3.5: Polish
- [ ] T019 [P] Unit tests for validation in tests/unit/test_validation.py
- [ ] T020 Performance tests (<200ms)
- [ ] T021 [P] Update docs/api.md
- [ ] T022 Remove duplication
- [ ] T023 Run manual-testing.md
## Dependencies
- Tests (T004-T007) before implementation (T008-T014)
- T008 blocks T009, T015
- T016 blocks T018
- Implementation before polish (T019-T023)
## Parallel Example
```
# Launch T004-T007 together:
Task: "Contract test POST /api/users in tests/contract/test_users_post.py"
Task: "Contract test GET /api/users/{id} in tests/contract/test_users_get.py"
Task: "Integration test registration in tests/integration/test_registration.py"
Task: "Integration test auth in tests/integration/test_auth.py"
```
## Notes
- [P] tasks = different files, no dependencies
- Verify tests fail before implementing
- Commit after each task
- Avoid: vague tasks, same file conflicts
## Task Generation Rules
*Applied during main() execution*
1. **From Contracts**:
- Each contract file contract test task [P]
- Each endpoint implementation task
2. **From Data Model**:
- Each entity model creation task [P]
- Relationships service layer tasks
3. **From User Stories**:
- Each story integration test [P]
- Quickstart scenarios validation tasks
4. **Ordering**:
- Setup Tests Models Services Endpoints Polish
- Dependencies block parallel execution
## Validation Checklist
*GATE: Checked by main() before returning*
- [ ] All contracts have corresponding tests
- [ ] All entities have model tasks
- [ ] All tests come before implementation
- [ ] Parallel tasks truly independent
- [ ] Each task specifies exact file path
- [ ] No task modifies same file as another [P] task

29
GEMINI.md Normal file
View File

@@ -0,0 +1,29 @@
# Project Overview
This project is for managing the sitemap and integrations of the website `enchun.tw`.
# Key Files
* `GEMINI.md`: This file, providing context for the project.
* `enchun-sitemap.md`: The sitemap of the website.
* `cms_structure.md`: The structure of the CMS collections.
* `integrations.md`: The third-party services, custom code, and form integrations.
# Usage
The primary objectives of this project are:
1. Generate and maintain the sitemap for `enchun.tw`.
2. Document the CMS collection structure.
3. Document the third-party services, custom code, and form integrations.
## Sitemap Generation
The sitemap was generated by accessing `https://enchun.tw/sitemap.xml` and parsing the XML content. The sitemap is stored in `enchun-sitemap.md`.
## CMS Collection Structure
The CMS collection structure was documented by navigating to the Webflow admin panel and inspecting the settings for each collection. The structure is stored in `cms_structure.md`.
## Integrations
The third-party services, custom code, and form integrations were documented by navigating to the "Site settings" in the Webflow admin panel. The information is stored in `integrations.md`.

33
cms_structure.md Normal file
View File

@@ -0,0 +1,33 @@
## CMS Collection Structure
This document outlines the structure of the CMS collections found at https://enchun.design.webflow.com/?workflow=cms.
### 網站設計範本s (Website Design Templates)
* **project**: Plain text (Required)
* **Slug**: Plain text (Required)
* **url**: Link
* **image**: Image
* **description**: Plain text
* **網站類型**: Option
### 文章分類s (Article Categories)
* **分類名稱**: Plain text (Required)
* **Slug**: Plain text (Required)
* **英文分類名稱**: Plain text
* **順序**: Number
* **文字顏色**: Color
* **分類顏色**: Color
### 行銷放大鏡集 (Marketing Magnifier)
* **文章標題**: Plain text (Required)
* **Slug**: Plain text (Required)
* **強調圖片**: Image
* **Open Graph 顯示圖片**: Image
* **文章簡述**: Plain text
* **發文日期**: Date/Time
* **文章分類**: Reference
* **發文內容**: Rich text
* **是否放在頁尾**: Switch

114
enchun-sitemap.html Normal file
View File

@@ -0,0 +1,114 @@
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>恩群數位網站地圖</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #f5f5f5;
}
.container {
background: white;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
h1 {
color: #333;
border-bottom: 3px solid #007bff;
padding-bottom: 10px;
}
ul {
list-style: none;
padding: 0;
}
li {
margin: 8px 0;
padding: 5px 0;
border-bottom: 1px solid #eee;
}
a {
color: #007bff;
text-decoration: none;
display: block;
padding: 8px;
border-radius: 4px;
transition: background-color 0.2s;
}
a:hover {
background-color: #f8f9fa;
text-decoration: underline;
}
.url-text {
font-family: monospace;
font-size: 0.9em;
}
</style>
</head>
<body>
<div class="container">
<h1>恩群數位網站地圖</h1>
<ul>
<li><a href="https://enchun.tw" target="_blank" class="url-text">https://enchun.tw</a></li>
<li><a href="https://enchun.tw/about-enchun" target="_blank" class="url-text">https://enchun.tw/about-enchun</a></li>
<li><a href="https://enchun.tw/contact-us" target="_blank" class="url-text">https://enchun.tw/contact-us</a></li>
<li><a href="https://enchun.tw/marketing-solutions" target="_blank" class="url-text">https://enchun.tw/marketing-solutions</a></li>
<li><a href="https://enchun.tw/news" target="_blank" class="url-text">https://enchun.tw/news</a></li>
<li><a href="https://enchun.tw/teams" target="_blank" class="url-text">https://enchun.tw/teams</a></li>
<li><a href="https://enchun.tw/checkout" target="_blank" class="url-text">https://enchun.tw/checkout</a></li>
<li><a href="https://enchun.tw/paypal-checkout" target="_blank" class="url-text">https://enchun.tw/paypal-checkout</a></li>
<li><a href="https://enchun.tw/order-confirmation" target="_blank" class="url-text">https://enchun.tw/order-confirmation</a></li>
<li><a href="https://enchun.tw/marketingclass" target="_blank" class="url-text">https://enchun.tw/marketingclass</a></li>
<li><a href="https://enchun.tw/website-portfolio" target="_blank" class="url-text">https://enchun.tw/website-portfolio</a></li>
<li><a href="https://enchun.tw/rte" target="_blank" class="url-text">https://enchun.tw/rte</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/2-zhao-yao-kong-xiao-fei-zhe-de-xin" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/2-zhao-yao-kong-xiao-fei-zhe-de-xin</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/2022-jie-qing-xing-xiao-quan-gong-lue" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/2022-jie-qing-xing-xiao-quan-gong-lue</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/2022zuixin-google" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/2022zuixin-google</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/2024googleshang" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/2024googleshang</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/2025huan" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/2025huan</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/2025xingxiaozhishi" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/2025xingxiaozhishi</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/bu-cang-si-da-gong-kai" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/bu-cang-si-da-gong-kai</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/da-sheng-ji" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/da-sheng-ji</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang-5" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang-5</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-lian-shu-xiao-xue-tang" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-lian-shu-xiao-xue-tang</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse-bai-hua-wen" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse-bai-hua-wen</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/facebook-mjing-yin" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/facebook-mjing-yin</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/faceookshequz" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/faceookshequz</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/fu-ping-ye-shi-yi-zhong-shang-ji" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/fu-ping-ye-shi-yi-zhong-shang-ji</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/google-comment-delete" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/google-comment-delete</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/googlecomment" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/googlecomment</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/googlemybusiness-optimization" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/googlemybusiness-optimization</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/googleping" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/googleping</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/hu-nian-ji-xiang-hua-5" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/hu-nian-ji-xiang-hua-5</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/issue-with-gmb-verification" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/issue-with-gmb-verification</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/ni-de-huang-jin-di-duan-zu-chuan-mi-fang-jiu-bu-xu-yao-wang-lu-xing-xiao-liao-ma-a" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/ni-de-huang-jin-di-duan-zu-chuan-mi-fang-jiu-bu-xu-yao-wang-lu-xing-xiao-liao-ma-a</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/ni-xin-ma-ni-xian-zai-kan-de-zhe-pian-wen-jia-zhi-2500-wan-tai-bi-5" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/ni-xin-ma-ni-xian-zai-kan-de-zhe-pian-wen-jia-zhi-2500-wan-tai-bi-5</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/optimize-gmb-for-local-seo" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/optimize-gmb-for-local-seo</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/paiming" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/paiming</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-guan-jian-zi" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-guan-jian-zi</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-jing-ying-mi-ji" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-jing-ying-mi-ji</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/shitidianjia" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/shitidianjia</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/storytelling" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/storytelling</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/xi-jing-biao-ti-de-5-ge-jue-qiao-7" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/xi-jing-biao-ti-de-5-ge-jue-qiao-7</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/xiugai-google" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/xiugai-google</a></li>
<li><a href="https://enchun.tw/xing-xiao-fang-da-jing/zheng-que-de-hashtag-dai-ni-shang-tian-tang" target="_blank" class="url-text">https://enchun.tw/xing-xiao-fang-da-jing/zheng-que-de-hashtag-dai-ni-shang-tian-tang</a></li>
<li><a href="https://enchun.tw/wen-zhang-fen-lei/en-qun-shu-wei-zui-xin-gong-gao" target="_blank" class="url-text">https://enchun.tw/wen-zhang-fen-lei/en-qun-shu-wei-zui-xin-gong-gao</a></li>
<li><a href="https://enchun.tw/wen-zhang-fen-lei/google-xiao-xue-tang" target="_blank" class="url-text">https://enchun.tw/wen-zhang-fen-lei/google-xiao-xue-tang</a></li>
<li><a href="https://enchun.tw/wen-zhang-fen-lei/meta-xiao-xue-tang" target="_blank" class="url-text">https://enchun.tw/wen-zhang-fen-lei/meta-xiao-xue-tang</a></li>
<li><a href="https://enchun.tw/wen-zhang-fen-lei/xing-xiao-shi-shi-zui-qian-xian" target="_blank" class="url-text">https://enchun.tw/wen-zhang-fen-lei/xing-xiao-shi-shi-zui-qian-xian</a></li>
<li><a href="https://enchun.tw/webdesign-profolio/web-design-project-2" target="_blank" class="url-text">https://enchun.tw/webdesign-profolio/web-design-project-2</a></li>
<li><a href="https://enchun.tw/webdesign-profolio/web-design-project-3" target="_blank" class="url-text">https://enchun.tw/webdesign-profolio/web-design-project-3</a></li>
<li><a href="https://enchun.tw/webdesign-profolio/web-design-project-4" target="_blank" class="url-text">https://enchun.tw/webdesign-profolio/web-design-project-4</a></li>
<li><a href="https://enchun.tw/webdesign-profolio/web-design-project-5" target="_blank" class="url-text">https://enchun.tw/webdesign-profolio/web-design-project-5</a></li>
</ul>
</div>
</body>
</html>

53
enchun-sitemap.md Normal file
View File

@@ -0,0 +1,53 @@
https://enchun.tw
https://enchun.tw/about-enchun
https://enchun.tw/contact-us
https://enchun.tw/marketing-solutions
https://enchun.tw/news
https://enchun.tw/teams
https://enchun.tw/checkout
https://enchun.tw/paypal-checkout
https://enchun.tw/order-confirmation
https://enchun.tw/marketingclass
https://enchun.tw/website-portfolio
https://enchun.tw/rte
https://enchun.tw/xing-xiao-fang-da-jing/2-zhao-yao-kong-xiao-fei-zhe-de-xin
https://enchun.tw/xing-xiao-fang-da-jing/2022-jie-qing-xing-xiao-quan-gong-lue
https://enchun.tw/xing-xiao-fang-da-jing/2022zuixin-google
https://enchun.tw/xing-xiao-fang-da-jing/2024googleshang
https://enchun.tw/xing-xiao-fang-da-jing/2025huan
https://enchun.tw/xing-xiao-fang-da-jing/2025xingxiaozhishi
https://enchun.tw/xing-xiao-fang-da-jing/bu-cang-si-da-gong-kai
https://enchun.tw/xing-xiao-fang-da-jing/da-sheng-ji
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang-5
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-lian-shu-xiao-xue-tang
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse-bai-hua-wen
https://enchun.tw/xing-xiao-fang-da-jing/facebook-mjing-yin
https://enchun.tw/xing-xiao-fang-da-jing/faceookshequz
https://enchun.tw/xing-xiao-fang-da-jing/fu-ping-ye-shi-yi-zhong-shang-ji
https://enchun.tw/xing-xiao-fang-da-jing/google-comment-delete
https://enchun.tw/xing-xiao-fang-da-jing/googlecomment
https://enchun.tw/xing-xiao-fang-da-jing/googlemybusiness-optimization
https://enchun.tw/xing-xiao-fang-da-jing/googleping
https://enchun.tw/xing-xiao-fang-da-jing/hu-nian-ji-xiang-hua-5
https://enchun.tw/xing-xiao-fang-da-jing/issue-with-gmb-verification
https://enchun.tw/xing-xiao-fang-da-jing/ni-de-huang-jin-di-duan-zu-chuan-mi-fang-jiu-bu-xu-yao-wang-lu-xing-xiao-liao-ma-a
https://enchun.tw/xing-xiao-fang-da-jing/ni-xin-ma-ni-xian-zai-kan-de-zhe-pian-wen-jia-zhi-2500-wan-tai-bi-5
https://enchun.tw/xing-xiao-fang-da-jing/optimize-gmb-for-local-seo
https://enchun.tw/xing-xiao-fang-da-jing/paiming
https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-guan-jian-zi
https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-jing-ying-mi-ji
https://enchun.tw/xing-xiao-fang-da-jing/shitidianjia
https://enchun.tw/xing-xiao-fang-da-jing/storytelling
https://enchun.tw/xing-xiao-fang-da-jing/xi-jing-biao-ti-de-5-ge-jue-qiao-7
https://enchun.tw/xing-xiao-fang-da-jing/xiugai-google
https://enchun.tw/xing-xiao-fang-da-jing/zheng-que-de-hashtag-dai-ni-shang-tian-tang
https://enchun.tw/wen-zhang-fen-lei/en-qun-shu-wei-zui-xin-gong-gao
https://enchun.tw/wen-zhang-fen-lei/google-xiao-xue-tang
https://enchun.tw/wen-zhang-fen-lei/meta-xiao-xue-tang
https://enchun.tw/wen-zhang-fen-lei/xing-xiao-shi-shi-zui-qian-xian
https://enchun.tw/webdesign-profolio/web-design-project-2
https://enchun.tw/webdesign-profolio/web-design-project-3
https://enchun.tw/webdesign-profolio/web-design-project-4
https://enchun.tw/webdesign-profolio/web-design-project-5

53
enchun-sitemap.txt Normal file
View File

@@ -0,0 +1,53 @@
https://enchun.tw
https://enchun.tw/about-enchun
https://enchun.tw/contact-us
https://enchun.tw/marketing-solutions
https://enchun.tw/news
https://enchun.tw/teams
https://enchun.tw/checkout
https://enchun.tw/paypal-checkout
https://enchun.tw/order-confirmation
https://enchun.tw/marketingclass
https://enchun.tw/website-portfolio
https://enchun.tw/rte
https://enchun.tw/xing-xiao-fang-da-jing/2-zhao-yao-kong-xiao-fei-zhe-de-xin
https://enchun.tw/xing-xiao-fang-da-jing/2022-jie-qing-xing-xiao-quan-gong-lue
https://enchun.tw/xing-xiao-fang-da-jing/2022zuixin-google
https://enchun.tw/xing-xiao-fang-da-jing/2024googleshang
https://enchun.tw/xing-xiao-fang-da-jing/2025huan
https://enchun.tw/xing-xiao-fang-da-jing/2025xingxiaozhishi
https://enchun.tw/xing-xiao-fang-da-jing/bu-cang-si-da-gong-kai
https://enchun.tw/xing-xiao-fang-da-jing/da-sheng-ji
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-google-xiao-xue-tang-5
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-lian-shu-xiao-xue-tang
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse
https://enchun.tw/xing-xiao-fang-da-jing/en-qun-shu-wei-x-metaverse-bai-hua-wen
https://enchun.tw/xing-xiao-fang-da-jing/facebook-mjing-yin
https://enchun.tw/xing-xiao-fang-da-jing/faceookshequz
https://enchun.tw/xing-xiao-fang-da-jing/fu-ping-ye-shi-yi-zhong-shang-ji
https://enchun.tw/xing-xiao-fang-da-jing/google-comment-delete
https://enchun.tw/xing-xiao-fang-da-jing/googlecomment
https://enchun.tw/xing-xiao-fang-da-jing/googlemybusiness-optimization
https://enchun.tw/xing-xiao-fang-da-jing/googleping
https://enchun.tw/xing-xiao-fang-da-jing/hu-nian-ji-xiang-hua-5
https://enchun.tw/xing-xiao-fang-da-jing/issue-with-gmb-verification
https://enchun.tw/xing-xiao-fang-da-jing/ni-de-huang-jin-di-duan-zu-chuan-mi-fang-jiu-bu-xu-yao-wang-lu-xing-xiao-liao-ma-a
https://enchun.tw/xing-xiao-fang-da-jing/ni-xin-ma-ni-xian-zai-kan-de-zhe-pian-wen-jia-zhi-2500-wan-tai-bi-5
https://enchun.tw/xing-xiao-fang-da-jing/optimize-gmb-for-local-seo
https://enchun.tw/xing-xiao-fang-da-jing/paiming
https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-guan-jian-zi
https://enchun.tw/xing-xiao-fang-da-jing/shang-jia-jing-ying-mi-ji
https://enchun.tw/xing-xiao-fang-da-jing/shitidianjia
https://enchun.tw/xing-xiao-fang-da-jing/storytelling
https://enchun.tw/xing-xiao-fang-da-jing/xi-jing-biao-ti-de-5-ge-jue-qiao-7
https://enchun.tw/xing-xiao-fang-da-jing/xiugai-google
https://enchun.tw/xing-xiao-fang-da-jing/zheng-que-de-hashtag-dai-ni-shang-tian-tang
https://enchun.tw/wen-zhang-fen-lei/en-qun-shu-wei-zui-xin-gong-gao
https://enchun.tw/wen-zhang-fen-lei/google-xiao-xue-tang
https://enchun.tw/wen-zhang-fen-lei/meta-xiao-xue-tang
https://enchun.tw/wen-zhang-fen-lei/xing-xiao-shi-shi-zui-qian-xian
https://enchun.tw/webdesign-profolio/web-design-project-2
https://enchun.tw/webdesign-profolio/web-design-project-3
https://enchun.tw/webdesign-profolio/web-design-project-4
https://enchun.tw/webdesign-profolio/web-design-project-5

File diff suppressed because it is too large Load Diff

36
integrations.md Normal file
View File

@@ -0,0 +1,36 @@
# Integrations
This document outlines the third-party services, custom code, and form integrations for the website `enchun.tw`.
## 第三方服務 (Apps & Integrations)
* **Google Analytics:**
* Measurement ID: `G-DKBZWCGGZR`
* **Google Maps:**
* No API key is set.
* **Meta Pixel:**
* No Pixel ID is set.
* **Connected Apps:**
* "n8n form" is connected.
* **API access:**
* Two API tokens have been generated: "n8n form" and "n8n-api".
* **Webhooks:**
* One webhook is set up for "Form submission" to `https://n8n.itslouis.cc/webhook/d3f9007d-d6a6-48a7-9e6c-903c426533c6/webhook`.
## 自訂程式碼 (Custom code)
* **Head code:** No custom code has been added to the `<head>` tag.
* **Footer code:** No custom code has been added to the `<body>` tag.
## 表單整合 (Forms)
* **Form notifications:**
* **Sender name:** `enchun form`
* **Send form submissions to:** `enchun2021web@gmail.com`
* **Subject line:** `"來自{{siteName}}有新的客戶發的聯絡資料"`
* **Reply to address:** `"{{ Name }} < {{ Email }} >"`
* **Email template:** `"客戶 {{ Name }} 發的訊息,裡面寫:{{ Message }} 他的電話是:{{Phone}}"`
* **reCAPTCHA validation:**
* **reCAPTCHA v2 site key:** `6Ld5cEoeAAAAAAAt_BiUpx3HDQL2jRCX--oM1cjd`
* **reCAPTCHA v2 secret key:** `6Ld5cEoeAAAAANTnevu9UigNg1pLdGPd3-gjmjIx`
* **Form submissions:** A list of form submissions is visible on this page.

45
style-css.md Normal file
View File

@@ -0,0 +1,45 @@
# General Styles Documentation for enchun.tw
This document outlines the general styles (fonts and colors) for the website, based on an analysis of the primary CSS file `enchun.webflow.shared.557e15b5a.css`.
## Color Palette
The color scheme is clean and professional, utilizing a primary blue for interactive elements and various shades of gray for text and backgrounds.
| Color | Hex Value | Description |
| :------------- | :------------ | :---------------------------------------- |
| **Text** | `#333333` | The primary color for body text. |
| **White** | `#ffffff` | Used for backgrounds and button text. |
| **Primary Blue** | `#3898ec` | Used for buttons and focus indicators. |
| **Link Blue** | `#0082f3` | Used for current/active navigation links. |
| **Light Gray** | `#e2e2e2` | Used for borders (e.g., blockquotes). |
| **Medium Gray**| `#dddddd` | Used for UI element backgrounds. |
| **Error Red** | `#ffdede` | Background color for form failure messages. |
| **Black (Overlay)** | `#000000e6` | A semi-transparent black for overlays. |
## Typography
The website uses a modern, sans-serif font for readability. While the CSS file specifies Arial as a fallback, the live site primarily uses "Noto Sans TC".
### **Body Text**
* **Font Family:** `Noto Sans TC`, `Arial`, `sans-serif`
* **Font Size:** `14px`
* **Line Height:** `20px`
* **Color:** `#333333`
### **Headings**
All headings share a `font-weight` of `bold`.
* **Heading H1**
* **Font Size:** `38px`
* **Line Height:** `44px`
* **Heading H2**
* **Font Size:** `32px`
* **Line Height:** `36px`
* **Heading H3**
* **Font Size:** `24px`
* **Line Height:** `30px`

View File

@@ -0,0 +1,5 @@
分類名稱,Slug,Collection ID,Item ID,Archived,Draft,Created On,Updated On,Published On,英文分類名稱,順序,文字顏色,分類顏色
恩群數位最新公告,en-qun-shu-wei-zui-xin-gong-gao,61f24aa108528bcf00942caa,61f24aa108528bd3eb942cce,false,false,Tue Jan 18 2022 15:41:22 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 10:50:41 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time),Updates From Enchun,4,#bf9843,#f2e7ce
Google小學堂,google-xiao-xue-tang,61f24aa108528bcf00942caa,61f24aa108528baaac942cbb,false,false,Tue Jan 18 2022 15:35:42 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 10:50:28 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time),News About Google,1,#d84038,#f2c4c2
Meta小學堂,meta-xiao-xue-tang,61f24aa108528bcf00942caa,61f24aa108528b8928942cfe,false,false,Thu Jan 20 2022 08:11:14 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 10:50:32 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time),News About Meta,2,#187c70,#b8e5e0
行銷時事最前線,xing-xiao-shi-shi-zui-qian-xian,61f24aa108528bcf00942caa,61f24aa108528bcb57942ce0,false,false,Tue Jan 18 2022 15:41:58 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 10:50:36 GMT+0000 (Coordinated Universal Time),Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time),News About Marketing,3,#8974de,#dad5ed
1 分類名稱 Slug Collection ID Item ID Archived Draft Created On Updated On Published On 英文分類名稱 順序 文字顏色 分類顏色
2 恩群數位最新公告 en-qun-shu-wei-zui-xin-gong-gao 61f24aa108528bcf00942caa 61f24aa108528bd3eb942cce false false Tue Jan 18 2022 15:41:22 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 10:50:41 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time) Updates From Enchun 4 #bf9843 #f2e7ce
3 Google小學堂 google-xiao-xue-tang 61f24aa108528bcf00942caa 61f24aa108528baaac942cbb false false Tue Jan 18 2022 15:35:42 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 10:50:28 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time) News About Google 1 #d84038 #f2c4c2
4 Meta小學堂 meta-xiao-xue-tang 61f24aa108528bcf00942caa 61f24aa108528b8928942cfe false false Thu Jan 20 2022 08:11:14 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 10:50:32 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time) News About Meta 2 #187c70 #b8e5e0
5 行銷時事最前線 xing-xiao-shi-shi-zui-qian-xian 61f24aa108528bcf00942caa 61f24aa108528bcb57942ce0 false false Tue Jan 18 2022 15:41:58 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 10:50:36 GMT+0000 (Coordinated Universal Time) Tue Feb 08 2022 11:05:53 GMT+0000 (Coordinated Universal Time) News About Marketing 3 #8974de #dad5ed

View File

@@ -0,0 +1,6 @@
project,Slug,Collection ID,Item ID,Archived,Draft,Created On,Updated On,Published On,url,image,description,網站類型
Modern E-commerce Website,web-design-project-1,67a979f6893d953f56b24892,67a97a220cac64aeaa8fcea2,true,false,Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time),Mon Feb 10 2025 08:21:35 GMT+0000 (Coordinated Universal Time),,https://example.com/ecommerce-website,https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a97a1c0cac64aeaa8fcc56_image16.jpeg,"A sleek and modern e-commerce website designed to enhance user experience and increase sales. This project features a responsive layout, intuitive navigation, and integrated payment solutions.",專業電商
物流業官方網站,web-design-project-2,67a979f6893d953f56b24892,67a97a220cac64aeaa8fcea8,false,false,Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time),Mon Feb 10 2025 07:52:15 GMT+0000 (Coordinated Universal Time),Mon Feb 10 2025 08:28:28 GMT+0000 (Coordinated Universal Time),https://website-freight-kfc.pages.dev/,https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a9acb0737c25d4ba894081_freight_website_design.webp,專業、高效的物流網站已成為必然趨勢,透過設計出操作便捷的物流網站,以滿足現代物流業務的需求。提供線上客服功能,解答客戶疑問提供幫助。,客戶預約
美髮業預約頁面,web-design-project-3,67a979f6893d953f56b24892,67a97a220cac64aeaa8fcead,false,false,Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time),Tue Feb 11 2025 04:11:24 GMT+0000 (Coordinated Universal Time),Tue Feb 11 2025 04:14:09 GMT+0000 (Coordinated Universal Time),https://hairsalon-booking.pages.dev/,https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67aacde54fbce6ce004c18d2_booking_website_design_alt.webp,美髮官網線上預約系統,透過便捷高效的線上預約系統已成為吸引顧客、提升服務品質的關鍵。一個專業、時尚、易於操作的線上平台,讓顧客隨時隨地輕鬆預約美髮服務,同時展示美髮店的專業形象、服務特色及最新資訊。,客戶預約
BioNova銷售頁,web-design-project-4,67a979f6893d953f56b24892,67a97a220cac64aeaa8fceaf,false,false,Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time),Mon Feb 10 2025 06:47:02 GMT+0000 (Coordinated Universal Time),Mon Feb 10 2025 07:03:19 GMT+0000 (Coordinated Universal Time),https://bionova-website.pages.dev/,https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a9a0aa4ef074c15c2b4409_landingpage_website_design.webp,本網站以簡潔、專業、易於操作的介面,向受眾傳達 BioNova 超能複方菁萃膠囊的產品特色、優勢及功效,並鼓勵消費者立即購買。,一頁式銷售
Saas 一頁式頁面,web-design-project-5,67a979f6893d953f56b24892,67a97a220cac64aeaa8fceb1,false,false,Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time),Mon Feb 10 2025 08:32:09 GMT+0000 (Coordinated Universal Time),Tue Feb 11 2025 04:14:09 GMT+0000 (Coordinated Universal Time),https://saas-landing-page-eua.pages.dev,https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a99c71f1be7be0b6fb5b6b_saas_website_design.webp,現代SaaS一頁式網站吸引目標客戶並提升轉化率而設計。採用React、Tailwind CSS和TypeScript等先進技術構建響應式流暢導航、視覺效果和性能。非常適合初創公司和科技新創,一頁式銷售
1 project Slug Collection ID Item ID Archived Draft Created On Updated On Published On url image description 網站類型
2 Modern E-commerce Website web-design-project-1 67a979f6893d953f56b24892 67a97a220cac64aeaa8fcea2 true false Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time) Mon Feb 10 2025 08:21:35 GMT+0000 (Coordinated Universal Time) https://example.com/ecommerce-website https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a97a1c0cac64aeaa8fcc56_image16.jpeg A sleek and modern e-commerce website designed to enhance user experience and increase sales. This project features a responsive layout, intuitive navigation, and integrated payment solutions. 專業電商
3 物流業官方網站 web-design-project-2 67a979f6893d953f56b24892 67a97a220cac64aeaa8fcea8 false false Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time) Mon Feb 10 2025 07:52:15 GMT+0000 (Coordinated Universal Time) Mon Feb 10 2025 08:28:28 GMT+0000 (Coordinated Universal Time) https://website-freight-kfc.pages.dev/ https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a9acb0737c25d4ba894081_freight_website_design.webp 專業、高效的物流網站已成為必然趨勢,透過設計出操作便捷的物流網站,以滿足現代物流業務的需求。提供線上客服功能,解答客戶疑問提供幫助。 客戶預約
4 美髮業預約頁面 web-design-project-3 67a979f6893d953f56b24892 67a97a220cac64aeaa8fcead false false Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time) Tue Feb 11 2025 04:11:24 GMT+0000 (Coordinated Universal Time) Tue Feb 11 2025 04:14:09 GMT+0000 (Coordinated Universal Time) https://hairsalon-booking.pages.dev/ https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67aacde54fbce6ce004c18d2_booking_website_design_alt.webp 美髮官網線上預約系統,透過便捷高效的線上預約系統已成為吸引顧客、提升服務品質的關鍵。一個專業、時尚、易於操作的線上平台,讓顧客隨時隨地輕鬆預約美髮服務,同時展示美髮店的專業形象、服務特色及最新資訊。 客戶預約
5 BioNova銷售頁 web-design-project-4 67a979f6893d953f56b24892 67a97a220cac64aeaa8fceaf false false Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time) Mon Feb 10 2025 06:47:02 GMT+0000 (Coordinated Universal Time) Mon Feb 10 2025 07:03:19 GMT+0000 (Coordinated Universal Time) https://bionova-website.pages.dev/ https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a9a0aa4ef074c15c2b4409_landingpage_website_design.webp 本網站以簡潔、專業、易於操作的介面,向受眾傳達 BioNova 超能複方菁萃膠囊的產品特色、優勢及功效,並鼓勵消費者立即購買。 一頁式銷售
6 Saas 一頁式頁面 web-design-project-5 67a979f6893d953f56b24892 67a97a220cac64aeaa8fceb1 false false Mon Feb 10 2025 04:01:38 GMT+0000 (Coordinated Universal Time) Mon Feb 10 2025 08:32:09 GMT+0000 (Coordinated Universal Time) Tue Feb 11 2025 04:14:09 GMT+0000 (Coordinated Universal Time) https://saas-landing-page-eua.pages.dev https://cdn.prod.website-files.com/61f24aa108528b6d51942ca8/67a99c71f1be7be0b6fb5b6b_saas_website_design.webp 現代SaaS一頁式網站,吸引目標客戶並提升轉化率而設計。採用React、Tailwind CSS和TypeScript等先進技術構建,響應式流暢導航、視覺效果和性能。非常適合初創公司和科技新創 一頁式銷售

File diff suppressed because one or more lines are too long