Add portfolio template to combined marketing+portfolio template

- Added portfolio pages: portfolio-index, portfolio-about, portfolio-contact
- Added work/[slug].astro for project detail pages
- Added PortfolioBase.astro layout with Playfair Display font
- Added ProjectCard.astro component
- Added projects collection with taxonomies (category, tag)
- Updated theme.css with --font-serif variable
- Added portfolio seed data with 4 projects
- Updated menus to include Work link
This commit is contained in:
Kunthawat Greethong
2026-05-01 13:22:24 +07:00
parent 9147821a16
commit 978bf42e5a
19 changed files with 8804 additions and 7 deletions

191
.omc/project-memory.json Normal file
View File

@@ -0,0 +1,191 @@
{
"version": "1.0.0",
"lastScanned": 1777614137874,
"projectRoot": "/Users/kunthawatgreethong/Gitea/claude-skill/skills/website-creator/templates/astro-emdash-marketing",
"techStack": {
"languages": [
{
"name": "JavaScript/TypeScript",
"version": null,
"confidence": "high",
"markers": [
"package.json"
]
},
{
"name": "TypeScript",
"version": null,
"confidence": "high",
"markers": [
"tsconfig.json"
]
}
],
"frameworks": [
{
"name": "astro",
"version": "6.0.1",
"category": "fullstack"
},
{
"name": "react",
"version": "19.2.4",
"category": "frontend"
},
{
"name": "react-dom",
"version": "19.2.4",
"category": "frontend"
}
],
"packageManager": "npm",
"runtime": null
},
"build": {
"buildCommand": "pnpm build 2>&1",
"testCommand": null,
"lintCommand": null,
"devCommand": "npm run dev",
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"start": "node ./dist/server/entry.mjs",
"bootstrap": "emdash init && emdash seed",
"seed": "emdash seed",
"typecheck": "astro check"
}
},
"conventions": {
"namingStyle": null,
"importStyle": null,
"testPattern": null,
"fileOrganization": "type-based"
},
"structure": {
"isMonorepo": false,
"workspaces": [],
"mainDirectories": [
"public",
"src"
],
"gitBranches": null
},
"customNotes": [],
"directoryMap": {
"public": {
"path": "public",
"purpose": "Public files",
"fileCount": 0,
"lastAccessed": 1777614137858,
"keyFiles": []
},
"seed": {
"path": "seed",
"purpose": null,
"fileCount": 1,
"lastAccessed": 1777614137858,
"keyFiles": [
"seed.json"
]
},
"src": {
"path": "src",
"purpose": "Source code",
"fileCount": 1,
"lastAccessed": 1777614137861,
"keyFiles": [
"live.config.ts"
]
},
"src/components": {
"path": "src/components",
"purpose": "UI components",
"fileCount": 1,
"lastAccessed": 1777614137862,
"keyFiles": [
"MarketingBlocks.astro"
]
},
"src/pages": {
"path": "src/pages",
"purpose": "Page components",
"fileCount": 3,
"lastAccessed": 1777614137862,
"keyFiles": [
"contact.astro",
"index.astro",
"pricing.astro"
]
}
},
"hotPaths": [
{
"path": "seed/seed.json",
"accessCount": 5,
"lastAccessed": 1777616481729,
"type": "file"
},
{
"path": "src/styles/theme.css",
"accessCount": 2,
"lastAccessed": 1777616344900,
"type": "file"
},
{
"path": "src/pages/index.astro",
"accessCount": 1,
"lastAccessed": 1777614147925,
"type": "file"
},
{
"path": "src/layouts/PortfolioBase.astro",
"accessCount": 1,
"lastAccessed": 1777616188780,
"type": "file"
},
{
"path": "src/components/ProjectCard.astro",
"accessCount": 1,
"lastAccessed": 1777616192120,
"type": "file"
},
{
"path": "src/pages/portfolio-index.astro",
"accessCount": 1,
"lastAccessed": 1777616195418,
"type": "file"
},
{
"path": "src/pages/work/[slug].astro",
"accessCount": 1,
"lastAccessed": 1777616198707,
"type": "file"
},
{
"path": "src/pages/about.astro",
"accessCount": 1,
"lastAccessed": 1777616201998,
"type": "file"
},
{
"path": "src/pages/contact.astro",
"accessCount": 1,
"lastAccessed": 1777616210412,
"type": "file"
},
{
"path": "src/pages/portfolio-contact.astro",
"accessCount": 1,
"lastAccessed": 1777616255490,
"type": "file"
},
{
"path": "src/pages/portfolio-about.astro",
"accessCount": 1,
"lastAccessed": 1777616259549,
"type": "file"
}
],
"userDirectives": []
}

View File

@@ -3,3 +3,6 @@
{"t":0,"agent":"a0f2988","agent_type":"Explore","event":"agent_stop","success":true,"duration_ms":35179}
{"t":0,"agent":"a338ed5","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a03ceb2","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a5d5029","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"ada0ac0","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"ae2f4e3","agent_type":"unknown","event":"agent_stop","success":true}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-05-01T05:40:41.335Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -0,0 +1,16 @@
{
"created_at": "2026-05-01T06:12:29.590Z",
"trigger": "auto",
"active_modes": {},
"todo_summary": {
"pending": 0,
"in_progress": 0,
"completed": 0
},
"wisdom_exported": false,
"background_jobs": {
"active": [],
"recent": [],
"stats": null
}
}

View File

@@ -1,5 +1,5 @@
{
"updatedAt": "2026-05-01T04:04:54.735Z",
"updatedAt": "2026-05-01T06:13:19.823Z",
"missions": [
{
"id": "session:33698839-2ad1-4412-9735-43676f5e6beb:none",
@@ -7,7 +7,7 @@
"name": "none",
"objective": "Session mission",
"createdAt": "2026-04-30T23:41:28.830Z",
"updatedAt": "2026-05-01T04:04:54.735Z",
"updatedAt": "2026-05-01T06:13:19.823Z",
"status": "done",
"workerCount": 1,
"taskCounts": {
@@ -27,7 +27,7 @@
"currentStep": null,
"latestUpdate": "completed",
"completedSummary": null,
"updatedAt": "2026-05-01T04:04:54.735Z"
"updatedAt": "2026-05-01T06:13:19.823Z"
}
],
"timeline": [
@@ -62,6 +62,30 @@
"agent": "Explore:a0f2988",
"detail": "completed",
"sourceKey": "session-stop:a03ceb29df0d9439c"
},
{
"id": "session-stop:a5d502987c545569c:2026-05-01T05:42:16.073Z",
"at": "2026-05-01T05:42:16.073Z",
"kind": "completion",
"agent": "Explore:a0f2988",
"detail": "completed",
"sourceKey": "session-stop:a5d502987c545569c"
},
{
"id": "session-stop:ada0ac096cb8f31aa:2026-05-01T05:42:34.397Z",
"at": "2026-05-01T05:42:34.397Z",
"kind": "completion",
"agent": "Explore:a0f2988",
"detail": "completed",
"sourceKey": "session-stop:ada0ac096cb8f31aa"
},
{
"id": "session-stop:ae2f4e3ced71aa12c:2026-05-01T06:13:19.823Z",
"at": "2026-05-01T06:13:19.823Z",
"kind": "completion",
"agent": "Explore:a0f2988",
"detail": "completed",
"sourceKey": "session-stop:ae2f4e3ced71aa12c"
}
]
}

View File

@@ -13,5 +13,5 @@
"total_spawned": 1,
"total_completed": 1,
"total_failed": 0,
"last_updated": "2026-05-01T04:04:54.837Z"
"last_updated": "2026-05-01T06:13:19.923Z"
}