0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

自分だけのBookNotionを爆誕させた

Posted at

まえおき

こちら参照

経緯

ソースコード内で本のタイトルを入力してデータベースへアクセスし、突合させることでしかハイライトとコメントを取得できていなかった

外出先でもやりたいな~と思ってましたが、

🤔「デプロイしても自分だけしかアクセスできなければよいのでは?」

と感じ自分だけのBookNotionを爆誕させた

要件

  • どこでもハイライトとコメントをページにまとめることができる
  • それっぽいデザインで実装する
  • 自分だけしか実装させない都合上、ログイン機能を設ける
  • 最低限の機能から実装していき、徐々に拡張していく
  • 誰でもできるようにはしない(めんどうだから)

技術系

使用技術

フロントエンド:Next.js
スタイリング:Tailwind CSS
ホスティング:Vercel
認証:JWT

リポジトリ

レイアウト

ログイン画面

PC

image.png

SP

IMG_5621.PNG

ページ作成画面

PC

image.png

SP

IMG_5622.PNG

実装手順

BookNotionでNotionにハイライトを登録していると前提

APIキーの設定

まずはNotionAPIを設定しましょう。

  1. 新しいインテグレーションを選択
  2. 名前を設定
  3. 送信でAPIキーを取得
  4. 機能を選択し、適切な権限を与える(めんどいんで全部与えてました)
  5. 保存

データベースにNotionAPIを連携する

こちら参照

上で設定したAPIを連携させる必要があります。
連携先はBookNotionで登録したハイライトが格納されているデータベースになります。

.env.localへの値設定

以下の情報を.env.localにします。

EMAIL=すきなアドレス
PASSWORD=ハッシュ化したパスワード
JWT_SECRET=秘密鍵
API_KEY=APIキーの設定で取得したAPIキー
DATABASE_ID=BookNotionのデータベースID
PAGE_URL=作成後のページが追加されるページのID

データベースIDの確認方法は、BookNotionで追加したデータベースのページURLが以下の場合、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxがデータベースIDになります。
https://www.notion.so/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?v=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

ページIDはhttps://www.notion.so/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの場合、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxがページIDになります。

パスワードのハッシュ化

パスワードを平文で保存するのは良くないと怒られたのでハッシュ化します。
このあたりはご自身で調べたものを実行してください。

実際にやってみよう

左から、本アプリ、貼り付け先のページ、BookNotionのデータベースがあります。

image.png

今回ハイライトとコメントをまとめたいのは解像度を上げる――曖昧な思考を明晰にする「深さ・広さ・構造・時間」の4視点と行動法という本なので、そのまま送信フォームに入力しCreate a Notion page!を押します。

image.png

するとページが追加されて中を見るとハイライトが中見出し、コメントが通常のテキスト形式で出力されているのが確認できます。

image.png

本の内容を掲載する許可は取っていないため、黄色く塗りつぶしています。

感想

  • JWTを調べながら実装した
    • なんとなく認証に対する理解が深まった
  • NotionAPIすげぇ
    • おもろいもの思いついたらまた何か作りたい
  • TailWind CSSは小規模なら良いと思ったけど大規模には向かなそう?
  • Web APIに対する理解を深めたい
  • App Routerナンモワカランから体系的にまとまった教材を探したい

今後の方針

  • アプリ側から BookNotion で登録したテーブルを項目を削除する機能
  • 本の予測表示?機能
  • APIの型定義(レスポンスから型定義するのだるくてanyのまま)
  • useEffect以外の画面リダイレクト
  • ドキュメントの拡張
  • ログイン回数の制限(冷静にEmailにしたのは謎)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?