Action | Type | Resolved On |
|---|---|---|
| Project Office | feature | 2026-01-13 |
The Project Office is a dedicated system for following up projects created and managed within the BearLabs ecosystem. Each project gets its own standalone page that can be embedded into bearlabs.net, providing a public-facing view of ongoing learning & creative endeavors.
Implemented embed mode functionality for all project kanban board pages to enable iframe embedding into bearlabs.net.
Query Strategy:
?embed=true URL parameterData Fetching:
src/lib/monthly.ts functions (levels()) to fetch backlog items and tasksproject.ilike('%project-name%')UI Implementation: The solution adds conditional rendering to project pages:
?embed=true): Minimal layout with just the kanban board and marginUpdated all [...tab].astro files in both locations:
Current Month Projects (/src/pages/2025/12/benben/projects/):
bearlabs/[...tab].astrobenben/[...tab].astrohygge/[...tab].astrowalkingweekend/[...tab].astroBase Projects (/src/pages/benben/projects/):
bearlabs/[...tab].astrobenben/[...tab].astrohygge/[...tab].astrowalkingweekend/[...tab].astroEach file now includes:
Import EmbedLayout
import EmbedLayout from "@/layouts/Layout.astro";
Embed Parameter Detection
let embed = Astro.url.searchParams.get("embed");
Conditional Rendering
{!embed && (
<Layout menu="Projects" heading="Project Name" focus={focus}>
<Breadcrumb theme={themes.text} loc={loc} />
<Board ... />
</Layout>
)}
{embed && (
<EmbedLayout>
<div class="m-6">
<Board ... />
</div>
</EmbedLayout>
)}
Standalone View:
/2025/12/benben/projects/bearlabs/
/benben/projects/hygge/
Embed View (for bearlabs.net):
/2025/12/benben/projects/bearlabs/?embed=true
/benben/projects/hygge/?embed=true
Embed Code Example:
<iframe
src="https://bearlabs.io/benben/projects/bearlabs/?embed=true"
width="100%"
height="800px"
frameborder="0"
loading="lazy"
></iframe>
src/lib/project-office.ts for cross-month aggregation/project-office/[project]/