getfilepress 0.1.19 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -199
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,230 +1,62 @@
|
|
|
1
1
|
# FilePress
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Markdown blogs from git. No CMS. No database. A static `build/` folder.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Written **FilePress**. npm **`getfilepress`**. CLI **`filepress`** (same script as `getfilepress`).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| **Site** | [https://getfilepress.com](https://getfilepress.com) |
|
|
10
|
-
| **npm** | [`getfilepress`](https://www.npmjs.com/package/getfilepress) |
|
|
11
|
-
| **CLI** | `filepress` (also `getfilepress`) |
|
|
12
|
-
|
|
13
|
-
## Requirements
|
|
7
|
+
**Site:** [getfilepress.com](https://getfilepress.com) · **Docs:** [getting started](https://getfilepress.com/getting-started)
|
|
14
8
|
|
|
15
|
-
|
|
16
|
-
- [pnpm](https://pnpm.io)
|
|
17
|
-
|
|
18
|
-
## Quick start (new site)
|
|
9
|
+
## Start a site
|
|
19
10
|
|
|
20
11
|
From a clone of this repo:
|
|
21
12
|
|
|
22
13
|
```bash
|
|
23
14
|
pnpm install
|
|
24
15
|
pnpm create-site my-blog --external ../my-blog --title "My Blog" --url https://my.blog
|
|
25
|
-
|
|
26
|
-
cd ../my-blog
|
|
27
|
-
pnpm install
|
|
28
|
-
pnpm dev # local preview (Genie Mode FAB in the corner)
|
|
29
|
-
pnpm build # → build/
|
|
16
|
+
cd ../my-blog && pnpm install && pnpm dev
|
|
30
17
|
```
|
|
31
18
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- `filepress.config.ts` — title, URL, and other site settings
|
|
35
|
-
- `posts/` — Markdown posts (`/posts/<slug>`)
|
|
36
|
-
- `pages/` — optional static Markdown pages (`about.md` → `/about`)
|
|
37
|
-
- `paths` mounts — optional site-owned HTML/CSS/JS trees at a URL prefix (e.g. `/docs`)
|
|
38
|
-
- `static/` — favicon, images, etc.
|
|
39
|
-
- `package.json` — depends on this engine (`"getfilepress": "link:../filepress"` locally, `"getfilepress": "^0.1.3"` from npm, or a git URL + tag/SHA)
|
|
19
|
+
`filepress new "Title"` stamps `posts/YYYY-MM-DD-slug.md`. Config, frontmatter, images, and commands: [Getting started](https://getfilepress.com/getting-started).
|
|
40
20
|
|
|
41
|
-
|
|
21
|
+
Pin CI on npm (`getfilepress` current is `0.1.19`) or a git SHA / existing tag. `link:` is local only.
|
|
42
22
|
|
|
43
|
-
|
|
23
|
+
## Import
|
|
44
24
|
|
|
45
25
|
```bash
|
|
46
|
-
pnpm
|
|
47
|
-
pnpm filepress import --source https://example.com \
|
|
48
|
-
--inspire https://www.catalystforge.com \
|
|
49
|
-
--inspire https://app.execfoundry.com/start \
|
|
50
|
-
--yes
|
|
51
|
-
|
|
52
|
-
# up to 3 --inspire URLs; signals are blended (first biases structure, later ones tint accent/fonts)
|
|
53
|
-
|
|
54
|
-
# dry-run first (no write):
|
|
26
|
+
pnpm filepress import --source https://example.com --yes
|
|
55
27
|
pnpm filepress import --source https://example.com --dry-run --no-llm
|
|
56
28
|
```
|
|
57
29
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
More detail: [`docs/EXTERNAL_SITES.md`](docs/EXTERNAL_SITES.md).
|
|
30
|
+
Crawls a public site (sitemap/RSS preferred) into a sibling content tree. Optional `--inspire` URLs (up to three) and Ollama. `--no-llm` stays deterministic. [Import](https://getfilepress.com/import) · [spec](docs/SITE_IMPORT_SPEC.md).
|
|
61
31
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
- `sites/demo` — engine fixture (drafts, scheduled posts, frontmatter cheatsheet). Root `pnpm check` / `pnpm build` target this site.
|
|
65
|
-
- `sites/getfilepress` — product site for getfilepress.com (`homePage` landing + Writing). Sibling publications live in their own repos.
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
pnpm install
|
|
69
|
-
pnpm dev # → demo fixture
|
|
70
|
-
pnpm build # → sites/demo/build/
|
|
71
|
-
pnpm dev:www # → product site
|
|
72
|
-
pnpm build:www # → sites/getfilepress/build/
|
|
73
|
-
pnpm ship # build + Wrangler Pages deploy (project: getfilepress)
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Two `filepress dev` processes share Vite **5173** unless you pin the port. With [LocalBerth](https://www.npmjs.com/package/localberth) 0.2+, `filepress dev` reads a named lease. Claim once; see [docs/LOCALBERTH.md](docs/LOCALBERTH.md).
|
|
77
|
-
|
|
78
|
-
## Site configuration
|
|
79
|
-
|
|
80
|
-
```ts
|
|
81
|
-
import { defineFilepressConfig } from 'getfilepress';
|
|
82
|
-
|
|
83
|
-
export default defineFilepressConfig({
|
|
84
|
-
title: 'My Site',
|
|
85
|
-
description: 'A short site description.',
|
|
86
|
-
url: 'https://my.site', // required; canonical origin, no trailing slash
|
|
87
|
-
author: 'Me',
|
|
88
|
-
postsPerPage: 10,
|
|
89
|
-
topics: [{ label: 'Essays', tag: 'essays' }],
|
|
90
|
-
nav: [
|
|
91
|
-
{ label: 'Posts', href: '/' },
|
|
92
|
-
{ label: 'GitHub', href: 'https://github.com/acme/site', icon: 'github' }
|
|
93
|
-
],
|
|
94
|
-
// Replaces the default RSS + Topics row when set.
|
|
95
|
-
footerLinks: [
|
|
96
|
-
{ label: 'RSS', href: '/rss.xml' },
|
|
97
|
-
{ label: 'GitHub', href: 'https://github.com/acme/site', icon: 'github' }
|
|
98
|
-
],
|
|
99
|
-
theme: 'essay', // or 'ink' | 'folio'; site theme.css still wins last
|
|
100
|
-
newsletter: {
|
|
101
|
-
url: 'https://buttondown.email/me',
|
|
102
|
-
blurb: 'Occasional notes.',
|
|
103
|
-
cta: 'Subscribe'
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
`title` and `url` are required; missing values fail the build with a clear error.
|
|
109
|
-
|
|
110
|
-
**Nav / footer:** `nav` is the header; `footerLinks` replaces the default RSS + Topics footer row when set (include those entries yourself if you still want them). Items may set `icon: 'github'` for a built-in mark (`.nav-github` in themes).
|
|
111
|
-
|
|
112
|
-
### Path mounts
|
|
113
|
-
|
|
114
|
-
Attach a site-owned HTML/CSS/JS tree at a URL prefix. FilePress copies it into `build/` after the Kit build and serves it in `filepress dev`. It does **not** parse Markdown or inject Essay chrome into the mount. The site owns the shell (for example a docs sidebar).
|
|
115
|
-
|
|
116
|
-
```ts
|
|
117
|
-
paths: [
|
|
118
|
-
{ url: '/docs', dir: 'docs/dist' }
|
|
119
|
-
]
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
- `dir` is site-relative; `url` starts with `/` and must not collide with engine routes (`posts`, `writing`, `tags`, …).
|
|
123
|
-
- The first URL segment is reserved against `pages/<slug>.md`.
|
|
124
|
-
- HTML files under the mount are included in `sitemap.xml`.
|
|
125
|
-
|
|
126
|
-
## Theming
|
|
127
|
-
|
|
128
|
-
The engine ships a default Essay look, plus two token presets (`ink`, `folio`)
|
|
129
|
-
via config `theme`. To restyle a site, add `theme.css` next to
|
|
130
|
-
`filepress.config.ts`. It loads last, so you can override CSS
|
|
131
|
-
variables and structural classes without forking the app.
|
|
132
|
-
|
|
133
|
-
In local `filepress dev` / `pnpm dev`, **Genie Mode** (floating FAB) is a design cockpit:
|
|
134
|
-
steers, Openverse / uploads, live inspire URLs, optional Ollama refine, and
|
|
135
|
-
`lede` / `tagline` / `logo` config patches. Experiments live under `.filepress-genie/`.
|
|
136
|
-
Activate writes `theme.css`, `static/`, and config. Dev-only; absent from
|
|
137
|
-
`preview` and production builds. See [`docs/GENIE_MODE_SPEC.md`](docs/GENIE_MODE_SPEC.md)
|
|
138
|
-
and [getfilepress.com/genie](https://getfilepress.com/genie).
|
|
139
|
-
|
|
140
|
-
```css
|
|
141
|
-
/* theme.css */
|
|
142
|
-
:root {
|
|
143
|
-
--accent: #1e4d6b;
|
|
144
|
-
--accent-strong: #163a52;
|
|
145
|
-
}
|
|
146
|
-
```
|
|
32
|
+
## Docs
|
|
147
33
|
|
|
148
|
-
|
|
34
|
+
| Topic | Where |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| Scaffold, config, posts | [Getting started](https://getfilepress.com/getting-started) |
|
|
37
|
+
| Theme tokens and presets | [docs/THEME.md](docs/THEME.md) |
|
|
38
|
+
| Genie (dev only) | [Genie](https://getfilepress.com/genie) · [spec](docs/GENIE_MODE_SPEC.md) |
|
|
39
|
+
| Deploy | [Deploy](https://getfilepress.com/deploy) · [docs/DEPLOY.md](docs/DEPLOY.md) |
|
|
40
|
+
| Sibling / external sites | [docs/EXTERNAL_SITES.md](docs/EXTERNAL_SITES.md) |
|
|
41
|
+
| Local ports | [docs/LOCALBERTH.md](docs/LOCALBERTH.md) |
|
|
42
|
+
| Agent skill page | [Skill page](https://getfilepress.com/skill-page) · [docs/SKILL_PAGE.md](docs/SKILL_PAGE.md) |
|
|
149
43
|
|
|
150
|
-
##
|
|
44
|
+
## In this repo
|
|
151
45
|
|
|
152
|
-
|
|
46
|
+
- `sites/demo` — engine fixture (drafts, scheduled posts, image convention)
|
|
47
|
+
- `sites/getfilepress` — getfilepress.com
|
|
153
48
|
|
|
154
49
|
```bash
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
```markdown
|
|
162
|
-
---
|
|
163
|
-
title: "My Post"
|
|
164
|
-
date: 2026-07-04
|
|
165
|
-
description: A short summary used in listings and SEO.
|
|
166
|
-
tags: [notes]
|
|
167
|
-
author: Jane Roe
|
|
168
|
-
draft: false
|
|
169
|
-
updated: 2026-07-05
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
Body content in **Markdown**.
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
| Field | Required | Notes |
|
|
176
|
-
| --- | --- | --- |
|
|
177
|
-
| `title` | yes | Build fails (naming the file) if missing. |
|
|
178
|
-
| `date` | yes | Strict `YYYY-MM-DD`. Future-dated posts stay hidden until that date. |
|
|
179
|
-
| `slug` | no | Derived from the filename if omitted. |
|
|
180
|
-
| `description` / `excerpt` | no | Listings and meta tags. |
|
|
181
|
-
| `tags` | no | YAML list; lowercased and de-duplicated. |
|
|
182
|
-
| `author` | no | Per-post byline; omit on single-author sites. |
|
|
183
|
-
| `draft` | no | Hidden from production listings/feeds/sitemap; still builds at its URL. Listed with a Draft label under `pnpm dev` (localhost). |
|
|
184
|
-
| `updated` | no | Shown when different from `date`. |
|
|
185
|
-
|
|
186
|
-
**Images:** put files in `static/images/posts/<slug>/` and reference them as `/images/posts/<slug>/photo.jpg`. The demo site’s [Images in posts](sites/demo/posts/images-in-posts.md) post is a worked example.
|
|
187
|
-
|
|
188
|
-
**Captions:** an image alone on a line becomes a `<figure>`; the title attribute is the caption:
|
|
189
|
-
|
|
190
|
-
```markdown
|
|
191
|
-

|
|
50
|
+
pnpm install
|
|
51
|
+
pnpm test
|
|
52
|
+
pnpm dev # demo
|
|
53
|
+
pnpm dev:www # product site
|
|
54
|
+
pnpm ship # build getfilepress + Wrangler Pages
|
|
192
55
|
```
|
|
193
56
|
|
|
194
|
-
##
|
|
195
|
-
|
|
196
|
-
`filepress build` emits a static `build/` folder. No Node server in production.
|
|
197
|
-
|
|
198
|
-
**Happy path: [Cloudflare Pages](https://pages.cloudflare.com/)** (git-connected site repo or Wrangler upload).
|
|
57
|
+
## Not a CMS
|
|
199
58
|
|
|
200
|
-
|
|
201
|
-
| --- | --- |
|
|
202
|
-
| Build command | `pnpm install && pnpm build` |
|
|
203
|
-
| Output directory | `build` |
|
|
204
|
-
| Node | 20+ |
|
|
205
|
-
|
|
206
|
-
Pin the engine in the site `package.json` (`"getfilepress": "^0.1.3"` or `github:Catalyst-Forge-LLC/filepress#v0.1.3`). Do not use `link:` in CI. Set config `url` to the live origin.
|
|
207
|
-
|
|
208
|
-
Any other static host works the same way: publish `build/` as the web root. The build also writes a `_headers` file (HSTS, no framing, no wildcard CORS) for Cloudflare Pages; override it with `static/_headers`.
|
|
209
|
-
|
|
210
|
-
Full notes (including an agent checklist): [`docs/DEPLOY.md`](docs/DEPLOY.md) · product page: [getfilepress.com/deploy](https://getfilepress.com/deploy).
|
|
211
|
-
|
|
212
|
-
If the site ships an agent skill, write the install page from [`docs/SKILL_PAGE.md`](docs/SKILL_PAGE.md) · [getfilepress.com/skill-page](https://getfilepress.com/skill-page).
|
|
213
|
-
|
|
214
|
-
## Repository layout
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
packages/core shared engine (content pipeline, components, theme)
|
|
218
|
-
packages/app SvelteKit app (routes + Genie Mode in dev) used by the CLI
|
|
219
|
-
packages/import site crawl / scaffold CLI (also powers Genie theme helpers)
|
|
220
|
-
sites/demo engine fixture content
|
|
221
|
-
sites/getfilepress product site (getfilepress.com)
|
|
222
|
-
scripts/ filepress CLI and create-site scaffold
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
```bash
|
|
226
|
-
pnpm test # engine unit tests
|
|
227
|
-
```
|
|
59
|
+
No admin UI. No visitor comments — permanent. Genie is `filepress dev` only; `preview` and `build/` do not include it. Production is files.
|
|
228
60
|
|
|
229
61
|
<!-- xfacts-nutrition-label -->
|
|
230
62
|
|
|
@@ -234,4 +66,4 @@ pnpm test # engine unit tests
|
|
|
234
66
|
|
|
235
67
|
## License
|
|
236
68
|
|
|
237
|
-
MIT
|
|
69
|
+
MIT. Copyright Catalyst Forge LLC.
|
package/package.json
CHANGED