このブログもどきの構成について
## TODO
- 現状スタイルが適当すぎるのでなんとかしたい。
- 記事画像もまだ。
## 方針
- 基本的にはディレクトリ/ファイルの単純な構造で取り回したい。
- カテゴリはディレクトリ。
- 記事もディレクトリ。記事に属する画像やスクリプトなどを素直に扱いたいため。
- カテゴリ・記事群に対して、日付順、キーワード、アーカイブ等のビューを外付けする。
- RDB 使いたくない病。やりたいことに対して大がかりすぎる。
- sqlite でもまだ牛刀割鶏。
- かといってフラットファイル系は記事が増えたときに辛い。
- 各ビューを単純な KVS として実装。キーはメモリに置く。バリューはファイルから取る。
- バリューは部分的に読み取れるように。リストを全件読んだりしない。
- 更新時は KVS を丸っと全更新。カテゴリ 100, 記事 1000 件程度でテストして、特に問題なさげ。
- 更新は、記事ディレクトリを単に FTP アップロード → KVS 更新。
- ブラウザ上で記事書きたいかと言われると微妙なので後回し。
- 普段のエディタの方が基本的には楽。
- とりあえず markdown 使えるように
- レンダリングはクライアント側で [Showdown](https://github.com/showdownjs/showdown) にて変換
- [marked](https://github.com/markedjs/marked) は、html から markdown への再入ができないので見送り。
- 数式使いたいので改造。数式のレンダリングは <span role="math">\href{https://katex.org/}{\KaTeX}</span>
- コードハイライトは [Prism](https://prismjs.com/)
- アイコンは [evericons](http://www.evericons.com/) を Web font 化
- レスポンシブにする。
## 大雑把な構造
~~~any
index.php # エントリポイント
index.db # KVS データ
src/
# ブログシステム本体
:
doc/
# コンテンツ
site.json # サイト名など基本情報
<category>/
content.json # カテゴリ情報
<article>/
content.json # 記事情報
index.md # 内容
<sub-category>/ # ネスト可
content.json
lib/
# content.json が無いディレクトリは単にファイル置き場。
# javascript, css など
~~~
## content.json
カテゴリの場合:
~~~json
{
"type": "category", // 省略可
"name": "名前",
"desc": "説明文",
"body": "内容ファイル"
// カテゴリも内容を持てる(WordPress の固定ページ相当が書けるように)
}
~~~
記事の場合:
~~~json
{
"type": "article", // 必須
"name": "名前", // 省略時、ディレクトリ名
"desc": "説明文", // 省略時空
"date": "2020-01-01", // 作成日時, 必須 (一応無ければファイルの ctime を見に行く)
"late": "2020-01-02", // 更新日時, 省略時作成日時と同一
"tags": ["tag1", "tag2"], // タグ
"body": "内容ファイル"
}
~~~
## 予約ディレクトリ
`control`, `keyword`, `archive` は、各種機能のために予約。
同名のディレクトリは無視する。