自身の転職活動用ポートフォリオとして制作した家計簿アプリです。
Go, React, Kubernetesを用いたマイクロサービスアーキテクチャです。
※ 火・木曜日11:00 ~ 17:00稼働
※ ログインページのゲストユーザーログインより、「 郷ひろみ 」として簡単ログインできます。
現在友人と4人でシェアハウスしており、家賃、食費、日用品等、全員で費用を出し合って生活しています。
そんな中シェアハウス内での支出を管理したいという事で家計簿アプリを探しましたが、個人に特化した家計簿アプリがほとんどで、グループ機能があったとしても私達の要件を満たせるようなアプリが見つかりませんでした。
このような経緯から、家計簿アプリの定番機能である収支管理、予算管理等は実装した上で、グループ内での月末精算、買い物予定リスト、TODOリスト、料理当番や洗濯当番などのシフト管理等、シェアハウスに特化した機能があると便利だと思い制作しました。
また、シェアハウスしている方以外にも、家族や夫婦、カップル等、同じような不便を感じられてる方々に使用して頂けるサービスを作りたいと考えました。
開発者
- 平 侑祐
- 安樂 亮佑(共同開発者)
- 古澤 宏弥(共同開発者)
- 伊藤 稜悟(共同開発者)
制作物 / 担当
-
API / 平 侑祐
https://github.com/hryze/kakeibo-app-api -
Terraform / 平 侑祐
https://github.com/hryze/kakeibo-app-terraform -
Kubernetes / 平 侑祐
https://github.com/hryze/kakeibo-app-kubernetes -
Frontend / 安樂 亮佑(共同開発者), 古澤 宏弥(共同開発者), 伊藤 稜悟(共同開発者)
https://github.com/ryo-wens/kakeibo-front
開発手法
- アジャイル開発(スクラム)
コミュニケーションツール
- Slack
- Trello
- Googleスプレッドシート
Language
- TypeScript v4.2.2
- Sass
Library/Framework
- React v17.0.1
- Redux v4.0.5
Language
- Go v1.16.3
Cloud Service
- AWS
Infrastructure as Code
- Terraform v0.14.7
- VPC
- Subnet
- Route Table
- Internet Gateway
- NAT Gateway
- Security Group
- EKS
- ECR
- S3
- CloudFront
- ELB
- EC2
- Route53
- ACM
- RDS(MySQL v8.0.20)
- ElastiCache(Redis v5.0.6)
- Secrets Manager
- IAM
Container
- docker v20.10.2
- docker-compose v1.27.4(開発環境Database用)
Container Orchestration
- Kubernetes v1.18
- api × 3
- argocd
- aws-load-balancer-controller
- cert-manager
- cluster-autoscaler
- external-dns
- external-secrets
- initialize-rds-job
- metrics-server
- Kustomize v4.0.4
CI/CD
- GitHub Actions
- ArgoCD
ユーザー機能
- ユーザー新規登録
- ユーザーログイン
- ユーザーログアウト
家計簿機能
- 月別家計簿取引一覧取得
- 家計簿取引最終更新10件取得
- 家計簿取引追加
- 家計簿取引更新
- 家計簿取引削除
- 家計簿取引検索
家計簿予算機能
- 標準予算取得
- 標準予算更新
- 月別カスタム予算取得
- 月別カスタム予算追加
- 月別カスタム予算更新
- 月別カスタム予算削除
- 年別予算一覧取得
カテゴリー機能
- カテゴリー一覧取得
- カスタムカテゴリー追加
- カスタムカテゴリー更新
- カスタムカテゴリー削除
todo機能
- 日別実施予定todo, 締切予定todo一覧取得
- 月別実施予定todo, 締切予定todo一覧取得
- 期限切れtodo一覧取得
- todo追加
- todo更新
- todo削除
- todo検索
買い物リスト機能
- 定期買い物リスト, 日別買い物リスト取得
- 定期買い物リスト, 月別買い物リスト取得
- 期限切れ買い物リスト取得
- 買い物リスト更新, 家計簿トランザクション自動追加/自動削除
- 買い物リスト削除
- 定期買い物リスト追加
- 定期買い物リスト更新
- 定期買い物リスト削除
グループ機能
- 承認グループ, 未承認グループ一覧取得
- グループ作成
- グループ名更新
- グループ招待
- グループ招待承認
- グループ招待拒否
- グループ退会
グループ家計簿機能
- 月別家計簿取引一覧取得
- 家計簿取引最終更新10件取得
- 家計簿取引追加
- 家計簿取引更新
- 家計簿取引削除
- 家計簿取引検索
- 年別家計簿取引会計状況一覧取得
- 月別家計簿取引自動会計
- 月別家計簿取引会計データ取得
- 月別家計簿取引会計データ更新
- 月別家計簿取引会計データ削除
グループ予算機能
- 標準予算取得
- 標準予算更新
- 月別カスタム予算取得
- 月別カスタム予算追加
- 月別カスタム予算更新
- 月別カスタム予算削除
- 年別予算一覧取得
グループカテゴリー機能
- カテゴリー一覧取得
- カスタムカテゴリー追加
- カスタムカテゴリー更新
- カスタムカテゴリー削除
グループtodo機能
- 日別実施予定todo, 締切予定todo一覧取得
- 月別実施予定todo, 締切予定todo一覧取得
- 期限切れtodo一覧取得
- todo追加
- todo更新
- todo削除
- todo検索
グループ買い物リスト機能
- 定期買い物リスト, 日別買い物リスト取得
- 定期買い物リスト, 月別買い物リスト取得
- 期限切れ買い物リスト取得
- 買い物リスト更新, 家計簿トランザクション自動追加/自動削除
- 買い物リスト削除
- 定期買い物リスト追加
- 定期買い物リスト更新
- 定期買い物リスト削除
グループシフト管理機能
- ユーザー別シフト一覧取得
- シフト機能用ユーザー追加
- シフト機能用ユーザー削除
- シフト機能用タスク一覧取得
- シフト機能用タスク追加
- シフト機能用タスク更新
- シフト機能用タスク削除
-
DDDを適用。
-
user-rest-service
-
account-rest-service
-
todo-rest-service
-
コードの品質保証ができていない。
-
バリデーション処理や複雑な処理をしている部分等を優先にテストを充実させていく。
-
kubernetesにて複数環境に対応したmanifest管理ができていない。
-
kustomizeを導入し、環境毎に設定を定義。
-
terraformにて複数環境に対応したリソース管理ができていない。
-
共通リソースをmodule化し、環境毎パラメータ設定ファイルを追加。
HTTP request | HTTP response status code |
Description |
---|---|---|
POST /signup |
201 Created |
ユーザー新規登録 |
POST /login |
201 Created |
ユーザーログイン |
DELETE /logout |
200 OK |
ユーザーログアウト |
GET /user |
200 OK |
ユーザー情報取得 |
GET /groups |
200 OK |
承認グループ, 未承認グループ一覧取得 |
POST /groups |
201 Created |
グループ作成 |
PUT /groups/{group_id} |
200 OK |
グループ名更新 |
POST /groups/{group_id}/users |
201 Created |
グループ招待 |
DELETE /groups/{group_id}/users |
200 OK |
グループ退会 |
POST /groups/{group_id}/users/approved |
201 Created |
グループ招待承認 |
DELETE /groups/{group_id}/users/unapproved |
200 OK |
グループ招待拒否 |
GET /readyz |
200 OK |
Kubernetesヘルスチェック ※ Backend専用 |
GET /groups/{group_id}/users |
200 OK |
グループユーザーIDリスト取得 ※ Backend専用 |
GET /groups/{group_id}/users/{user_id}/verify |
200 OK |
グループ所属確認 ※ Backend専用 |
GET /groups/{group_id}/users/verify |
200 OK |
ユーザーリストのグループ所属確認 ※ Backend専用 |
HTTP request | HTTP response status code |
Description |
---|---|---|
GET /categories |
200 OK |
カテゴリー一覧取得 |
POST /categories/custom-categories |
201 Created |
カスタムカテゴリー追加 |
PUT /categories/custom-categories/{id} |
200 OK |
カスタムカテゴリー更新 |
DELETE /categories/custom-categories/{id} |
200 OK |
カスタムカテゴリー削除 |
GET /transactions/{year_month} |
200 OK |
月別家計簿トランザクション一覧取得 |
GET /transactions/latest |
200 OK |
家計簿トランザクション最終更新10件取得 |
POST /transactions |
201 Created |
家計簿トランザクション追加 |
PUT /transactions/{id} |
200 OK |
家計簿トランザクション更新 |
DELETE /transactions/{id} |
200 OK |
家計簿トランザクション削除 |
GET /transactions/search |
200 OK |
家計簿トランザクション検索 |
GET /standard-budgets |
200 OK |
家計簿標準予算取得 |
PUT /standard-budgets |
200 OK |
家計簿標準予算更新 |
GET /custom-budgets/{year_month} |
200 OK |
月別家計簿カスタム予算取得 |
POST /custom-budgets/{year_month} |
201 Created |
月別家計簿カスタム予算追加 |
PUT /custom-budgets/{year_month} |
200 OK |
月別家計簿カスタム予算更新 |
DELETE /custom-budgets/{year_month} |
200 OK |
月別家計簿カスタム予算削除 |
GET /budgets/{year} |
200 OK |
年別家計簿予算一覧取得 |
GET /groups/{group_id}/categories |
200 OK |
グループカテゴリー一覧取得 |
POST /groups/{group_id}/categories/custom-categories |
201 Created |
グループカスタムカテゴリー追加 |
PUT /groups/{group_id}/categories/custom-categories/{id} |
200 OK |
グループカスタムカテゴリー更新 |
DELETE /groups/{group_id}/categories/custom-categories/{id} |
200 OK |
グループカスタムカテゴリー削除 |
GET /groups/{group_id}/transactions/{year_month} |
200 OK |
月別グループ家計簿トランザクション一覧取得 |
GET /groups/{group_id}/transactions/latest |
200 OK |
グループ家計簿トランザクション最終更新10件取得 |
POST /groups/{group_id}/transactions |
201 Created |
グループ家計簿トランザクション追加 |
PUT /groups/{group_id}/transactions/{id} |
200 OK |
グループ家計簿トランザクション更新 |
DELETE /groups/{group_id}/transactions/{id} |
200 OK |
グループ家計簿トランザクション削除 |
GET /groups/{group_id}/transactions/search |
200 OK |
グループ家計簿トランザクション検索 |
GET /groups/{group_id}/transactions/{year}/account |
200 OK |
年別グループ家計簿トランザクション会計状況一覧取得 |
GET /groups/{group_id}/transactions/{year_month}/account |
200 OK |
月別グループ家計簿トランザクション会計データ取得 |
POST /groups/{group_id}/transactions/{year_month}/account |
201 Created |
月別グループ家計簿トランザクション会計データ追加 |
PUT /groups/{group_id}/transactions/{year_month}/account/{id} |
200 OK |
月別グループ家計簿トランザクション会計データ更新 |
DELETE /groups/{group_id}/transactions/{year_month}/account |
200 OK |
月別グループ家計簿トランザクション会計データ削除 |
GET /groups/{group_id}/standard-budgets |
200 OK |
グループ家計簿標準予算取得 |
PUT /groups/{group_id}/standard-budgets |
200 OK |
グループ家計簿標準予算更新 |
GET /groups/{group_id}/custom-budgets/{year_month} |
200 OK |
グループ月別家計簿カスタム予算取得 |
POST /groups/{group_id}/custom-budgets/{year_month} |
201 Created |
グループ月別家計簿カスタム予算追加 |
PUT /groups/{group_id}/custom-budgets/{year_month} |
200 OK |
グループ月別家計簿カスタム予算更新 |
DELETE /groups/{group_id}/custom-budgets/{year_month} |
200 OK |
グループ月別家計簿カスタム予算削除 |
GET /groups/{group_id}/budgets/{year} |
200 OK |
グループ年別家計簿予算一覧取得 |
GET /readyz |
200 OK |
Kubernetesヘルスチェック ※ Backend専用 |
POST /standard-budgets |
201 Created |
家計簿標準予算初期値追加 ※ Backend専用 |
GET /categories/name |
200 OK |
カテゴリー名取得 ※ Backend専用 |
GET /categories/names |
200 OK |
カテゴリー名リスト取得 ※ Backend専用 |
GET /transactions/related-shopping-list |
200 OK |
買い物リストに関連する家計簿トランザクション取得 ※ Backend専用 |
POST /groups/{group_id}/standard-budgets |
201 Created |
グループ家計簿標準予算初期値追加 ※ Backend専用 |
GET /groups/{group_id}/categories/name |
200 OK |
グループカテゴリー名取得 ※ Backend専用 |
GET /groups/{group_id}/categories/names |
200 OK |
グループカテゴリー名リスト取得 ※ Backend専用 |
GET /groups/{group_id}/transactions/related-shopping-list |
200 OK |
グループ買い物リストに関連する家計簿トランザクション取得 ※ Backend専用 |
HTTP request | HTTP response status code |
Description |
---|---|---|
GET /todo-list/{date} |
200 OK |
日別実施予定todo, 締切予定todo一覧取得 |
GET /todo-list/{year_month} |
200 OK |
月別実施予定todo, 締切予定todo一覧取得 |
GET /todo-list/expired |
200 OK |
期限切れtodo一覧取得 |
POST /todo-list |
201 Created |
todo追加 |
PUT /todo-list/{id} |
200 OK |
todo更新 |
DELETE /todo-list/{id} |
200 OK |
todo削除 |
GET /todo-list/search |
200 OK |
todo検索 |
GET /shopping-list/{date}/daily |
200 OK |
定期買い物リスト, 日別日順買い物リスト取得 |
GET /shopping-list/{date}/categories |
200 OK |
定期買い物リスト, 日別カテゴリー順買い物リスト取得 |
GET /shopping-list/{year_month}/daily |
200 OK |
定期買い物リスト, 月別日順買い物リスト取得 |
GET /shopping-list/{year_month}/categories |
200 OK |
定期買い物リスト, 月別カテゴリー順買い物リスト取得 |
GET /shopping-list/expired |
200 OK |
期限切れ買い物リスト取得 |
POST /shopping-list |
201 Created |
買い物リスト追加 |
PUT /shopping-list/{id} |
200 OK |
買い物リスト更新, 家計簿トランザクション自動追加/自動削除 |
DELETE /shopping-list/{id} |
200 OK |
買い物リスト削除 |
POST /shopping-list/regular |
201 Created |
定期買い物リスト追加 |
PUT /shopping-list/regular/{id} |
200 OK |
定期買い物リスト更新 |
DELETE /shopping-list/regular/{id} |
200 OK |
定期買い物リスト削除 |
GET /groups/{group_id}/todo-list/{date} |
200 OK |
グループ日別実施予定todo, グループ締切予定todo一覧取得 |
GET /groups/{group_id}/todo-list/{year_month} |
200 OK |
グループ月別実施予定todo, グループ締切予定todo一覧取得 |
GET /groups/{group_id}/todo-list/expired |
200 OK |
グループ期限切れtodo一覧取得 |
POST /groups/{group_id}/todo-list |
201 Created |
グループtodo追加 |
PUT /groups/{group_id}/todo-list/{id} |
200 OK |
グループtodo更新 |
DELETE /groups/{group_id}/todo-list/{id} |
200 OK |
グループtodo削除 |
GET /groups/{group_id}/todo-list/search |
200 OK |
グループtodo検索 |
GET /groups/{group_id}/shopping-list/{date}/daily |
200 OK |
グループ定期買い物リスト, 日別日順買い物リスト取得 |
GET /groups/{group_id}/shopping-list/{date}/categories |
200 OK |
グループ定期買い物リスト, 日別カテゴリー順買い物リスト取得 |
GET /groups/{group_id}/shopping-list/{year_month}/daily |
200 OK |
グループ定期買い物リスト, 月別日順買い物リスト取得 |
GET /groups/{group_id}/shopping-list/{year_month}/categories |
200 OK |
グループ定期買い物リスト, 月別カテゴリー順買い物リスト取得 |
GET /groups/{group_id}/shopping-list/expired |
200 OK |
グループ期限切れ買い物リスト取得 |
POST /groups/{group_id}/shopping-list |
201 Created |
グループ買い物リスト追加 |
PUT /groups/{group_id}/shopping-list/{id} |
200 OK |
グループ買い物リスト更新, 家計簿トランザクション自動追加/自動削除 |
DELETE /groups/{group_id}/shopping-list/{id} |
200 OK |
グループ買い物リスト削除 |
POST /groups/{group_id}/shopping-list/regular |
201 Created |
グループ定期買い物リスト追加 |
PUT /groups/{group_id}/shopping-list/regular/{id} |
200 OK |
グループ定期買い物リスト更新 |
DELETE /groups/{group_id}/shopping-list/regular/{id} |
200 OK |
グループ定期買い物リスト削除 |
GET /groups/{group_id}/tasks/users |
200 OK |
ユーザー別グループタスク一覧取得 |
POST /groups/{group_id}/tasks/users |
201 Created |
グループタスクユーザー追加 |
DELETE /groups/{group_id}/tasks/users |
200 OK |
グループタスクユーザー削除 |
GET /groups/{group_id}/tasks |
200 OK |
グループタスク一覧取得 |
POST /groups/{group_id}/tasks |
201 Created |
グループタスク追加 |
PUT /groups/{group_id}/tasks/{id} |
200 OK |
グループタスク更新 |
DELETE /groups/{group_id}/tasks/{id} |
200 OK |
グループタスク削除 |
GET /readyz |
200 OK |
Kubernetesヘルスチェック ※ Backend専用 |