README Stock
taiga-tech
2020/07/13 - 最終更新 1年前
ReservationApp GitHub site
Ruby JavaScript HTML SCSS Haml Dockerfile Shell

ReservationApp

小規模ヘアサロン向け予約サイト

topimage

App URL

テストアカウント

  • STAFF NAME : test
  • EMAIL : test@test.com
  • PASSWORD : test1234

インストール方法

※現在調整中です。

# git clone
  % git clone https://github.com/taiga-tech/ReservationApp.git
  % cd ReservationApp

# docker build
  % docker-compose build
  % docker-compose run --rm app yarn install
  % docker-compose up -d

# 初期設定
  % docker-compose run --rm app rails db:create
  % docker-compose run --rm rails db:migrate
  % docker-compose run --rm rails db:seed

開発環境

language version
Ruby 2.6.5
Ruby on Rails 6.0.3.3
MySQL 5.6.47
jQuery 4.4.0
Docker DeskTop 3.0.1
Docker Engine 20.10.0
docker-compose 1.27.4
CircleCI 2.1

アプリ機能

  • ユーザー画面

    • 美容室の予約
  • 店舗管理画面

    • Staff登録 (Devise)
    • 予約一覧
    • 店舗情報編集
    • スタイリスト追加、編集
    • 消費税、割引率編集
    • メニュー追加、編集
    • プロモーション画像切り替え

作成意図

少数オペレーションのヘアサロンをターゲットに予約サイトを作成しました。
理由は少数オペレーションだと電話対応が困難になり、作業中のお客様を待たせてしまうと考えたためです。

知人のヘアサロン経営者から、スマートフォンのブラウザから予約をしてもらうのはすごく大変で、
店舗のSNSと予約が合体したモバイルアプリがあるとスマートフォンに慣れていないお客様でもインストールさえすれば電話予約が少なくなるという話を聞いてヒントにしました。

現状モバイルアプリへの実装はWebViewのみでの実装はできているのですが、より高いユーザビリティを求めているため、Swiftでの実装を考えております。

iphone

工夫したポイント

  • 管理画面へのアクセス方法を少し困難にしました。
    management
    トップページのフッターにあるタイトルを10回クリックするとManagementというリンクが出現するため、クリックすると管理画面へアクセスできます。
    ※現状テスト段階のため、現在のアクセス方法は単純にしてます。

  • Trelloを意識したUIにこだわり、タスクの管理のしやすいような実装を意識しました。
    trello

    現状、縦方向のソートしかできないため、スタイリスト間の移動ができるよう改善予定です。


  • 予約フォームで希望ヘアスタイルの画像を添付することにより、カウンセリング時間の短縮ができます。
    trello

追加実装予定

  • モバイルアプリ化
  • レスポンシブ化
  • 予約時にメニューの複数選択
  • 予約一覧で日時順にする
  • 予約キャンセル、終了タスクの棲み分け
  • 店舗情報の住所を変更するとトップページ下部のマップを変更する(Google API)
  • 管理画面へのアクセスのセキュリティ強化
  • CircleCi導入
  • CircleCi設定

DB設計

ER図

ER図

Tables

reservations

Column Type Options
name string null: false
email string null: false
tel string null: false
date string null: false
time string null: false
request string
image string
menu_id references foreign_key: true
stylist_id references foreign_key: true
Association
  • belongs_to :menu
  • belongs_to :stylist

stylists

Column Type Options
name string null: false
position string null: false
comment text
image stirng
Association
  • has_many :reservations
Column Type Options
name string null: false
parice integer null: false
comment text
Association
  • has_many :reservations
  • has_many :menu_categories
  • has_many :categories, through: :menu_categories
Column Type Options
menu_id references foreign_key: true
category_id references foreign_key: true
Association
  • belongs_to :menu
  • belongs_to :category

categories

Column Type Options
name string null: false
Association
  • has_many :menu_categories
  • has_many :menus, through: :menu_categories

staffs

Column Type Options
name string null: false
email string null: false, unique: true
password string null: false

infos

Column Type Options
code string null: false
address string null: false
tel string null: false
weekday string null: false
weekend string null: false
holiday string null: false

galleries

Column Type Options
image string null: false

calculations

Column Type Options
tax float null: false
discount float null: false