An open API service indexing awesome lists of open source software.

https://github.com/kako-jun/know-it-break-it

Bilingual site teaching the evaluation criteria of creative fields (art, music, comedy, manga, film) so you can break them on purpose
https://github.com/kako-jun/know-it-break-it

astro cloudflare-pages creativity i18n tailwindcss typescript

Last synced: 13 days ago
JSON representation

Bilingual site teaching the evaluation criteria of creative fields (art, music, comedy, manga, film) so you can break them on purpose

Awesome Lists containing this project

README

          

# know-it-break-it

**あたまのネジとはずしかた**

Know It. Break It.

型を知って、武器にしろ。

## Concept

プロが見ているポイントがある。それは言語化できる。型を知らずに破っても、それはただの無知だ。型を知って破って初めて、それが個性になる。

## Domains

5 ドメイン × 各 3 評価軸(合計 15 軸)。実体は `src/lib/criteria.ts` を正本とする。

- 美術 — 構図 / 象徴 / 色彩
- 音楽 — コード進行 / 転調 / 外し
- 漫才 — 転回 / 普遍性 / タイムオーバー
- 漫画 — 編集者の評価軸 / 持ち込みの壁 / コマ割り
- 映画 — ストーリー構造 / ペーシング / キャラクター変容

各評価軸には ja / en の `label` / `description` / `examples` が付き、トップページ (`/[lang]/`) で全ドメインを動的に展開して表示する。

## Tech

- Astro 5 + TypeScript + Tailwind CSS
- pnpm (パッケージマネージャ)
- Cloudflare Pages(デプロイ予定)
- AI 生成コンテンツ + 人間確認 + 静的記事
- 正解のあるクイズ(schema は確保済み、本実装は別 Issue)
- 404 ページは `src/pages/404.astro`(ja / en 併記)
- Footer はファミリーサイト(osaka-kenpo / gilga / break-and-shift)へのリンクを含む

## i18n

- `/ja/` — 日本語(デフォルト)
- `/en/` — English
- 言語切り替えUIは全ページに表示
- 記事も `lang` フィールドで言語別管理
- 記事詳細の言語切り替えは同じ正規化 slug の翻訳記事へ移動する
- 翻訳記事が未作成の場合、404 を避けるため相手言語の記事一覧へ移動する
- SEO 用 `rel="alternate"` は翻訳記事が存在する場合のみ出力する

## Content Guidelines

### 記事ファイル命名規約

- 日本語記事: `{slug}.md`(例: `sample.md`)
- 英語記事: `{slug}-en.md`(例: `sample-en.md`)
- `lang` frontmatter とファイル名サフィックスを一致させること
- URL スラグからは言語サフィックスが除去される(`sample-en` → `/en/articles/sample/`)

### 多言語コンテンツの追加

1. `locales`(`src/lib/i18n.ts`)に言語を追加
2. `domainLabels` / `difficultyLabels` / `uiLabels` に該当言語のラベルを追加
3. 記事ファイルを `{slug}-{lang}.md` 形式で作成
4. frontmatter の `lang` を該当言語に設定

### 記事 frontmatter

`src/content/config.ts` で定義。新規記事は `src/content/templates/article.md` をコピーして書き始める。

| key | 必須 | 説明 |
| -------------- | ---- | ------------------------------------------------------------------------------------ |
| `title` | yes | 記事タイトル |
| `domain` | yes | `art` / `music` / `manzai` / `manga` / `movie` |
| `difficulty` | yes | `beginner` / `intermediate` / `advanced` |
| `tags` | yes | 自由タグの配列 |
| `lang` | yes | `ja` / `en`(デフォルト `ja`) |
| `publishedAt` | yes | 公開日 |
| `updatedAt` | no | 更新日 |
| `description` | yes | 一覧・SEO 用の 1〜2 文 |
| `criteria` | no | この記事が扱う評価軸 key 配列。`src/lib/criteria.ts` の domain ごとの key と紐付ける |
| `quiz.enabled` | no | クイズ機能フラグ(本実装は別 Issue) |

## Dev

```bash
pnpm install
pnpm dev
```

### テスト

```bash
pnpm test:unit
```

### ビルド

```bash
pnpm build
```

## Related Projects

- [大阪けんぽう](https://github.com/kako-jun/osaka-kenpo) — 法律の暗黙知
- [gilga](https://github.com/kako-jun/gilga) — 悪意の暗黙知
- [break-and-shift](https://github.com/kako-jun/break-and-shift) — 確率の暗黙知