# 注意
この記事は23年11月時点の記事です
# カリスワークスとは
カリスワークスとは私が立ち上げている EC サイトのプロジェクトで、プラットフォーム型のシステムです。 2023 年 5 月に始まり、現在も続いているプロジェクトです。動機としては、母がブレスレットの販売をしてみたいと言ったことで、大きな販売プラットフォームで販売してもいいが、ちょうどいい機会だし 1 からやってみようと思い、今に至ります。
リライトプロジェクトはこちら
# 構成
システム構成は以下のとおりです。
# フロントエンド
Typescript で開発をしています。CSS は今後 1 から書く予定ですが、臨時として MaterialUI を使用しています。
リライトプロジェクトはこちら
現在はフロントエンドを鋭意開発中です。# バックエンド
バックエンドは Golang を使用しています。またデータベースは MySQL、リバースプロキシには nginx を使用しています。アカウント認証は firebase Authentication を、決済機構は stripe を使用しています。
リライトプロジェクトはこちら
README にも書いているのですが、かなり苦戦したセッションや認証フロー・データベースなどについて少し紹介させてもらいます。
# セッション
このフローを用いることによって、毎回のアクセスごとに cookie に保存されているセッションキーが更新されるようになります。 セッションキーはセッションハイジャックの対策のため、毎回ランダムな値で生成されています。
※この実装はセキュリティの観点からdeprecatedとしました
# ログイン機構
このフローは firebase authentication を使用した認証機構です。 メールプロパイダをメールアドレスとパスワードのみ設定すると、アカウントを作成し、サーバにそのデータを送信するというフローが必要となり、アカウントだけが作成され、バックエンドにそのデータが送信されないという攻撃をされる可能性があり、今回は google アカウントを連携しないと認証できないようにすることで、でたらめなアドレスなどで攻撃されないような対策を講じました。
※この実装はセキュリティの観点からdeprecatedとしました
# 取引フロー
このフローは決済サービスの Stripe を使用した取引フローです。 API キーを使用して、PaymentIntent を作成し、振られたリンクにリダイレクトする必要があり、それと同時にバックエンドを動かすというフローとなります。
※この実装はセキュリティの観点からdeprecatedとしました
# データベース設計
データベースはこのようになっています。この形にたどり着くまでかなり作り直しをしました。一番苦戦したところは取引を適切なタイミングで保存しておかないと、アカウント情報の変更が行われると請求書が適切に作成できないというところです。その問題を解決するために、取引ごとに配送先情報を持つという構造にしました。
# まとめ
以上が現在の進捗となります。このプロジェクトは最終的に OSS として誰でも使えるようにしたいと考えています。これからも頑張っていきます。