2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NextjsとRustで日報管理アプリを作ってみた

Last updated at Posted at 2025-05-21

はじめに

最近、RustとNextjsを学習したくて簡単な日報管理アプリを作ってみました。
まだ完成というわけではないですが、備忘録的な目的で共有しようかなと思います。
現時点ではまだインフラ含め、叩き台を作ったといった感じです。
途中経過でもちょくちょくアウトプットして開発が続けられるようにする目的で投稿します。

目次

機能概要

基本的な認証機能と日報の新規登録・編集・削除機能があります。

ログイン画面は以下のようになっています。
まだshadcnをそのまま使ったUIしかないですが。
メールアドレスとパスワードでの認証に加えて、GithubでのOAuth認証機能も実装しました。

1_login.png

ログインしたら左サイドバーに作成した日報一覧が年月日で表示されます。
サイドバーの月をクリックしたら展開して日が表示され、日をクリックすると右側のコンテンツ領域に日報が表示されます。

4_一覧.png

日報はそのまま編集できるようになっており、markdown形式で編集可能です。
もちろん、コードハイライトも書くことが可能となっています。

2_edit.png

使用技術

カテゴリ 技術
フロントエンド Next.js, TypeScript, Tailwind, Prisma, Authjs, tiptap
バックエンド Rust, Axum, sqlx
データベース Supabase (PostgreSQL)
インフラ Vercel, Cloud Run, Artifact Registry, Cloud Build
CI/CD GitHub Actions

構成

以下の構成でデプロイしました。

  • フロントエンド

デプロイ先はVercelでNextjsを使ってフロントを作っています。
ちなみにデザインパターンはFSDを採用しています。

(参考) https://feature-sliced.github.io/documentation/ja/

認証周りはAuthjsで作りました。
PrismaでSupabaseの認証データを操作します。
Prismaは基本的にバックエンド側(sqlx)で作ったschemaの取り込みをするようにしており、prisma側でschemaを作成して反映することはしていません。

エディター機能はtiptapを使用して実装しています。

(参考) https://tiptap.dev/

  • バックエンド

API側はAxum(Rust)を使っています。

CloudRunでRustを動かしています。
リポジトリにpushされたらGithub ActionsでCI/CDで以下が回ります。

  1. Cloud Build (コンテナイメージ作成)
  2. Artifact Registry (コンテナイメージ管理)
  3. CloudRun (API)

3_architect.png

DBスキーマ

テーブルは以下で構成されています。
DBと連携するadapterとしてPrismaを使用しています。

以下はAuthjsのデフォルトの指定モデルとなっています。
また、今回はjwt方式を使っているのでsessionsはありません。
verification_tokensは現時点では使っていないのですが、ないとエラーが発生したので追加しています。

  • reports: 日報
  • users: ユーザー情報
  • accounts: 外部プロバイダーの認証情報
  • verification_tokens: 認証用トークン

(参考) https://authjs.dev/getting-started/adapters/prisma

日報管理ツール.jpg

終わりに

NextjsとRustで日報管理ツールを作ってみました。
作り込みはまだまだ足りていないので、これからデザイン部分ももう少し凝ったものにしていこうと思います。
ちゃんとこういうのを最後まで完成させるという経験がないので、しっかり最後まで完成させてちょくちょく進捗的なものを投稿しようかなと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?