Monorepo Foundation: Scaffold memopop-ai with Astro Site and SvelteKit App
Established the production-grade memopop-ai monorepo with Bun workspaces, Astro marketing site, SvelteKit web app skeleton, and shared Tailwind configuration.
Changelog - 2025-12-27 (#1)
MemoPop AI: Monorepo Foundation
Overview
Created the lossless-group/memopop-ai public repository and established a production-grade monorepo structure using Bun workspaces. This provides the foundation for three apps working together: a marketing site, a web application, and an AI agent orchestrator.
Key deliverables:
Monorepo scaffold with Bun workspaces (no Turborepo needed yet)
Astro marketing site with full landing page ported from GitHub Pages
SvelteKit web app skeleton with Svelte 5 runes syntax
Shared Tailwind config as a workspace package
Architecture Decisions
These decisions were documented in context-v/Vision-for-Production-Grade-Memopop-Monorepo.md:
| Decision | Choice | Rationale |
| Package manager | Bun + Bun workspaces | Fast, modern, native workspace support. Turborepo as escape hatch if builds slow down. |
| Frontend (marketing) | Astro | Best static site perf, content collections, no React |
| Frontend (app) | SvelteKit + Svelte 5 | Modern reactivity with runes, no React patterns |
| Styling | Shared Tailwind | Single config in packages/shared-styles/, both apps consume |
| Deployment | Vercel | Existing paid account, great Astro + SvelteKit support |
| Auth | SuperTokens on Railway | Open source, self-hosted, full control |
| Database | Baserow on Railway | Open source, self-hosted, easy data management |
| Changelog | Distributed per app | Each app has own changelog, aggregated via GitHub raw API |
Monorepo Structure
memopop-ai/
├── apps/
│ ├── memopop-site/ # Astro - Marketing & SEO
│ │ ├── src/
│ │ │ ├── layouts/
│ │ │ │ └── BaseLayout.astro
│ │ │ └── pages/
│ │ │ └── index.astro # Full landing page
│ │ └── changelog/ # Site-specific changes
│ │
│ ├── memopop-web-app/ # SvelteKit + Svelte 5
│ │ ├── src/
│ │ │ └── routes/
│ │ │ ├── +page.svelte # Svelte 5 runes demo
│ │ │ └── +layout.svelte
│ │ └── changelog/ # Web app changes
│ │
│ └── memopop-agent-orchestrator/ # Python (to be migrated)
│ └── changelog/
│
├── packages/
│ └── shared-styles/ # @memopop/shared-styles
│ ├── tailwind.config.js # Shared Tailwind config
│ ├── tokens.js # Design tokens for non-Tailwind use
│ └── globals.css # CSS custom properties + base styles
│
├── package.json # Bun workspaces config
└── README.mdLanding Page Port
Ported the full MemoPop landing page from the GitHub Pages docs/ folder to Astro:
Sections Implemented
Navigation - Sticky header with mobile hamburger menu
Hero - Headline, subheadline, CTAs, animated memo preview
Problem - Pain point validation with bullet list
How It Works - 3-step process cards
Features - 7 feature cards including "Voice of the Firm" highlight
Output Showcase - Dark mode memo mockup with citation callout
Agent Architecture - Flow diagram of 5 key agents
Pricing - 3-tier pricing cards (Starter/Pro/Enterprise)
FAQ - 6-item accordion using native
<details>Final CTA - Gradient background with action button
Footer - Brand, links, social icons
Styling Approach
CSS Variables in
BaseLayout.astrofor themingScoped styles in
index.astrofor page-specific CSSMobile-first responsive design
No Tailwind utility classes yet - CSS ported directly for speed
Shared Styles Package
Created @memopop/shared-styles as a workspace package:
// packages/shared-styles/tailwind.config.js
export default {
theme: {
extend: {
colors: {
primary: '#1a3a52',
secondary: '#1dd3d3',
accent: '#f59e0b',
// ... full palette
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
mono: ['JetBrains Mono', 'monospace'],
},
},
},
};Both apps reference via workspace protocol:
{
"dependencies": {
"@memopop/shared-styles": "workspace:*"
}
}SvelteKit App Skeleton
Initialized with Svelte 5 runes syntax:
<script lang="ts">
// Svelte 5 runes
let count = $state(0);
function increment() {
count++;
}
</script>
<button onclick={increment}>
Count: {count}
</button>Configured with:
Vercel adapter for deployment
TypeScript strict mode
Workspace dependency on
@memopop/shared-styles
Commands
# Install all dependencies
bun install
# Run marketing site
bun run dev:site
# Run web app
bun run dev:app
# Build both
bun run buildNext Steps
Decide domain structure (subdomains vs paths)
Set up Vercel project and deploy
Add changelog content collection to Astro
Implement changelog UI with view toggling (Timeline/Cards/Releases)
Migrate agent orchestrator code from
investment-memo-orchestratorDeploy SuperTokens and Baserow on Railway
Commits
| Hash | Message |
c7e87d9 | scaffold(monorepo): Initialize Bun workspace with Astro site and SvelteKit app |
87311b6 | feat(site): Port landing page from GitHub Pages to Astro |
This changelog documents the initial foundation of the MemoPop AI monorepo.
