feat(fork-config): add automated fork configuration with npm run configure

Add a complete fork configuration system that allows users to set up their
forked site with a single command or follow manual instructions.

## New files

- FORK_CONFIG.md: Comprehensive guide with two setup options
  - Option 1: Automated JSON config + npm run configure
  - Option 2: Manual step-by-step instructions with code snippets
  - AI agent prompt for automated updates

- fork-config.json.example: JSON template with all configuration fields
  - Site info (name, title, description, URL, domain)
  - GitHub and contact details
  - Creator section for footer links
  - Optional feature toggles (logo gallery, GitHub graph, blog page)
  - Theme selection

- scripts/configure-fork.ts: Automated configuration script
  - Reads fork-config.json and applies changes to all files
  - Updates 11 configuration files in one command
  - Type-safe with ForkConfig interface
  - Detailed console output showing each file updated

## Updated files

- package.json: Added configure script (npm run configure)
- .gitignore: Added fork-config.json to keep user config local
- files.md: Added new fork configuration files
- changelog.md: Added v1.18.0 entry
- changelog-page.md: Added v1.18.0 section with full details
- TASK.md: Updated status and completed tasks
- README.md: Replaced Files to Update section with Fork Configuration
- content/blog/setup-guide.md: Added Fork Configuration Options section
- content/pages/docs.md: Added Fork Configuration section
- content/pages/about.md: Added fork configuration mention
- content/blog/fork-configuration-guide.md: New featured blog post

## Files updated by configure script

| File                                | What it updates                        |
| ----------------------------------- | -------------------------------------- |
| src/config/siteConfig.ts            | Site name, bio, GitHub, features       |
| src/pages/Home.tsx                  | Intro paragraph, footer links          |
| src/pages/Post.tsx                  | SITE_URL, SITE_NAME constants          |
| convex/http.ts                      | SITE_URL, SITE_NAME constants          |
| convex/rss.ts                       | SITE_URL, SITE_TITLE, SITE_DESCRIPTION |
| index.html                          | Meta tags, JSON-LD, page title         |
| public/llms.txt                     | Site info, GitHub link                 |
| public/robots.txt                   | Sitemap URL                            |
| public/openapi.yaml                 | Server URL, site name                  |
| public/.well-known/ai-plugin.json   | Plugin metadata                        |
| src/context/ThemeContext.tsx        | Default theme                          |

## Usage

Automated:
  cp fork-config.json.example fork-config.json
  # Edit fork-config.json
  npm run configure

Manual:
  Follow FORK_CONFIG.md step-by-step guide
This commit is contained in:
Wayne Sutton
2025-12-20 22:15:33 -08:00
parent e10e1098e9
commit 04d08dbada
25 changed files with 2300 additions and 212 deletions

View File

@@ -0,0 +1,172 @@
---
title: "Configure your fork in one command"
description: "Two options to set up your forked markdown framework: automated JSON config with npm run configure, or step-by-step manual guide."
date: "2025-12-20"
slug: "fork-configuration-guide"
published: true
tags: ["configuration", "setup", "fork", "tutorial"]
readTime: "4 min read"
featured: true
featuredOrder: 0
image: "/images/forkconfig.png"
excerpt: "Set up your forked site with npm run configure or follow the manual FORK_CONFIG.md guide."
---
# Configure your fork in one command
After forking this markdown framework, you need to update configuration files with your site information. This affects your site name, URLs, RSS feeds, social sharing metadata, and AI discovery files.
Previously this meant editing 10+ files manually. Now you have two options.
## Option 1: Automated configuration
Run a single command to configure everything at once.
### Step 1: Copy the example config
```bash
cp fork-config.json.example fork-config.json
```
The file `fork-config.json` is gitignored, so your site configuration stays local and does not get committed. The `.example` file remains in the repo as a template for future forks.
### Step 2: Edit the JSON file
Open `fork-config.json` and update the values:
```json
{
"siteName": "Your Site Name",
"siteTitle": "Your Tagline",
"siteDescription": "A one-sentence description of your site.",
"siteUrl": "https://yoursite.netlify.app",
"siteDomain": "yoursite.netlify.app",
"githubUsername": "yourusername",
"githubRepo": "your-repo-name",
"contactEmail": "you@example.com",
"creator": {
"name": "Your Name",
"twitter": "https://x.com/yourhandle",
"linkedin": "https://www.linkedin.com/in/yourprofile/",
"github": "https://github.com/yourusername"
},
"bio": "Write markdown, sync from the terminal. Your content is instantly available to browsers, LLMs, and AI agents.",
"theme": "tan"
}
```
### Step 3: Run the configure script
```bash
npm run configure
```
The script reads your JSON file and updates all 11 configuration files automatically. You should see output like:
```
Fork Configuration Script
=========================
Reading config from fork-config.json...
Updating src/config/siteConfig.ts...
Updating src/pages/Home.tsx...
Updating src/pages/Post.tsx...
Updating convex/http.ts...
Updating convex/rss.ts...
Updating index.html...
Updating public/llms.txt...
Updating public/robots.txt...
Updating public/openapi.yaml...
Updating public/.well-known/ai-plugin.json...
Updating src/context/ThemeContext.tsx...
Configuration complete!
```
## Option 2: Manual configuration
If you prefer to update files manually, follow the guide in `FORK_CONFIG.md`. It includes:
- Code snippets for each configuration file
- Line numbers and exact locations to update
- An AI agent prompt to paste into Claude or ChatGPT for assisted configuration
## What gets updated
The configuration script updates these files:
| File | What changes |
| ----------------------------------- | ----------------------------------------- |
| `src/config/siteConfig.ts` | Site name, bio, GitHub username, features |
| `src/pages/Home.tsx` | Intro paragraph, footer links |
| `src/pages/Post.tsx` | SITE_URL, SITE_NAME constants |
| `convex/http.ts` | SITE_URL, SITE_NAME constants |
| `convex/rss.ts` | SITE_URL, SITE_TITLE, SITE_DESCRIPTION |
| `index.html` | Meta tags, JSON-LD, page title |
| `public/llms.txt` | Site info, GitHub link |
| `public/robots.txt` | Sitemap URL |
| `public/openapi.yaml` | Server URL, site name |
| `public/.well-known/ai-plugin.json` | Plugin metadata |
| `src/context/ThemeContext.tsx` | Default theme |
## Optional settings
The JSON config file supports additional options:
```json
{
"logoGallery": {
"enabled": true,
"title": "Built with",
"scrolling": false,
"maxItems": 4
},
"gitHubContributions": {
"enabled": true,
"showYearNavigation": true,
"linkToProfile": true,
"title": "GitHub Activity"
},
"blogPage": {
"enabled": true,
"showInNav": true,
"title": "Blog",
"description": "Latest posts",
"order": 0
},
"postsDisplay": {
"showOnHome": true,
"showOnBlogPage": true
},
"featuredViewMode": "cards",
"showViewToggle": true,
"theme": "tan"
}
```
These are optional. If you omit them, the script uses sensible defaults.
## After configuring
Once configuration is complete:
1. **Deploy Convex functions**: Run `npx convex deploy` to push the updated backend files
2. **Sync your content**: Run `npm run sync` for development or `npm run sync:prod` for production
3. **Test locally**: Run `npm run dev` and verify your site name, footer, and metadata
4. **Push to git**: Commit all changes and push to trigger a Netlify rebuild
## Existing content
The configuration script only updates site-level settings. It does not modify your markdown content in `content/blog/` or `content/pages/`. Your existing posts and pages remain unchanged.
If you want to clear the sample content, delete the markdown files in those directories before syncing.
## Summary
Two options after forking:
1. **Automated**: `cp fork-config.json.example fork-config.json`, edit JSON, run `npm run configure`
2. **Manual**: Follow `FORK_CONFIG.md` step-by-step or paste the AI prompt into Claude/ChatGPT
Both approaches update the same 11 files. The automated option takes about 30 seconds. The manual option gives you more control over each change.
Fork it, configure it, ship it.

View File

@@ -6,7 +6,7 @@ slug: "markdown-with-code-examples"
published: true
tags: ["markdown", "tutorial", "code"]
readTime: "5 min read"
featured: true
featured: false
featuredOrder: 5
image: "/images/markdown.png"
---

View File

@@ -1,103 +1,223 @@
---
title: "v1.7 to v1.10 - Mobile menu, scroll-to-top, and fork configuration"
description: "New features for mobile navigation, scroll-to-top button, fork configuration documentation, sharing content with AI tools, and improved table styling."
title: "v1.18.0 release: 12 versions of shipping"
description: "Everything new from v1.7 to v1.18.0. Automated fork setup, GitHub contributions graph, write page, mobile menu, aggregates, and more."
date: "2025-12-20"
slug: "raw-markdown-and-copy-improvements"
published: true
tags: ["features", "markdown", "updates", "mobile", "configuration"]
readTime: "5 min read"
tags: ["release", "features", "updates", "developer-tools"]
readTime: "8 min read"
featured: true
featuredOrder: 1
featuredOrder: 2
image: "/images/v17.png"
excerpt: "Mobile menu, scroll-to-top button, fork configuration, raw markdown files, and Generate Skill for AI agents."
excerpt: "12 versions of new features: automated fork config, GitHub graph, write page, mobile menu, stats aggregates, and more."
---
## Fork configuration (v1.10.0)
## What shipped from v1.7 to v1.18
When you fork this project, update these files with your site information:
This post covers 12 versions of updates to the markdown sync framework. From raw markdown files to automated fork configuration, here is everything that changed.
| File | What to update |
| ----------------------------------- | ----------------------------------------------------------- |
| `src/pages/Home.tsx` | Site name, title, intro, bio, featured config, logo gallery |
| `convex/http.ts` | `SITE_URL`, `SITE_NAME` (API responses, sitemap) |
| `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) |
| `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) |
| `index.html` | Title, meta description, OG tags, JSON-LD |
| `public/llms.txt` | Site name, URL, description |
| `public/robots.txt` | Sitemap URL |
| `public/openapi.yaml` | Server URL, site name in examples |
| `public/.well-known/ai-plugin.json` | Site name, descriptions |
## Automated fork configuration (v1.18.0)
These constants affect RSS feeds, API responses, sitemaps, and social sharing metadata.
Fork setup now takes one command:
```bash
cp fork-config.json.example fork-config.json
# Edit fork-config.json with your site info
npm run configure
```
The configure script updates all 11 configuration files:
| File | What it updates |
| ----------------------------------- | -------------------------------------- |
| `src/config/siteConfig.ts` | Site name, bio, GitHub, features |
| `src/pages/Home.tsx` | Intro paragraph, footer links |
| `src/pages/Post.tsx` | SITE_URL, SITE_NAME constants |
| `convex/http.ts` | SITE_URL, SITE_NAME constants |
| `convex/rss.ts` | SITE_URL, SITE_TITLE, SITE_DESCRIPTION |
| `index.html` | Meta tags, JSON-LD, page title |
| `public/llms.txt` | Site info, GitHub link |
| `public/robots.txt` | Sitemap URL |
| `public/openapi.yaml` | Server URL, site name |
| `public/.well-known/ai-plugin.json` | Plugin metadata |
| `src/context/ThemeContext.tsx` | Default theme |
Two options for fork setup:
1. **Automated** (recommended): JSON config file + `npm run configure`
2. **Manual**: Follow step-by-step instructions in `FORK_CONFIG.md`
## GitHub contributions graph (v1.17.0)
The homepage now displays a GitHub-style contribution graph. Configure it in siteConfig:
```typescript
gitHubContributions: {
enabled: true,
username: "your-github-username",
showYearNavigation: true,
linkToProfile: true,
title: "Contributions",
}
```
Features:
- Theme-aware colors (dark, light, tan, cloud each have unique palettes)
- Year navigation with Phosphor CaretLeft/CaretRight icons
- Click the graph to visit the GitHub profile
- Uses public API (no GitHub token required)
- Mobile responsive with scaled cells
## Write page (v1.13.0 to v1.16.0)
A markdown writing page now lives at `/write`. Not linked in navigation. Access it directly.
Three-column layout:
- **Left sidebar**: Home link, content type selector (Blog Post/Page), actions (Clear, Theme, Font)
- **Center**: Full-height writing area with Copy All button
- **Right sidebar**: Frontmatter reference with per-field copy buttons
Features across iterations:
- Font switcher toggles between Serif and Sans-serif
- Theme toggle matches the rest of the app
- localStorage persistence for content, type, and font preference
- Word, line, and character counts in status bar
- Warning banner about refresh losing content
- Works with Grammarly and browser spellcheck
- Mobile responsive with stacked layout
The write page does not connect to Convex. It stores content locally. Copy your markdown and paste it into a file in `content/blog/` or `content/pages/`, then run `npm run sync`.
## Stats aggregates (v1.11.0)
The stats page now uses O(log n) aggregate counts instead of O(n) table scans.
Before: Every stats query scanned the entire pageViews table.
After: Three TableAggregate instances provide pre-computed counts:
- `totalPageViews`: Global view count
- `pageViewsByPath`: Per-page view counts
- `uniqueVisitors`: Distinct session count
Run the backfill after deploying:
```bash
npx convex run stats:backfillAggregates
```
The backfill processes 500 records at a time to stay under the 16MB Convex memory limit. It schedules itself to continue until complete.
Stats queries now respond consistently fast regardless of how many page views exist.
## Dedicated blog page (v1.12.0)
A dedicated `/blog` page now exists. Configure it in siteConfig:
```typescript
blogPage: {
enabled: true, // Enable /blog route
showInNav: true, // Show in navigation
title: "Blog", // Page title
order: 0, // Nav order (lower = first)
},
displayOnHomepage: true, // Also show posts on homepage
```
Navigation combines the Blog link with page links and sorts by order. Set `order: 5` to place Blog after pages with order 0-4.
Centralized configuration now lives in `src/config/siteConfig.ts` instead of scattered across components.
## Fork configuration documentation (v1.10.0)
The docs, setup guide, and README now include a "Files to Update When Forking" section listing all 9 configuration files:
- Frontend: `siteConfig.ts`, `Home.tsx`, `Post.tsx`
- Backend: `http.ts`, `rss.ts`
- HTML: `index.html`
- AI discovery: `llms.txt`, `robots.txt`, `openapi.yaml`, `ai-plugin.json`
## Scroll-to-top button (v1.9.0)
A scroll-to-top button now appears after scrolling 300px. Configure it in `src/components/Layout.tsx`:
A scroll-to-top button appears after scrolling 300px. Configure it in `src/components/Layout.tsx`:
```typescript
const scrollToTopConfig: Partial<ScrollToTopConfig> = {
enabled: true, // Set to false to disable
threshold: 300, // Show after scrolling 300px
enabled: true, // Set false to disable
threshold: 300, // Pixels before showing
smooth: true, // Smooth scroll animation
};
```
The button uses the Phosphor ArrowUp icon and works with all four themes. It uses a passive scroll listener for performance and includes a fade-in animation.
Uses Phosphor ArrowUp icon. Works with all four themes. Passive scroll listener for performance.
## Mobile menu (v1.8.0)
The site now includes a mobile menu with hamburger navigation for smaller screens. On mobile and tablet views, a hamburger icon appears in the top navigation. Tap it to open a slide-out drawer with all page navigation links.
Hamburger navigation for mobile and tablet screens. Tap the icon to open a slide-out drawer with page links.
**Features:**
Features:
- Smooth CSS transform animations
- Keyboard accessible (press Escape to close)
- Keyboard accessible (Escape to close)
- Focus trap for screen reader support
- Home link at the bottom of the drawer
- Auto-closes when navigating to a new page
- Auto-closes when navigating
The desktop navigation remains unchanged. The mobile menu only appears on screens below 1024px.
Desktop navigation stays unchanged. Mobile menu only appears below 1024px.
## Static raw markdown files
## Generate Skill (v1.8.0)
Every published post and page now gets a static `.md` file at `/raw/{slug}.md`. These files are generated automatically when you run `npm run sync`.
The CopyPageDropdown now includes a Generate Skill option. Click to download the current post or page as an AI agent skill file.
**Example URLs:**
The skill file includes:
- Metadata section with title, description, and tags
- When to use section describing scenarios
- Instructions section with full content
Downloads as `{slug}-skill.md`. Use these files to train AI agents or add context to workflows.
## Static raw markdown files (v1.7.0)
Every published post and page now gets a static `.md` file at `/raw/{slug}.md`. Generated during `npm run sync`.
Example URLs:
- `/raw/setup-guide.md`
- `/raw/about.md`
- `/raw/how-to-publish.md`
Each file includes a metadata header with type, date, reading time, and tags. The content matches exactly what you see on the page.
Each file includes a metadata header with type, date, reading time, and tags.
**Use cases:**
Use cases:
- Share raw markdown with AI agents
- Link directly to source content for LLM ingestion
- View the markdown source of any post
## View as Markdown in CopyPageDropdown
## View as Markdown (v1.7.0)
The Copy Page dropdown now includes a "View as Markdown" option. Click it to open the raw `.md` file in a new tab.
The Copy Page dropdown now includes "View as Markdown" to open the raw `.md` file in a new tab.
This joins the existing options:
Other dropdown options:
- Copy page (copies formatted markdown to clipboard)
- Copy page (formatted markdown to clipboard)
- Open in ChatGPT
- Open in Claude
- Open in Perplexity (new)
- Open in Perplexity
## Perplexity integration
## Perplexity integration (v1.7.0)
Perplexity is now available as an AI service option. Click "Open in Perplexity" to send the full article content directly to Perplexity for research and analysis.
Perplexity is now available as an AI service option. Click to send full article content to Perplexity for research and analysis.
Like the other AI options, if the URL gets too long, the content is copied to your clipboard and Perplexity opens in a new tab. Paste to continue.
If the URL gets too long, content copies to clipboard and Perplexity opens in a new tab. Paste to continue.
## Featured images
## Featured images (v1.7.0)
Posts and pages can now include a featured image that displays in the card view on the homepage.
Add to your frontmatter:
Posts and pages can include a featured image that displays in card view:
```yaml
image: "/images/my-thumbnail.png"
@@ -105,11 +225,33 @@ featured: true
featuredOrder: 1
```
The image displays as a square thumbnail above the title in card view. Non-square images are automatically cropped to center. Recommended size: 400x400px minimum (800x800px for retina).
The image displays as a square thumbnail above the title. Non-square images crop to center. Recommended: 400x400px minimum (800x800px for retina).
## Improved markdown table styling
## Open Graph image fix (v1.12.1)
Tables now render with GitHub-style formatting across all four themes:
Posts with `image` in frontmatter now display their specific OG image when shared. Posts without images fall back to `og-default.svg`. Pages now supported with `og:type` set to "website".
Relative image paths (like `/images/v17.png`) resolve to absolute URLs automatically.
## Centralized font sizes (v1.12.2)
All font sizes now use CSS variables in `global.css`:
```css
:root {
--font-size-xs: 12px;
--font-size-sm: 13px;
--font-size-base: 16px;
--font-size-lg: 17px;
/* ... */
}
```
Edit `:root` variables to customize font sizes across the entire site. Mobile responsive overrides at 768px breakpoint.
## Improved table styling (v1.7.0)
Tables render with GitHub-style formatting:
| Feature | Status |
| ------- | ----------------------- |
@@ -118,32 +260,31 @@ Tables now render with GitHub-style formatting across all four themes:
| Hover | Row highlighting |
| Themes | Dark, light, tan, cloud |
Tables adapt to each theme with proper alternating row colors and hover states.
Alternating row colors and hover states adapt to each theme.
## Generate Skill
## Quick reference: sync vs deploy
The CopyPageDropdown now includes a Generate Skill option. Click it to download the current post or page as an AI agent skill file.
| Change | Command | Speed |
| ----------------------- | -------------------------- | -------------- |
| Blog posts | `npm run sync` | Instant |
| Pages | `npm run sync` | Instant |
| Featured items | `npm run sync` | Instant |
| Import external URL | `npm run import` then sync | Instant |
| siteConfig changes | Redeploy | Requires build |
| Logo gallery config | Redeploy | Requires build |
| React components/styles | Redeploy | Requires build |
| Fork configuration | `npm run configure` | Instant |
The skill file includes:
Markdown content syncs instantly via Convex. Source code changes require pushing to GitHub for Netlify to rebuild.
- Metadata section with title, description, and tags
- When to use section describing scenarios for the skill
- Instructions section with the full content
## Upgrade path
The file downloads as `{slug}-skill.md`. Use these skill files to train AI agents or add context to your workflows.
If upgrading from an earlier version:
## Summary
1. Pull the latest code
2. Run `npm install` for new dependencies
3. Run `npx convex dev` to sync schema changes
4. Run `npx convex run stats:backfillAggregates` if using stats
5. Check `siteConfig.ts` for new configuration options
These updates improve navigation, configuration, and sharing with AI tools:
1. **Fork configuration** documentation for all 9 site files
2. **Scroll-to-top button** with configurable threshold
3. **Mobile menu** with slide-out drawer for smaller screens
4. **Raw markdown files** at `/raw/{slug}.md` for direct access
5. **View as Markdown** option in CopyPageDropdown
6. **Perplexity** added alongside ChatGPT and Claude
7. **Generate Skill** for AI agent training
8. **Featured images** for visual card layouts
9. **Better tables** with responsive styling
All features work across all four themes and are mobile responsive. Run `npm run sync` for development and `npm run sync:prod` for production to update your site with these changes.
All features work across all four themes and are mobile responsive.

View File

@@ -408,14 +408,58 @@ Both files are gitignored. Each developer creates their own local environment fi
## Customizing Your Framework
### Files to Update When Forking
### Fork Configuration Options
When you fork this project, update these files with your site information:
After forking, you have two options to configure your site:
#### Option 1: Automated (Recommended)
Run a single command to configure all files automatically:
```bash
# Copy the example config
cp fork-config.json.example fork-config.json
# Edit fork-config.json with your site information
# Then apply all changes
npm run configure
```
The `fork-config.json` file includes:
```json
{
"siteName": "Your Site Name",
"siteTitle": "Your Tagline",
"siteDescription": "Your site description.",
"siteUrl": "https://yoursite.netlify.app",
"siteDomain": "yoursite.netlify.app",
"githubUsername": "yourusername",
"githubRepo": "your-repo-name",
"contactEmail": "you@example.com",
"creator": {
"name": "Your Name",
"twitter": "https://x.com/yourhandle",
"linkedin": "https://www.linkedin.com/in/yourprofile/",
"github": "https://github.com/yourusername"
},
"bio": "Your bio text here.",
"theme": "tan"
}
```
This updates all 11 configuration files in one step. See `FORK_CONFIG.md` for the full JSON schema.
#### Option 2: Manual
Follow the step-by-step guide in `FORK_CONFIG.md` to update each file manually. The guide includes code snippets for each file and an AI agent prompt for assisted configuration.
### Files to Update When Forking
| File | What to update |
| ----------------------------------- | --------------------------------------------------------------------------- |
| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery, GitHub contributions |
| `src/pages/Home.tsx` | Intro paragraph text (hardcoded JSX) |
| `src/pages/Home.tsx` | Intro paragraph text, footer links |
| `convex/http.ts` | `SITE_URL`, `SITE_NAME`, description strings (3 locations) |
| `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) |
| `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) |
@@ -424,6 +468,7 @@ When you fork this project, update these files with your site information:
| `public/robots.txt` | Sitemap URL and header comment |
| `public/openapi.yaml` | API title, server URL, site name in examples |
| `public/.well-known/ai-plugin.json` | Site name, descriptions |
| `src/context/ThemeContext.tsx` | Default theme |
### Site title and description metadata

View File

@@ -73,4 +73,16 @@ It's a hybrid: developer workflow for publishing + real-time delivery like a dyn
- Projects where AI agents generate content programmatically
- Sites that need real-time updates without full rebuilds
## Fork configuration
After forking, configure your site with a single command:
```bash
cp fork-config.json.example fork-config.json
# Edit fork-config.json
npm run configure
```
Or follow the manual guide in `FORK_CONFIG.md`. Both options update all 11 configuration files with your site information.
Fork it, customize it, ship it.

View File

@@ -7,6 +7,40 @@ order: 5
All notable changes to this project.
## v1.18.0
Released December 20, 2025
**Automated fork configuration**
- New `npm run configure` command for one-step fork setup
- Copy `fork-config.json.example` to `fork-config.json`
- Edit the JSON file with your site information
- Run `npm run configure` to apply all changes automatically
Two options for fork setup:
1. **Automated** (recommended): JSON config file + `npm run configure`
2. **Manual**: Follow step-by-step instructions in `FORK_CONFIG.md`
The configure script updates all 11 configuration files:
| File | What it updates |
| ----------------------------------- | ---------------------------------------- |
| `src/config/siteConfig.ts` | Site name, bio, GitHub, features |
| `src/pages/Home.tsx` | Intro paragraph, footer links |
| `src/pages/Post.tsx` | SITE_URL, SITE_NAME constants |
| `convex/http.ts` | SITE_URL, SITE_NAME constants |
| `convex/rss.ts` | SITE_URL, SITE_TITLE, SITE_DESCRIPTION |
| `index.html` | Meta tags, JSON-LD, page title |
| `public/llms.txt` | Site info, GitHub link |
| `public/robots.txt` | Sitemap URL |
| `public/openapi.yaml` | Server URL, site name |
| `public/.well-known/ai-plugin.json` | Plugin metadata |
| `src/context/ThemeContext.tsx` | Default theme |
New files: `FORK_CONFIG.md`, `fork-config.json.example`, `scripts/configure-fork.ts`
## v1.17.0
Released December 20, 2025

View File

@@ -149,22 +149,39 @@ npm run sync:prod
## Configuration
### Site and backend settings
### Fork configuration
When you fork this project, update these files with your site information:
After forking, you have two options to configure your site:
| File | What to update |
|------|----------------|
| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery, GitHub contributions |
| `src/pages/Home.tsx` | Intro paragraph text (hardcoded JSX) |
| `convex/http.ts` | `SITE_URL`, `SITE_NAME`, description strings (3 locations) |
| `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) |
| `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) |
| `index.html` | Title, meta description, OG tags, JSON-LD |
| `public/llms.txt` | Site name, URL, description, topics |
| `public/robots.txt` | Sitemap URL and header comment |
| `public/openapi.yaml` | API title, server URL, site name in examples |
| `public/.well-known/ai-plugin.json` | Site name, descriptions |
**Option 1: Automated (Recommended)**
```bash
cp fork-config.json.example fork-config.json
# Edit fork-config.json with your site information
npm run configure
```
This updates all 11 configuration files in one command. See `FORK_CONFIG.md` for the full JSON schema and options.
**Option 2: Manual**
Follow the step-by-step guide in `FORK_CONFIG.md` to update each file manually.
### Files updated by configuration
| File | What to update |
| ----------------------------------- | --------------------------------------------------------------------------- |
| `src/config/siteConfig.ts` | Site name, title, intro, bio, blog page, logo gallery, GitHub contributions |
| `src/pages/Home.tsx` | Intro paragraph text, footer links |
| `convex/http.ts` | `SITE_URL`, `SITE_NAME`, description strings (3 locations) |
| `convex/rss.ts` | `SITE_URL`, `SITE_TITLE`, `SITE_DESCRIPTION` (RSS feeds) |
| `src/pages/Post.tsx` | `SITE_URL`, `SITE_NAME`, `DEFAULT_OG_IMAGE` (OG tags) |
| `index.html` | Title, meta description, OG tags, JSON-LD |
| `public/llms.txt` | Site name, URL, description, topics |
| `public/robots.txt` | Sitemap URL and header comment |
| `public/openapi.yaml` | API title, server URL, site name in examples |
| `public/.well-known/ai-plugin.json` | Site name, descriptions |
| `src/context/ThemeContext.tsx` | Default theme |
### Site title and description metadata