Skip to content

Commit 1823b3c

Browse files
committed
docs: update gaps in getting started contributing
1 parent cf6c33f commit 1823b3c

1 file changed

Lines changed: 126 additions & 31 deletions

File tree

README.md

Lines changed: 126 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,146 @@
11
## Python Insider Blog
22

3-
Blog for Python core team, mostly for blogging about releases.
3+
The official blog for the Python core teammostly release announcements.
44

5-
## About
5+
Built with [Astro](https://astro.build/) and [Keystatic](https://keystatic.com/) CMS.
6+
Content is plain Markdown, built statically at deploy time.
67

7-
Uses keystatic for WYSIWYG editing.
8+
## Quickstart
89

9-
Features some custom components like:
10+
### Prerequisites
1011

11-
- GitHub User, Repo
12-
- PyPI Project
13-
- CPython Docs
12+
**Bun** — the JavaScript runtime used for this project.
1413

15-
Utilizes Bun for builds. Uses Astro.js which builds statically at build time.
16-
Pre-commit config, powered by Prek to do CI things and spellchecks.
14+
```bash
15+
# macOS
16+
brew install oven-sh/bun/bun
1717

18-
### From Blogger
18+
# Linux / WSL
19+
curl -fsSL https://bun.sh/install | bash
1920

20-
Migrated from Blogger with a field on new posts of "Previous Blogger URL"
21-
so that we can more easily redirect.
21+
# Windows — use WSL, then the Linux command above
22+
```
2223

23-
### Posts
24+
See [bun.sh/docs/installation](https://bun.sh/docs/installation) for other methods.
2425

25-
Posts are structured under `content/posts/`.
26-
They have the directory named after the blog entry title.
26+
**prek** (optional) — runs pre-commit hooks locally. Only needed if you want
27+
to run linting/spellcheck before pushing. CI will catch these regardless.
2728

28-
Inside is the core markdown (index.md) and optionally the images
29-
used in the blog entry.
29+
```bash
30+
# macOS
31+
brew install prefix-dev/prek/prek
3032

31-
### Authors
33+
# Linux / Windows (standalone installer)
34+
curl -fsSL https://prek.j178.dev/install.sh | bash
35+
36+
# Or via cargo / pip / other methods
37+
cargo install prek
38+
```
39+
40+
See [prek.j178.dev/installation](https://prek.j178.dev/installation/#standalone-installer)
41+
for all installation options.
42+
43+
> [!NOTE]
44+
> **Windows users**: The Makefile requires a Unix shell. Use
45+
> [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) or Git Bash.
46+
> Alternatively, skip `make` and run the bun commands directly (see table below).
47+
48+
### Setup
49+
50+
```bash
51+
git clone https://github.com/python/python-insider-blog.git
52+
cd python-insider-blog
53+
make install # installs node_modules + git hooks
54+
make dev # starts dev server at http://127.0.0.1:4321
55+
```
56+
57+
`make install` runs `bun install` (dependencies) and `prek install` (git hooks).
58+
If you don't have prek installed, the hook setup will fail but everything else
59+
still works — you can write and preview posts without it.
3260

33-
Authors are configured via `content/authors/`.
61+
## Writing a blog post
3462

35-
## Contributing
63+
### Option A: Use the Keystatic UI (recommended)
3664

37-
There are `Make` targets to get up and going, assuming you have the
38-
tooling required (Bun, prek, etc.)
65+
1. Run `make dev`
66+
2. Open http://127.0.0.1:4321/keystatic in your browser
67+
3. Create or edit a post with the visual editor
68+
4. Commit and open a pull request
3969

40-
### Writing Blog Entries
70+
### Option B: Write Markdown directly
4171

42-
You can pull the repo, run `make dev`, and edit the page via Keystatic
43-
with the nice UI or you can write markdown in your editor.
72+
Create a new directory under `content/posts/` named after your post slug,
73+
with an `index.md` inside:
4474

45-
Both should open a pull request to GitHub for review and CI checks.
75+
```
76+
content/posts/python-31213-31115-31020/
77+
└── index.md
78+
```
79+
80+
Frontmatter fields:
81+
82+
```yaml
83+
---
84+
title: "Python 3.12.13, 3.11.15, and 3.10.20 are now available"
85+
description: "Security fix release for Python 3.12, 3.11, and 3.10"
86+
authors:
87+
- thomas-wouters
88+
tags:
89+
- "3.12"
90+
- "3.11"
91+
- "3.10"
92+
pubDate: 2026-03-03
93+
draft: false
94+
previousBloggerUrl: ""
95+
---
96+
```
97+
98+
Then write the body in standard Markdown. Open a PR when done.
99+
100+
> [!TIP]
101+
> Links to PEPs, CPython docs, PyPI, GitHub repos/issues, CVEs, and
102+
> python.org releases are automatically styled as inline reference badges.
103+
> Just use normal Markdown links — no special syntax needed.
104+
>
105+
> If you're using the Keystatic editor, you also have access to explicit
106+
> inline components: `{% GhUser name="hugovk" /%}`, `{% Pep number=649 /%}`, etc.
107+
108+
### Authors
46109

47-
> [!NOTE]
48-
> You have access to a few custom components that can be used like
49-
> `{% GhUser name="hugovk" /%}`, but PEPs, CPython docs, and GitHub links
50-
> will automatically be picked up if you use standard markdown via the
51-
> URL regex.
110+
Author profiles live in `content/authors/{id}.json`. If you're writing your
111+
first post, create one (or use the Make target):
112+
113+
```bash
114+
make content-new-author ID=your-name NAME="Your Name"
115+
```
116+
117+
Then edit the JSON to add your GitHub handle, avatar URL, etc.
118+
119+
## Development
120+
121+
| Make target | Without make | What it does |
122+
| ------------------ | ------------------------ | ------------------------------------ |
123+
| `make install` | `bun install` | Install dependencies (+ git hooks) |
124+
| `make dev` | `bun run dev` | Start Astro dev server |
125+
| `make build` | `bun run build` | Production build |
126+
| `make preview` | `bun run preview` | Build and preview production locally |
127+
| `make check` | `bun run lint && bun run typecheck` | Run linter + type checker |
128+
| `make spellcheck` || Run typos spell checker (needs prek) |
129+
| `make clean` || Remove build artifacts and caches |
130+
| `make fresh` || Full clean reinstall |
131+
132+
Run `make help` for the complete list.
133+
134+
## Project structure
135+
136+
```
137+
content/
138+
authors/ # Author profiles (JSON)
139+
posts/ # Blog posts (Markdown + images)
140+
src/
141+
components/ # Astro/React components
142+
layouts/ # Page layouts
143+
pages/ # Astro routes
144+
plugins/ # Remark plugins (reference badges, etc.)
145+
assets/ # Styles, fonts
146+
```

0 commit comments

Comments
 (0)