株式会社エムティーアイのインターンシップで制作した作品です。
実現に至る新規サービスを制作することを目標にチームで企画から考え、マーケティング分析を経て決定したサービスのプロジェクトです。許可を得て公開しております。
サービス名「BulkBuddy」
ターゲット
・スポーツまたはやせ改善を目的に増量をしたい16歳~29歳の男性
・モチベーションを共有できる増量仲間が欲しい人
ベネフィット
・無料で食事管理や目標体重を設定し、増量の状況を管理できる。
・月額324円でコミュニティを通じて増量仲間と状況を共有し、増量のモチベーションを保つことができる。
コンセプト
・体づくりの増量サポートサービス
約2日
フロントエンド: Vue.js, Semantic UI
バックエンド: Node.js, Python
クラウド: AWS(Amazon S3, API Gateway + AWS Lambda, Amazon DynamoDB, Amazon CloudWatch)
実際の開発では、タスクごとにissueを立て、ブランチを切り、プルリクを出してチーム内でレビューをしdevelopブランチにマージ、最終完成バージョンをmainブランチにマージする形で行いました。
以下実際の開発期間でREADMEにて運用した要件定義書です。
開発を行う際は下記のブランチルールに従う
また、常に最新のdevelopeブランチの状態になるようmerge処理を行う
- main: 現在デプロイされているプロダクト
- develope: 開発中バージョンの中心
- develope/[Github名]/[開発の概要][IssueID]: 実用ブランチ例
例: develope/Kento210/fix_id#1
作業する内容についてIssueを作成して作業するものとする。
各開発が終了した際はdevelopeブランチへPRを出すものとする。
また、PRを出した場合は各個人が自己レビューを行う。
PR申請者以外がレビューを行い問題ないと判断された場合はMerge処理を行う
Mainブランチが外部に公開する最新プロダクトとして更新された際にデブロイ作業を行うものとする.
- 設計方針:基本機能(無料機能から作っていく)
- ログイン必須(sns無料は)
- team1_Userテーブル(id、名前、パスワード、身長、体重、年齢、消費カロリー、目標体重、目標期日)
- team1_Snsテーブル(id、名前、タイムスタンプ、内容、返信、いいね(ソートキー)、カテゴリー)
→ category:食事内容、トレーニング内容
- 強制有料プラン(7days)
- フロント、バック担当は3日目と一緒
- 目標カロリーの設定
- 初回ログイン時のアンケート機能
- gender
1 = 男 2 = 女 3 = その他
→基本アンケート項目
- あなたの目標は?(希望体重)
- 名前は?
- 生年月日は?
- 身長は?
- 体重は?
- アカウントの設定(パスワード、〇〇でサインアップなど)
- (ポリシー、利用規約、Cookieポリシー)
→プラン診断
- あなたの目標体重は?(number > number の形状)
- ペース(2023年、12月、1日達成する!など)
- 増量へのアプローチ方法は?(食事中心、食事とバランスよく、運動中心 <目標摂取カロリーと目標消費カロリーの表示> )
- コース、手段の提示(基本コース、〇〇コースなど)
- 結果の表示(〇〇コースで、〇〇までに、〇〇kg、一日の摂取カロリー、朝昼晩の摂取カロリー)
- その日の体重や摂取カロリーを記録する。
- 記録した結果から目標体重までの重量や一日に必要な摂取カロリーを表示する。
Userテーブル(id(プライマリーキー)、名前、パスワード、身長、体重、年齢、消費カロリー、目標体重、目標期日)
リクエストパラメータ | レスポンス内容 | ||||||
---|---|---|---|---|---|---|---|
メゾット | エントリーポイント | 処理の内容 | 変数名 | 型 | 必須 | 変数名 | 型 |
POST | /user/signup | ユーザの登録 | userId | string | ○ | userId | string |
name | string | ○ | name | string | |||
password | string | ○ | |||||
height | number | ○ | height | number | |||
weight | number | ○ | weight | number | |||
birth_year | number | ○ | birth_year | number | |||
birth_month | number | ○ | birth_month | number | |||
birth_day | number | ○ | birth_day | number | |||
calorie | number | ||||||
targetWeight | number | targetWeight | number | ||||
アドバンス | targetDate | number | targetData | number | |||
gender | number | ○ | |||||
token | string | ||||||
POST | /user/login | ユーザの認証 | userId | string | ○ | token | string |
password | string | ○ | |||||
GET | /user | ユーザ情報の取得 | userId | string | ○ | userId | string |
name | string | ||||||
height | number | ||||||
weight | number | ||||||
age | number | ||||||
calorie | number | ||||||
targetWeight | number | ||||||
targetDate | number | ||||||
gender | number | ||||||
PUT | /user | ユーザ情報の更新 | userId | string | ○ | userId | string |
name | string | name | string | ||||
password | string | ||||||
height | number | height | number | ||||
weight | number | weight | number | ||||
birth_year | number | birth_year | number | ||||
birth_month | number | birth_month | number | ||||
birth_day | number | birth_day | number | ||||
targetWeight | number | targetWeight | number | ||||
targetDate | number | targetData | number | ||||
gender | number | gender | number | ||||
DELETE | /user | ユーザの削除 | userId | string | ○ | success 200 | |
PUT | /user/record | カロリーの登録 | userId | string | ○ | userId | string |
calorie | number | ○ | calorie | number | |||
timestamp | number | (サーバ) | timestamp | number |
- sns写真なし、投稿、返信機能のみ
Snsテーブル(id(プライマリーキー)、名前、タイムスタンプ、内容、返信、いいね(ソートキー))
category=1は"食事" category=2は"トレーニング" category=3は"コラム"
リクエストパラメータ | レスポンス内容 | ||||||
---|---|---|---|---|---|---|---|
メゾット | エントリーポイント | 処理の内容 | 変数名 | 型 | 必須 | 変数名 | 型 |
POST | /article | 投稿 | userId | string | ○ | userId | string |
name | string | ○ | name | string | |||
text | string | ○ | text | string | |||
category | string | category | string | ||||
timestamp | number | ||||||
reply | array (0) | ||||||
likePost | number (0) | ||||||
GET | /article/search | 検索 | userId | string | userId | string | |
category | string | name | string | ||||
likepost_search | number | text | string | ||||
category | string | ||||||
reply | array (0) | ||||||
likePost | number (0) | ||||||
GET | /article | 表示 | articles | array | |||
GET | /article/free | 制限表示 | articles | array | |||
DELETE | /article | 削除 | userId | string | ○ | success 200 | |
timestamp | number | ○ |
- snsテーブルに保存
- 内容をtokenありとなしで表示方法を変える
- カテゴリーで検索、userId、いいねのソート
→デフォルト、timestampソート、likepost = 1
のときいいねソート起動(デフォルトは0)
- 制限版:最新、3件まで
- 時間余ったら
- 時間余ったら