AIによるウェブサイト実装指示書:meekocloud.studio.site準拠・HTMLブロック更新方式I. プロジェクト概要と主要制約A. 目的この指示書は、参照サイト https://meekocloud.studio.site のデザインと構成を忠実に再現し、かつプログラミング知識のないユーザーがHTMLブロックのコピー&ペーストによって容易にコンテンツ更新(ポートフォリオ、サービス、テキスト等)を行えるウェブサイトの完全なソースコードを、AIに生成させることを目的とします。B. 重要要件1:非技術者によるコンテンツ更新本プロジェクトにおける最優先事項は、プログラミングやHTMLの知識がないユーザーが、ウェブサイトの主要コンテンツ(特にポートフォリオの作品項目、サービスの説明文、アバウトセクションのテキストなど)を、事前に定義されたHTMLブロックをコピーし、指定された .astro ファイル内の箇所に貼り付けるだけで更新できる仕組みを実装することです。この更新方式は、ユーザーの利便性を最優先するための選択であり、一般的な静的サイトの更新方法であるMarkdownファイルや外部CMS、JSONデータソースを利用する方式は意図的に採用しません。Astro.jsは通常、ビルド時にJavaScriptを極力排除し、高速な表示を実現するフレームワークですが 1、静的サイトは非技術者にとってコンテンツ更新が難しいという側面も持ち合わせています 4。本方式では、コンテンツをサイト構造に直接埋め込む形を取るため、Astroの標準的な開発フローとは異なりますが 8、これにより専門知識がないユーザーでも更新作業が可能になることを見込んでいます。ただし、この方式はユーザーが誤って重要なHTML属性(classやdata-*など)を変更・削除してしまうリスクを伴います。そのため、.astroファイル内およびHTMLテンプレートブロック内に、極めて明確かつ詳細な日本語のコメントを記述し、安全な更新作業をガイドすることが不可欠です。C. 重要要件2:デザインの忠実な再現生成されるウェブサイトの視覚的デザイン(レイアウト、配色、タイポグラフィ、余白、角丸、イラスト・アイコンのスタイル、アニメーション等)は、参照サイト https://meekocloud.studio.site を寸分違わず忠実に再現する必要があります。D. 技術スタック仕様以下の技術スタックを使用します。 フレームワーク: Astro.js 1 (MPA: Multi-Page Application として静的サイトを生成する設定 1) ポートフォリオギャラリー: Isotope.js (Vanilla JS版) 19 (レイアウト、フィルタリング、ソート機能用) スクロールアニメーション: AOS.js (Animate On Scroll) 35 アイコン: Font Awesome (Free Plan) 49 動画ポップアップ (任意): Lity.js 71 (ポートフォリオ内のYouTube動画表示用) コンタクトフォームバックエンド: 外部サービス(例: formrun 83、PHP工房 84 など)のエンドポイントURLを使用することを前提とします。AIはHTMLフォームのフロントエンド部分のみを生成します 88。 II. 参照サイト分析 (https://meekocloud.studio.site)A. AIへの指示AIは、参照サイト https://meekocloud.studio.site を直接分析し、以下の要素を抽出・特定してください。直接的な分析が不可能な場合 90、以下のB〜E項に記述された情報を基にサイトを構築してください。B. 視覚スタイル概要 レイアウト: 各セクションは主にシングルカラム構成で、中央揃えのコンテンツが多用されています。全体的に余白が大きく取られ、クリーンな印象を与えます。ポートフォリオセクションではレスポンシブなグリッドレイアウトが採用されている可能性があります。 配色: 全体の背景色は白または非常に明るい色を基調とし、アクセントカラーとして淡いパステル調の色(例:水色、ピンク、黄色など)が使用されています。主要なテキスト色はダークグレーまたは黒です。可能であれば具体的なカラーコード(Hex)を抽出してください。 タイポグラフィ: 主要なフォントとして、丸みを帯びた日本語ゴシック体(例:Google FontsのM PLUS Rounded 1cなど)が使用されていると想定されます 91。見出しと本文テキストでフォントサイズやウェイトに階層性が設けられています。 イラスト・アイコン: ミニマルで、フラットデザインまたは線画スタイルのイラストが使用されている可能性があります。アイコンはFont Awesomeの無料プランで提供されるスタイル(SolidまたはRegular)に準拠し、サイト全体の柔らかく、かわいらしい("Cute")テイストに合致していると考えられます 49。 全体的な雰囲気: 「かわいい」「柔らかい」「清潔感」「ミニマル」「親しみやすい」といった印象を与えます 91。 C. 構造ブループリント参照サイトの構成を特定してください。シングルページ構成(index.astro内に全セクション)が基本と想定されますが、もし明確に別ページが存在する場合はそれに従ってください。主要なセクションとして以下が想定されます。 ヒーローセクション(メインビジュアル) アバウト / コンセプト ワークス(ポートフォリオ) サービス / 特徴 コンタクト フッター D. セクション詳細分析 ワークス (ポートフォリオ): レイアウト: グリッドレイアウト(例:3カラムなど、具体的なカラム数を特定)。 アイテム表示内容: 各ポートフォリオ項目には、サムネイル画像、タイトル、短い説明文またはタグ/カテゴリが表示されていると想定されます。ホバー時のエフェクト(例:オーバーレイ表示、画像のズーム、テキスト表示)を確認してください 99。Isotope.jsによるフィルタリングやソートに必要な data-category や data-date 属性を特定してください。 動画の扱い: ポートフォリオに動画が含まれる場合、どのように表示されているか(例:サムネイル画像をクリックするとポップアップで再生される形式か)を確認してください 77。 サービス: レイアウト: カード型、リスト形式、アイコン付きの特徴ブロックなど、繰り返し可能な構造を特定してください。この構造はHTMLブロックテンプレートのベースとなります。料金表が存在する場合、そのデザインタイプ(テーブル型、カード型など)を特定してください 113。 コンタクト: フォーム項目: 「お名前」「メールアドレス」「メッセージ」など、全ての入力フィールドをリストアップしてください。送信ボタンのテキストも確認してください。 E. アニメーション一覧 スクロールアニメーション: スクロールに応じて要素がアニメーション(例:フェードイン、スライドアップ)する箇所を特定してください。これらはAOS.jsで実装可能と考えられます 32。 ホバーエフェクト: ボタン、リンク、ポートフォリオアイテムなどに適用されているシンプルなCSSホバーエフェクト(背景色変化、ズーム、オーバーレイなど)を特定してください 120。 ローディングアニメーション: ページ初期読み込み時に表示されるアニメーションがあれば特定してください 124。 III. 技術実装ブループリントA. Astro.js 設定 セットアップ: 標準的なAstroプロジェクトを作成してください 13。 モード: 静的サイト生成(SSG)モードで設定し、結果としてMPA(Multi-Page Application)構造となるようにしてください 1。Astroの特性である、ビルド時に不要なクライアントサイドJavaScriptを極力削除し、静的なHTML/CSSを生成する方針を重視してください 1。 コンポーネント: Astroのコンポーネントモデル(.astroファイル)を活用し、サイト構造(ヘッダー、フッター、各セクション)を構築してください 8。 B. JavaScriptライブラリ統合 インストール: Isotope.js 19, AOS.js 36, Font Awesome 49, Lity.js 71 のCDNリンクを<head>内に記述するか、npm/yarn経由でインストールし、ベースレイアウトコンポーネント等で読み込むように設定してください。 初期化: 各ライブラリの初期化スクリプトを適切に配置・実行してください。 Isotope.js: ポートフォリオのグリッドコンテナを対象に初期化 19。 AOS.js: グローバルに初期化 (AOS.init();) 36。 Lity.js: 必要に応じて、動画リンク要素に対するイベントリスナーを設定 71。 C. コンタクトフォーム処理 フロントエンドのみ: AIの責務はHTMLの<form>要素生成までです。 Action属性: action属性には、ユーザーが後で自身のフォームサービス(例: formrun)のエンドポイントURLに置き換えるためのプレースホルダーURL(例: "YOUR_FORMRUN_ENDPOINT_URL_HERE")を設定し、その旨をコメントで明記してください 83。 Method属性: method="POST" を指定してください 88。 IV. サイトアーキテクチャ定義A. ページ構造セクションII.Cの参照サイト分析に基づき、src/pages/ディレクトリ内に必要な.astroファイルを定義してください。特に指定がない限り、全セクションを含む単一のsrc/pages/index.astroを基本とします。Astroのファイルベースルーティング規則に従ってください 13。B. コアコンポーネント再利用可能なコンポーネントをsrc/components/ディレクトリに定義します。 Layout.astro: サイト全体の基本レイアウトコンポーネント。<html>, <head>(CSS/JSリンク、メタタグを含む)、共通ヘッダー、共通フッターを含み、ページの主要コンテンツを表示するための<slot />を持ちます 8。 Header.astro: サイトロゴやナビゲーションを含むヘッダーコンポーネント。 Footer.astro: コピーライト表記やSNSリンクなどを含むフッターコンポーネント。 セクションコンポーネント (推奨): index.astroの可読性と保守性を高めるため、各セクション(例: Hero.astro, About.astro, Works.astro, Services.astro, Contact.astro)を個別のコンポーネントとして作成することを推奨します。 重要: セクションを別コンポーネント化する場合、ユーザーが行うHTMLブロックの編集作業が少し複雑になります。例えば、ポートフォリオ項目はWorks.astroファイル内で編集する必要が生じます。そのため、AIは親ページ (index.astroなど) と子コンポーネント (Works.astroなど) の両方に、ユーザーがどのファイルを開いてどこにHTMLブロックを貼り付ければ良いかを明確に示す日本語コメントを配置する必要があります。 V. コンテンツ管理プロトコル (HTMLブロックとガイドコメント)A. 更新手法の再確認コンテンツ更新は、指定された.astroファイル内の特定箇所に、定義済みのHTMLブロックをコピー&ペーストすることで行うことを再度強調します。この方式はユーザーの注意深い操作を必要とします。B. テンプレートHTMLブロック定義このセクションは極めて重要です。 AIは、ユーザーがコピー&ペーストして使用するための、各コンテンツタイプに対応する正確なHTML構造のテンプレートブロックを生成する必要があります。 ポートフォリオ項目テンプレート (例: Works.astro内) 構造: 画像(src)、タイトル、説明/タグを表示するためのHTML要素を含む。 必須属性: スタイリングおよびIsotopeのグリッドアイテム識別用クラス (例: class="portfolio-item grid-item")。変更不可であることをコメントで強調。 Isotopeフィルタリング用データ属性: data-category="カテゴリ名プレースホルダー" 19。プレースホルダーは明確に。変更不可であることをコメントで強調。 Isotopeソート用データ属性 (推奨): data-date="YYYY-MM-DD" など 19。変更不可であることをコメントで強調。 YouTube動画用 (該当する場合): data-youtube-id="YOUTUBE_ID_プレースホルダー" 77。サムネイル表示とクリック再生のための構造も含む 107。変更不可であることをコメントで強調。 埋め込みコメント: テンプレートブロック内に、日本語で編集箇所(画像パス、テキスト内容)と絶対に編集してはいけない箇所 (class, data-* 属性) を明記するコメントを埋め込みます。 サービス項目テンプレート (例: Services.astro内) 構造: アイコン (Font Awesomeクラスを使用)、タイトル、説明文を表示するためのHTML要素を含む。 必須属性: スタイリングに必要なclass属性。変更不可であることをコメントで強調。 埋め込みコメント: テンプレートブロック内に、日本語で編集箇所を明記するコメントを埋め込みます。 その他テキストブロック (例: About.astro内) 構造: 段落 (<p>) やリスト (<ul>, <li>) など、標準的なHTMLタグを使用し、編集可能なテキスト領域をコメントで明確に囲みます。可能な限りシンプルな構造を維持します。 埋め込みコメント: 編集範囲を示す日本語の開始・終了コメントを配置します。 C. 日本語ガイドコメント記述例AIが生成すべき日本語コメントの具体的な例を以下に示します。これらを参考に、各.astroファイルおよびHTMLテンプレート内に適切なコメントを配置してください。 .astroファイル内のコンテンツ挿入箇所 (例: Works.astro) HTML<div class="portfolio-item grid-item" data-category="" data-date=""> <a href="" > <img src="" alt="" loading="lazy"> "> --> " alt="" loading="lazy"> --> <div class="portfolio-caption"> <h3></h3> <p></p> </div> </a> </div> ``` サービス項目テンプレート内のコメント例 HTML<div class="service-item"> <i class="fas "></i> <h3></h3> <p></p> </div> テキストブロック(Aboutなど)のコメント例 HTML<p>ここに自己紹介文やコンセプトなどを記述します。</p> <p>改行したい場合は、新しい `<p>` タグで囲ってください。</p> <ul> <li>リスト項目1</li> <li>リスト項目2</li> </ul> これらのコメントは、非技術系ユーザーが安全に更新作業を行うための生命線です。class や data-* といった、サイトの動作や表示に不可欠な属性を誤って変更・削除しないよう、最大限の注意喚起を行う必要があります。 VI. 機能実装仕様A. ポートフォリオギャラリー (Works.astro または関連コンポーネント) レイアウト: Isotope.js (Vanilla JS) を使用し、参照サイトのグリッドレイアウトを再現します 19。Isotopeの初期化オプション (itemSelector, layoutMode など) を適切に設定してください。 フィルタリング: カテゴリに基づいた基本的なフィルタリング機能を実装します。HTML内にフィルターボタン群を設置し、各ボタンには data-filter 属性 (例: data-filter=".webdesign", data-filter="*") を付与します 20。これらのボタンクリックイベントを検知し、Isotopeの filter メソッドを呼び出すJavaScriptを記述します。 ソート (推奨): 日付や名前などに基づいた基本的なソート機能を実装します。ソートボタン群を設置し、各ボタンには data-sort-by 属性 (例: data-sort-by="date", data-sort-by="name") を付与します 19。Isotopeの初期化時に getSortData オプションを設定し、HTMLテンプレート内の data-* 属性からソート用データを読み込むようにします 19。ボタンクリックでIsotopeの arrange メソッド(sortBy オプション付き)を呼び出すJavaScriptを記述します。 アイテム構造: 各ポートフォリオ項目は、セクションV.Bで定義されたHTMLテンプレートを使用し、必要なクラスと data-* 属性をすべて含んでいることを確認してください。 YouTube動画: ポートフォリオにYouTube動画を含める場合は、data-youtube-id 属性を使用します。サムネイル画像(またはYouTubeが提供するサムネイルURL 107)を初期表示し、クリック時にLity.js 71 を利用して動画をポップアップ再生するか、シンプルなJavaScriptによるiframe置換 109 を実装します。 B. その他セクション (About.astro, Services.astro など) 実装: 参照サイトの分析結果(セクションII)に基づき、構造とスタイルを実装します。 コンテンツ編集: セクションV.BおよびV.Cで定義されたHTMLテンプレート(サービス項目用)やシンプルなHTML構造(Aboutテキスト用)を使用し、編集箇所が日本語コメントで明確にガイドされていることを確認してください。 C. コンタクトフォーム (Contact.astro または index.astro 内) HTML構造: 参照サイト(セクションII.D)に準拠したフィールド(お名前、メールアドレス、メッセージ等)を持つ<form>要素を作成します。<input>, <textarea>, <label> タグを適切に使用してください。 action属性: 属性値をプレースホルダーURL(例: "YOUR_FORMRUN_ENDPOINT_URL_HERE")に設定し、ユーザーによる置換が必要であることをコメントで明記します 83。 method属性: method="POST" を設定します 88。 バリデーション: HTML5の required 属性などを用いた、基本的なクライアントサイドバリデーションを実装します。 D. アニメーション スクロールアニメーション: 参照サイト分析(セクションII.E)で特定された要素に対し、AOS.jsによるスクロール連動アニメーションを適用します。.astroファイル内の該当HTML要素に直接 data-aos 属性(例: data-aos="fade-up", data-aos-delay="100")を記述してください 35。 ホバーエフェクト: 参照サイト分析(セクションII.E)に基づき、ボタンの背景色変化、リンクの下線表示、ポートフォリオアイテムのオーバーレイやズーム効果など、シンプルなホバーエフェクトをCSSのTransitionsやTransformsを用いて実装してください 120。 AOSアニメーション適用指示表 要素タイプ(例)参照サイトでの見られる動き(例)適用する data-aos 属性(例)セクションタイトルスクロールで下からフェードインdata-aos="fade-up"サービス項目カードスクロールで右からスライドインdata-aos="slide-left" data-aos-delay="100"ポートフォリオアイテムスクロールでズームインdata-aos="zoom-in"アバウトセクション画像スクロールで左からフェードインdata-aos="fade-right"...(その他特定要素)......VII. デザイン再現指示A. 視覚的忠実性の要求生成されるCSSは、参照サイト https://meekocloud.studio.site の視覚的スタイルを可能な限り正確に再現しなければなりません。これには、レイアウト、要素間の余白(padding, margin)、配色、タイポグラフィ(フォントファミリー、サイズ、ウェイト)、要素の形状(例:角丸の半径)、アイコンの使用方法とスタイルが含まれます。B. スタイルガイド実装詳細 配色: セクションII.Bで特定または指定されたカラーパレットを使用してください。必要に応じて、主要色、アクセント色、テキスト色などをCSSカスタムプロパティ(変数)として定義し、一貫性を保ってください。 タイポグラフィ: フォントファミリー: 指定された主要フォント(例:Google Fonts 'M PLUS Rounded 1c' 91)をグローバルに適用し、適切なフォールバックフォント(一般的なゴシック体など)も指定してください。 サイズ・ウェイト: 参照サイトの見出し(h1, h2, h3...)と本文テキストのフォントサイズおよびウェイトの階層構造を再現してください。 アイコン (Font Awesome Free): 実装: <i> タグと適切なクラス名(例: <i class="fas fa-star">, <i class="fab fa-twitter">)を使用してアイコンを表示してください 49。Freeプランで利用可能なアイコンのみを使用します 50。 スタイル: アイコンのサイズと色は参照サイトに合わせてください。Font Awesomeのユーティリティクラス(fa-lg, fa-2xなど)またはカスタムCSSで調整可能です 57。セクションII.Bで特定された「かわいい」「柔らかい」雰囲気に合致するようにスタイルを適用してください 91。 レイアウト詳細: padding, margin, border-radius, text-align, flexbox/grid プロパティなどを駆使し、参照サイトのレイアウトと要素配置を精密に再現してください。 VIII. 最終指示概要A. 重要制約の再強調AIは、以下の2つの最重要要件を念頭に置いてコードを生成してください。 HTMLブロック更新システム: 生成されるコードは、非技術ユーザーがHTMLブロックのコピー&ペーストによって .astro ファイル内のコンテンツを更新できることを主眼とし、そのための詳細な日本語コメントによるガイドを含む必要があります。 デザイン再現性: 完成したウェブサイトは、参照サイト https://meekocloud.studio.site の視覚的コピーでなければなりません。 B. 期待される出力上記全ての仕様に基づき、構造化され、完全に機能するAstro.jsプロジェクトの全ソースコード(.astroファイル、CSSファイル、必要なJavaScript初期化コード等)を生成してください。生成コードには、ユーザーガイドとして指定された日本語コメントが正確に含まれている必要があります。
I'll create a complete Astro.js implementation of the meekocloud.studio.site website, focusing on making it easy for non-technical users to update content through HTML blocks.
Based on the screenshot, I can see the site has a beautiful pastel gradient background, a cloud logo, and a clean minimalist design with Japanese text. Let's build this with all the specified requirements.
I'll create an Astro.js project with the following structure:
src/
├── components/
│ ├── Header.astro
│ ├── Footer.astro
│ ├── Hero.astro
│ ├── About.astro
│ ├── Works.astro
│ ├── Services.astro
│ └── Contact.astro
├── layouts/
│ └── Layout.astro
├── pages/
│ └── index.astro
└── styles/
└── global.css
public/
├── fonts/
├── images/
│ └── logo.svg
└── favicon.svg
Let's start by implementing the core files:
src/layouts/Layout.astro
src/components/Header.astro
src/components/Hero.astro
src/components/About.astro
src/components/Works.astro
src/components/Services.astro
src/components/Contact.astro
src/components/Footer.astro
src/pages/index.astro
Now, let's create the CSS file:
public/styles/global.css
Now, let's create the necessary SVG files for the logo and background:
public/images/logo.svg
public/images/hero-logo.svg
public/images/hero-bg.svg
public/favicon.svg
Here are the HTML template blocks that non-technical users can copy and paste to update the website content:
<!-- ポートフォリオ項目テンプレート -->
<!--
使い方:
1. このブロック全体をコピーします
2. Works.astroファイル内の「ここからポートフォリオ項目を追加・編集できます」の下に貼り付けます
3. 以下の項目を編集します:
- img src="..." - 画像のパスを変更します
- alt="..." - 画像の代替テキストを変更します
- h3タグ内のテキスト - プロジェクト名を変更します
- pタグ内のテキスト - プロジェクトの説明を変更します
注意:
- class属性は変更しないでください
- data-category属性は、フィルタリングに使用されます。"web", "graphic", "branding"などから選択してください
- data-date属性は、ソートに使用されます。"YYYY-MM-DD"形式で日付を入力してください
-->
<div class="portfolio-item grid-item" data-category="web" data-date="2023-01-01">
<a href="/images/portfolio/portfolio-large.jpg" data-lity>
<img src="/images/portfolio/portfolio-thumb.jpg" alt="プロジェクト名" loading="lazy">
<div class="portfolio-caption">
<h3>プロジェクト名</h3>
<p>プロジェクトの説明</p>
</div>
</a>
</div>
<!-- YouTube動画ポートフォリオ項目テンプレート -->
<!--
使い方:
1. このブロック全体をコピーします
2. Works.astroファイル内の「ここからポートフォリオ項目を追加・編集できます」の下に貼り付けます
3. 以下の項目を編集します:
- href="https://www.youtube.com/watch?v=..." - YouTubeのURLを変更します
- img src="..." - サムネイル画像のパスを変更します
- alt="..." - 画像の代替テキストを変更します
- h3タグ内のテキスト - 動画プロジェクト名を変更します
- pタグ内のテキスト - 動画の説明を変更します
注意:
- class属性は変更しないでください
- data-category属性は、フィルタリングに使用されます。"web", "graphic", "branding"などから選択してください
- data-date属性は、ソートに使用されます。"YYYY-MM-DD"形式で日付を入力してください
-->
<div class="portfolio-item grid-item" data-category="web" data-date="2023-01-01">
<a href="https://www.youtube.com/watch?v=YOUTUBE_ID_HERE" data-lity>
<img src="/images/portfolio/video-thumb.jpg" alt="動画プロジェクト名" loading="lazy">
<div class="portfolio-caption">
<h3>動画プロジェクト名</h3>
<p>動画の説明</p>
</div>
</a>
</div>
<!-- サービス項目テンプレート -->
<!--
使い方:
1. このブロック全体をコピーします
2. Services.astroファイル内の「ここからサービス項目を追加・編集できます」の下に貼り付けます
3. 以下の項目を編集します:
- i class="fas fa-..." - Font Awesomeのアイコンを変更します
- h3タグ内のテキスト - サービス名を変更します
- pタグ内のテキスト - サービスの説明を変更します
注意:
- class属性は変更しないでください
- data-aos属性は、スクロールアニメーションに使用されます。変更しないでください
- Font Awesomeのアイコンは、"fas fa-"の後に続くクラス名を変更します
例: "fas fa-laptop-code", "fas fa-paint-brush", "fas fa-bullhorn" など
-->
<div class="service-item" data-aos="fade-up" data-aos-delay="100">
<i class="fas fa-laptop-code"></i>
<h3>サービス名</h3>
<p>サービスの説明文をここに記述します。簡潔で分かりやすい説明が効果的です。</p>
</div>
<!-- 料金プラン項目テンプレート -->
<!--
使い方:
1. このブロック全体をコピーします
2. Services.astroファイル内の「ここから料金表を編集できます」の下に貼り付けます
3. 以下の項目を編集します:
- h4タグ内のテキスト - プラン名を変更します
- div class="price"内のテキスト - 価格を変更します
- liタグ内のテキスト - プランの特徴を変更します
注意:
- class属性は変更しないでください
- data-aos属性は、スクロールアニメーションに使用されます。変更しないでください
-->
<div class="pricing-plan" data-aos="fade-up" data-aos-delay="100">
<h4>プラン名</h4>
<div class="price">¥100,000〜</div>
<ul>
<li>特徴1</li>
<li>特徴2</li>
<li>特徴3</li>
<li>特徴4</li>
</ul>
</div>
<!-- アバウトテキストテンプレート -->
<!--
使い方:
1. このブロック全体をコピーします
2. About.astroファイル内の「ここから編集可能 - 自己紹介文やコンセプトを変更できます」の下に貼り付けます
3. pタグ内のテキストを編集します
注意:
- 段落ごとに新しいpタグを使用してください
- リスト項目を追加する場合は、ul, liタグを使用してください
-->
<p>
ここに自己紹介文やコンセプトなどを記述します。
簡潔で分かりやすい文章が効果的です。
</p>
<p>
複数の段落に分ける場合は、このように新しいpタグで囲みます。
</p>
<ul>
<li>リスト項目1</li>
<li>リスト項目2</li>
<li>リスト項目3</li>
</ul>
To set up this project, follow these steps:
npm create astro@latest meeko-cloud-site
cd meeko-cloud-site
npm install
npm run dev
To update content, non-technical users can:
npm run build
This implementation faithfully recreates the meekocloud.studio.site design with a focus on making it easy for non-technical users to update content through HTML blocks. The site includes all the required sections (Hero, About, Works, Services, Contact) and features (portfolio filtering, animations, responsive design).
Connect the contact form to a form service like Formrun
Let's connect your contact form to Formrun, a popular form handling service in Japan. This will allow you to receive form submissions via email without needing to set up a backend server.
Configure your form settings:
https://form.run/api/v1/r/xxxxxxxxxxxxxxxxxxxx
Now, let's update the Contact.astro component to use your Formrun endpoint:
src/components/Contact.astro
To enable client-side validation and other Formrun features, we need to add the Formrun JavaScript SDK to our Layout.astro file. Let's update it:
src/layouts/Layout.astro
Let's add some CSS for the checkbox in the global.css file:
public/styles/global.css
If you prefer not to use Formrun, here are some alternatives:
If you're deploying to Netlify:
data-netlify="true"
to your form element<input type="hidden" name="form-name" value="contact">
name
attributes of your form fields match what's expected by your form servicerequired
attribute on fields that must be filled outBy following these steps, your contact form will be fully functional and connected to Formrun, allowing you to receive submissions directly to your email.
I want deploy in my local pc