v0で生成するコードをAtomic Designにするプロンプト

前置き
生成系AIサービスの [v0](https://v0.dev/)を良く使っているのですが、そのままWebサービスに展開するときに個人的に修正をするのが大変だったので調整したプロンプトになります。
やりたいこと
v0でコードを生成したときに以下のルールを守ってコードを出力するようにします。 Next.jsでの開発経験は全くないのでバットプラクティスかもしれませんが、自分が修正しやすいことを前提にするので一旦無視します。
- Atomic Designでコンポーネントを実装する
- v0がデフォルトで有効にしている「tailwind css」を使わない実装にする
- v0がデフォルトで有効にしている「Shadcn UI」を使わない実装にする
- state管理とstateを更新するためのロジックはhokksを利用する
- Next.jsに依存しない様々なプロジェクトで使えるような共通ロジックは「utils」フォルダに実装する
- api疎通は「Repository Factory」パターンで実装する
- apiから受け取ったデータは「zod」で型チェックを行う
プロンプト
以下のプロンプトを最初に実行して後はエラーや気になるところを一つずつ指摘していけばいい感じにサイトが出来上がるかと思います。
〇〇のデザイン作成をお願いします。
以下はコーディング規約となるので厳守でお願いします。
- TailwindCSSは使用せず、すべてカスタマイズしたCSSで実装してください。
- shadcn/ui は使用せず、すべてカスタマイズしたコンポーネントで実装してください。
- UIはAtomic Designの概念に基づいて実装してください。
- atoms
- 最も基本的なUI要素(例:ボタン、入力フィールド、ラベル)
- components/atomsディレクトリに配置
- 基本的にサーバーコンポーネントとして実装する
- 基本的にステートレスコンポーネントとして実装する
- 単にプロップスを受け取り、UIをレンダリングする役割とする
- 基本的にサーバーコンポーネントとして実装する
- molecules
- 複数の原子を組み合わせた機能的なUIグループ(例:フォーム、カード)
- components/moleculesディレクトリに配置。
- 基本的にサーバーコンポーネントとして実装する
- 基本的にステートレスコンポーネントとして実装する
- 単にプロップスを受け取り、UIをレンダリングする役割とする
- 基本的にサーバーコンポーネントとして実装する
- organisms
- 複数の分子(場合によっては原子も)を組み合わせて、より複雑なUIセクションを形成(例:ヘッダー、フッター)
- components/organismsディレクトリに配置。
- ステート管理が不要であれば、サーバーコンポーネントとして実装する
- templates
- ページのレイアウトを定義し、実際のコンテンツを配置する前の構造を提供
- components/templatesディレクトリに配置
- pages
- 各種ルーティング用のページ
- state管理とstateを更新するためのロジックはhokksを利用する
- Next.jsに依存しない様々なプロジェクトで使えるような共通ロジックは「utils」フォルダに実装してください。
- api疎通は「Repository Factory」パターンで実装してください。
- apiから受け取ったデータは「zod」で型チェックを行うようにしてください。
zodの定義はmodelsフォルダに実装してください。
### ディレクトリ構成(サンプル一部のみ)
/components/
├── atoms/
│ ├── button/
│ │ ├── index.tsx
│ │ ├── style.css
│ ├── badge/
│ │ ├── index.tsx
│ │ ├── style.css
/pages/
├── index.tsx
├── style.css
/models/
├── hoge.ts
/repositories/
├── factory.ts
├── hogeRepository.ts
/utils/
├── date.ts
├── file.ts
出来たサイト
実際に作成したサイトを「[こちら](https://v0.dev/chat/ec-site-design-REDOOCobQSg)」で公開しました。 〇〇の部分は以下に変更しています。
ECサイトのデザイン作成をお願いします。
このサイトはトップページ、商品一覧、商品詳細ページを持っています。
その他必要なページも適宜実装をお願いします。
細かいところは詰めてませんが、見れるレベルにはなっているかと思います。 後はこのコードをベースに調整していけば良いと思います。
サイトトップ

商品一覧

商品詳細

終わり
v0を使いたいけどそのままプロジェクトで本格的に運用するのが難しいと思っていました。 ですが、このくらいのものが出来上がれば運用できるのでは?と感じているので少しずつ改善していこうと思います。