frontend-conference-hokkaido-2024 / landing-page-2024

https://www.frontend-conf.jp
3 stars 0 forks source link

概要

これはフロントエンドカンファレンス北海道2024のラインディングページ用リポジトリです

Next.js Type Script shadcn/ui Tailwind CSS pnpm

開発環境構築

  1. リポジトリをクローンする git clone https://github.com/frontend-conference-hokkaido-2024/landing-page-2024.git

  2. Node.jsのバージョンを20台にする

  3. 依存関係をインストールする pnpm install

  4. 環境変数を設定する .env.local.sampleをコピーして.env.localを作成し、環境変数を設定する

  5. 開発サーバーを起動する pnpm dev

スポンサー一覧

関連するディレクトリ

実装概要

基本構造

レイアウトプロセスの詳細

  1. グリッドのレイアウトを決定する スポンサーの layout プロパティでグリッドのレイアウトを決定している レイアウトのタイプは2つ:

    • layout: "grid gap-8" = 1列のグリッド (シルバー以外)
    • layout: "grid grid-cols-2 gap-8" = 2列のグリッド (シルバー)
  2. グリッドの横幅を決定する スポンサーの gridViewSize プロパティで任意のスポンサータイプが表示されるグリッドのサイズを決定している グリッドの横幅を指定することで、間接的にロゴ画像サイズを制御している サイズは3種:

    • sponsorGridWidth: "w-11/12 mx-auto" = プラチナ
    • sponsorGridWidth: "w-8/12 mx-auto" = 道内ゴールド, ゴールド, ローカル, デザイン
    • sponsorGridWidth: "w-11/12 mx-auto" = シルバー
  3. スポンサーロゴの画像を渡す スポンサーの logos プロパティで、スポンサー種別に応じたロゴの画像パス一覧を保持する 画像は、配列のインデックス順に表示される

スポンサーのロゴ画像を変更する

スポンサーのロゴ画像を変更する手順は以下の通り

  1. publicディレクトリ、sponsorLogos内にロゴ画像を配置する
  2. sponsorType.tsxファイルを開く
  3. 変更したいスポンサータイプを特定する。例えば、プラチナスポンサーのロゴを変更する場合、PLATINUMタイプを探す
  4. logos配列内の画像パスを新しい画像パスに置き換える ここで、配列のインデックス順に画像が表示される点に注意

任意のスポンサー種別のグリッドレイアウトを変更する

スポンサー種別のグリッドレイアウトを変更する手順は以下の通り

  1. sponsorType.tsxファイルを開く
  2. 変更したいスポンサータイプを特定する。例えば、プラチナスポンサーのレイアウトを変更する場合、PLATINUMタイプを探す
  3. layoutフィールドのクラスを新しいレイアウトクラスに置き換える

任意のスポンサー種別のロゴ画像表示サイズを変更する

スポンサー種別のロゴ画像表示サイズを変更する手順は以下の通り

  1. sponsorType.tsxファイルを開く
  2. 変更したいスポンサータイプを特定する。例えば、プラチナスポンサーのレイアウトを変更する場合、PLATINUMタイプを探す
  3. sponsorGridWidthフィールドのクラスを新しいレイアウトクラスに置き換える

ジョブボード

ジョブボードページは/job-boardに存在する。

実装概要

スポンサーの求人の表示関わる部分は@jobBoardSectionで実装している。 特に、1求人あたりの表示の実装はJob.tsx(ジョブボードの単位コンポーネント)で実装している。 スポンサーの求人に直接関係ない説明文などは、直接job-board/page.tsxにて実装している。

@jobBoardSectionについて

@jobBoardSection以下のファイルなどについての説明。

/components

/data

/page.tsx

ここでスポンサーの求人をまとめて表示させる処理を記述している。 以下がコア部分

<div className="grid grid-cols-1 gap-16 place-items-center">
  {JOB_BOARD_SECTION_DATA.map((jobData, index) => <Job {...jobData} key={index} />)}
</div>

グリッドレイアウトで表示しており、現状縦1列で表示されるようになっている。 JOB_BOARD_SECTION_DATA: JobProps[]mapメソッドを使って、各要素をJobコンポーネントに渡している。

単純に求人を追加したい

landing-page-2024\src\app\job-board\@jobBoardSection\data\constants.tsJOB_BOARD_SECTION_DATA配列に新しいJobオブジェクトを追記すればよい。上から順番に表示される。