株式会社Ceremony

技術について

現在の状況

現在は開発に参加しているメンバーは 2 名で、うち 1 名がフルタイム, 1 名が業務委託となります。

現在の構成

項目備考
Chakra UIコンポーネントライブラリに Chakra UI を使用しています
Cloud Firestoreデータベースに Firestore を使用しています
Cloud Functionsサーバサイドに Cloud Functions に使用しています
Cloud Storageストレージに Cloud Storage を使用しています
CypressE2E テストに Cypress を使用しています
ESLint品質担保に ESLint を使用しています
Firebase Auth認証基盤に Firebase Auth を使用しています
GitHubコードペース管理に GitHub を使用しています
GitHub ActionsCI に GitHub Actions を使用しています
husky品質担保に husky を使用しています
jestテストに jest を使用しています
Lernamonorepo 構成に Lerna を使用しています
lint-staged品質担保に lint-staged を使用しています
Next.jsフレームワークに Next.js を使用しています
Prettier品質担保に Prettier を使用しています
Reactコンポーネントに React JSX を使用しています
Recoilグローバルストアに Recoil を使用しています
Sentryエラーレポートに Sentry を使用しています
Storybookコンポーネントライブラリに Storybook を使用しています
SWRデータ取得に SWR を使用しています
Tailwind CSS一部スタイリングに Tailwind CSS を使用しています
TypeScriptすべてのコードベースに TypeScript を使用しています
Vercelホスティングサーバに Vercel を使用しています
Yarn (workspace)パッケージマネージャに Yarn を使用しています

現在は、Web のみの提供となっており、ネイティヴアプリケーションは提供していません。

Overview

  • リポジトリはすべて 1 つの大きな monorepo で管理しています
  • 型定義や品質担保のためのシステムは全コードベースで共有されています
  • リリースフローは原則的に Vercel 及び GitHub Actions の CI によって行われます
  • テストはすべて書かれているわけではなく、それぞれ少しずつ進めている最中です

Web (メインアプリケーション)

  • React / Next.js / TypeScript で書かれています
  • グローバルストアは基本的に Auth / Error の 2 つしか存在せず、各コンポーネントから呼ぶカスタム Hook を持つ構成です
  • E2E テストを Cypress で実行しています
  • Unit / Snapshot テストを今後用途に合わせて書いていく予定です
  • サーバレス環境であることもあり、多くの処理においてクライアント側の配分が大きいプロジェクトです

Server (Cloud Functions)

  • TypeScript で書かれています
  • 今の所テストは書かれておらず、Firebase Local Emulator Suite を利用したテストを書いていく予定です

Firebase (Cloud Firestore, Cloud Storage)

  • セキュリティルールに関してはすべてテストが書かれており、GitHub Actions 上でマージ前に実行されます

その他、多くのパッケージが存在しますが、省略させていただきます。

開発の進め方

現状、開発において決まった進め方があるわけではありません。入社をご検討いただける方には開発の進め方等のアドバイスも頂けると嬉しいです。 コード規約等は Linter, Formatter で厳しく縛っており、基本的には悩むこと無く進めていくことが可能です。 ドキュメント等、開発周りにおいてはまだまだ未整備の部分が多く、懸案事項です。