# homupe > フォルダに置いたファイルがそのまま https://{site}-{user}.homupe.dev で公開されるホスティング。 > サーバー側のコードは書けないが、静的HTMLから使える「ホムペパーツ」でカウンターや掲示板などの動的な機能を持てる。 ## ページの書き方 - 1つのサイト = 1つのフォルダ。index.html がトップページ。 - HTML/CSS/JS/画像をそのまま置く。ビルドは不要。 - 外部のバックエンドやAPIキーは使わず、データの保存には下のホムペパーツを使う。 ## ホムペパーツ ### 1. homupe.json で使うものを宣言する サイトのフォルダ直下に homupe.json を置く。ここに書いたカウンターとコレクションだけが使える。 { "counters": ["top", "clap"], "collections": { "guestbook": { "read": "public", "write": "public", "max": 500 }, "board": { "read": "public", "write": "signed-in" }, "news": { "read": "public", "write": "owner" }, "inbox": { "read": "owner", "write": "public" } } } - read / write は "public" (誰でも)、"signed-in" (このサイトに homupe アカウントでログインした人)、"owner" (サイトの持ち主だけ)。 - 荒らしが心配な掲示板は write: "signed-in" にする。ログインした人は自分の書き込みを消せる。 - 省略時は read: "public", write: "owner", max: 100。max は 1000 まで。 - 訪問者に書かせたいコレクションは write: "public" を明示する。 - 問い合わせフォームのように持ち主だけが読むものは read: "owner" にする。 - カウンターは宣言すれば誰でも読めて、誰でも増やせる。 - 名前は小文字英数字と - _ (64文字まで)。カウンター50個、コレクション20個まで。 - 1か所でも不正な値があると homupe.json 全体が無効になり、何も使えなくなる。 ### 2. ページでスクリプトを読み込む ### カスタム要素 - アクセスカウンター。同じタブでの再読み込みは数えない。 - 押すたびに数が増える拍手ボタン。 - なまえとメッセージを書き込める掲示板。自分の書き込みには削除ボタンが付き、持ち主がログインしていれば全部に付く。 write: "signed-in" のコレクションに未ログインで書こうとすると、ログインボタンに変わる。 - ログイン / ログアウトのボタン。 要素は Shadow DOM を使わずに描画されるので、普通の CSS (例: homupe-guestbook li { ... }) で見た目を変えられる。 ### JavaScript API - await homupe.count(name) カウンターの値を読む - await homupe.hit(name) カウンターを 1 増やして新しい値を返す - await homupe.list(collection, limit) 書き込みを新しい順に返す ([{ id, data, createdAt }]) - await homupe.add(collection, data) JSON オブジェクトを追記する (4096 バイトまで) - await homupe.remove(collection, id) 自分の書き込みを消す (持ち主は誰のでも消せる) - await homupe.me() ログインしていれば { owner: true/false }、していなければ null - homupe.login() / homupe.logout() ログイン画面へ移動する / ログアウトする list と add の各書き込みには mine (自分が書いたものなら true) が付く。書いた人の ID は返らない。 権限がないとき、未ログインならエラーの status が 401、ログインしていても駄目なら 403。 アンケート、いいね、ランキング、ひとこと日記などは list/add の組み合わせで作れる。 ### 必ず守ること - list で取ってきた data は他人が書いた文字列なので、表示には必ず textContent を使う。innerHTML や insertAdjacentHTML に入れてはいけない。 - 書き込みは追記のみで、編集はできない。削除できるのは書いた本人 (ログインして書いたもの) とサイトの持ち主だけ。 - read: "public" のコレクションは誰でも読める。パスワードや個人情報は保存しない。