posts are markdown files with yaml frontmatter (title, slug, date;
optional draft/public) in the grenade/blog repo. the worker's new
BlogSource polls the repo — one branch-tip request when nothing
changed — and upserts posts into events with source='blog' and
occurred_at from the frontmatter date, so imported posts keep their
original publish dates and backfill the contribution graph.
- new /v1/blog and /v1/blog/{slug} endpoints over the existing
EventReader port; drafts stay hidden via the public gate
- new /blog and /blog/:slug routes, nav link, activity-feed entry
with post icon and filter toggle; relative image srcs resolve to
gitea raw urls
- shared Markdown component extracted from ProjectPage
- vite proxy target overridable via API_PROXY_TARGET for local dev
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
499 B
TOML
22 lines
499 B
TOML
[package]
|
|
name = "moments-data"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
|
|
[dependencies]
|
|
moments-entities.workspace = true
|
|
moments-core.workspace = true
|
|
sqlx.workspace = true
|
|
serde_json.workspace = true
|
|
chrono.workspace = true
|
|
thiserror.workspace = true
|
|
tracing.workspace = true
|
|
async-trait.workspace = true
|
|
reqwest.workspace = true
|
|
serde.workspace = true
|
|
serde_yaml_ng.workspace = true
|
|
percent-encoding = "2"
|