Git Product home page Git Product logo

oss-calendar's Introduction

OSS Calendar

OSS Calendar Logo
OSS Calendarは企業で使うことを想定したオープンソースのカレンダーアプリです。

Motivation

企業内のスケジューラーは使いづらい部分が多くあります。
しかし、個人のGoogleカレンダーなどと連携させてしまうと情報管理が心配で、開発をしたくてもカレンダーアプリは費用が掛かりすぎてしまいます。

OSS Calendarは企業で使うことを想定したカレンダーアプリですので、以下のような機能を実現しています。

  • チーム全員のスケジュールの可視化
  • 素早いメンバーアサインの実現
  • 通常のスケジューラーとしての利用

詳しくは公式サイトをご確認ください。
OSS Calendar

Features

  • Laravel 9.*
  • passport
  • Node.js v16.15.1
  • Vue + VueRouter + Vuex
  • vuetify

開発環境

Dockerを使って開発サーバーを建てる手順について説明します。 検証はMacOSのDocker for Macで行っていますので、Windowsの場合ところどころ違う可能性があります。

バックエンドの準備

git clone https://github.com/thinkingreed-inc/oss-calendar.git oss-calendar
cd oss-calendar
docker-compose build
docker-compose up -d

コンフィグを準備する

cp .env.example .env
  • クライアントサーバとAPIサーバの.envファイルの設定例:
APP_URL=http://localhost #APIServerのURLを指定
CLIENT_URL=http://localhost #クライアントのURLを指定、HTMLを配信する場所
###
# CLIENT_URLは、npm run devで立ち上げた場合、http://localhost:3000になるため注意する
###

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=osscalendar
DB_USERNAME=username
DB_PASSWORD=userpass

MAIL_DRIVER=smtp
MAIL_HOST=mailcatcher
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="シンキングリード"

Laravelのセットアップ

# Dockerコンテナにログインして、Composerで関連ファイルをInstallする
docker ps
docker exec -it [container_id] bash
# ここからコンテナ内
cd /var/www/html/
composer remove fideloper/proxy
composer require laravel/helpers
composer require laravel/legacy-factories
composer require symfony/mailgun-mailer symfony/http-client
composer require fruitcake/laravel-cors
composer install
php artisan key:generate
php artisan optimize
php artisan migrate
php artisan db:seed
php artisan passport:install

注意点

  • 既存のdockerimageとのポートの競合を回避する必要あります。
    もし80番ポート等を使われている場合は、docker-compose.yml内のポートを修正してください。 クライアントサーバはnpm run devで稼働し、APIサーバはDockerコンテナのNginx、php-fpmで稼働します
  • .env.sampleをコピーして.envファイルを作成する
  • .envファイルにあるAPP_KEYを更新する
  • .env内部では半角スペースを使用できません。利用する場合はシングルクォーテーションでくくってください。
  • もし、開発時にLaravelのコードが反映されない場合、php artisan optimizeでキャッシュをクリアする

フロントエンドの準備

ここではDockerではなく、クライアント側でnpmを実行手順を紹介する 先にも書きましたが、CLIENT_URLの部分は http://localhost:3000 を指定してください。

  • クライアントのコマンド実行例:
npm install
npm install -g nuxt
npm run dev
※クライアントサーバのポートは.envに記載してあるポート番号を自動で読み込む

表示されるURLにアクセスして、ログイン画面が表示され、「admin/admin」でログインできれば環境構築は完了です。

補足

APIサーバには設定ファイルがキャッシュ化されているため、設定変更した場合は、php artisan optimizeコマンドを実行する。

本番環境(加筆中)

クライアントサーバとAPIサーバを同一サーバにとして稼働させる
※同一サーバにすることでサーバのメンテナンスコストを削減できる

  • envの設定例:
CLIENT_URL=http://localhost
APP_URL=http://localhost
※CLIENT_URLとAPP_URLは同じにする
  • 静的ファイルの書き出し:
$ npm run generate
$ npm run build
※public/_nuxtフォルダに書き出される
※.envのAPP_URLとCLIENT_URLによって、.htaccessのRewriteBaseは自動設定される
  • 同一サーバで稼働させる
    apacheのドキュメントルートをpublic/以下に設定し、稼働させる
    APIサーバには設定ファイルがキャッシュ化されているため、設定変更した場合は、php artisan optimizeコマンドを実行する。

Cronの設定

予定のメール通知を受け取るために、以下のスクリプトをcronに登録する

$ crontab -e
#以下の行を追加
#cd /var/www/html/ && php artisan command:reminder >> /dev/null 2>&1

開発

api用のコントローラの作成

$ php artisan make:controller ApiController --api

自動補完対応

$ php artisan ide-helper:generate
$ php artisan ide-helper:model

License

GPLv3 Disclaimer

For the avoidance of doubt, except that if any license choice other than GPL or LGPL is available it will apply instead, Thinkingreed elects to use only the General Public License version 3 (GPLv3) at this time for any software where a choice of GPL license versions is made available with the language indicating that GPLv3 or any later version may be used, or where a choice of which version of the GPL is applied is otherwise unspecified.

OSS-Calendar FOSS License Exception

We want free and open source software applications under certain licenses to be able to use specified GPL-licensed OSS-Calenar despite the fact that not all such FOSS licenses are compatible with version 3 of the GNU General Public License. Therefore there are special exceptions to the terms and conditions of the GPLv2 as applied to these client libraries, which are identified and described in more detail in the FOSS License Exception at There are other conditions specified by Thinkingreed.

oss-calendar's People

Contributors

dependabot[bot] avatar hideosugimoto avatar junmt avatar kkouta avatar remicck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

oss-calendar's Issues

Issueテンプレートに質問を作る

現在質問用のテンプレートがないため、様々な場所にご意見を頂いている状態なので、Issueテンプレートとして登録するようにします。

OSSカレンダーのPHP8.1対応

概要

OSSカレンダーのPHP8.1対応、及びLaravel9対応

該当ページ

全画面

背景と目的

OSSカレンダーの対応PHPバージョンを更新する。

最終的なゴール

PHP8.1、Laravel9.x、Nodev16.xにてOSSカレンダーが動作できるようにする。

仕様

登録した予定が瞬時に反映されない

不具合概要

 Ubuntu Ver18 + Docker + npm 全て同一端末
 カレンダー上で登録した予定が瞬時に反映されない。
 ブラウザのリロードにて反映する。
 予定をドラッグアンドドロップで移動させると、サークルが表示され以降動作しない。
 

該当ページ

 カレンダー画面

発生環境

  • 環境:Ubuntu Ver18 + Docker + npm
  • ブラウザ:Firefox 74
  • バージョン:

再現手順

  1. 予定を登録する
  2. 予定をドラックアンドドロップする

本来の挙動

 オンラインのデモ環境では瞬時に登録、表示される。
 ドラックアンドドラップにて予定の移動が出来る。

修正しないとどう困るか

 動作しない

原因

 不明

修正案

 不明

休祝日設定のインポート形式が不明

概要

休祝日設定のインポート用のフォーマットが不明であるため教えてほしい

該当ページ

休祝日設定画面

背景と目的

インポート可能なCSVファイルのテンプレート等がない場合、ソースコードから追って確認しなくてはいけないが、不便。

最終的なゴール

インポート用のフォーマットは、画面上からDLできるようにしたい

仕様

テンプレートとなるCSVファイルを、リンクで配置する

ファイルフォーマットは以下となります。

  • CSVファイル
  • エンコード:Shift-JIS
  • カラム:ヘッダー無し
  • 休祝日名, 年月日, 表示順

サンプル

元日,2020/1/1,1

個別グループ、個人が勝手に作れないようにしたい

概要

現在はすべてのユーザーが個別グループを作成可能なことから、他部署の予定を非表示にするような制御がかからない。
個別グループ作成に権限設定があれば、部署・共有グループのみしかスケジュールが見れなくなる。

該当ページ

個別グループ

背景と目的

全てのスケジュールを共有したくないケースを想定して

最終的なゴール

仕様

管理メニューにフラグを作り、Onになっている場合、個別グループで選択可能なユーザーを自分が所属している部署のメンバーのみにする。

OSSカレンダーの選択肢項目にて、検索ができるようにする。

概要

OSSカレンダーの選択肢項目にて、検索ができるようにする。

該当ページ

予定、ユーザー、部署、共有グループ、個別グループ、その他選択肢が存在する画面

背景と目的

選択肢の数が多い場合、選択肢を選ぶ際に手間がかかっている。
選択肢項目にて検索ができるように修正する。

最終的なゴール

全ての選択肢項目にて、検索が機能している。

仕様

現状、<v-select にて実装している箇所を<v-autocomplete に置換する。
v-autocompleteコンポーネントの機能にて、選択肢の検索が可能となる。
https://vuetifyjs.com/ja/components/autocompletes/

Dockerビルド時にComposerのインストールでエラーが発生する

不具合概要

Composerのインストール時にハッシュ値のチェック部分でエラーが発生する。

該当ページ

docker-compose build時

発生環境

  • 環境:Docker version 19.03.5
  • ブラウザ:
  • バージョン:

再現手順

  1. 2020/01/07時点 docker-compose build

本来の挙動

正常にインストール可能

修正しないとどう困るか

原因

docker/php-fpm/Dockerfile内の以下の記述

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

修正案

COPY --from=composer /usr/bin/composer /usr/bin/composer

共有グループが標示されない

不具合概要

共有グループを設定すると、全てのログインユーザーに標示されるグループが作成できるが、現在標示されない

該当ページ

全ページ

発生環境

  • 環境:MacOS Catarina
  • ブラウザ:Chrome Latest
  • バージョン:

再現手順

  1. ログインして見る

本来の挙動

共有グループが標示され、選択可能になる

修正しないとどう困るか

部署としてグループを全て登録しなくてはいけなくなる

原因

修正案

二重ログインができない

概要

現状ではPCとスマホなどの二重ログインができない。

該当ページ

全ページ

背景と目的

外出時などでセッションが切れると不便と思われます。

最終的なゴール

二重ログインを可能にする

仕様

検討中

Composer Install時にapi.github.comのドメインが解決できない

不具合概要

Composerがエラーで正常終了しない

該当ページ

インストール画面

発生環境

  • 環境:Windows10 WSL2 Ubuntu 20.04
  • ブラウザ:
  • バージョン:

再現手順

  1. docker-compose up --build
  2. docker exec -it {id} bash
  3. composer install

本来の挙動

正常終了する

修正しないとどう困るか

autoload.phpが生成されない

原因

api.github.comの解決がうまく行かないので手元のネットワークの問題の可能性もある。

修正案

Dockerfileにdigを入れて確認してみる予定

LDAP対応

概要

ユーザ管理をLDAPサーバでも行いたい

該当ページ

背景と目的

ユーザ数が増えるとアプリやサービス毎にユーザ登録するのが手間となってしまいユーザ管理が煩雑となってしまうため。

最終的なゴール

ユーザ管理をLDAPサーバでも行えるようになる。

仕様

README.mdの手順で構築ができない

不具合概要

f7b3211

早速、CentOS7上に、Docker環境をインストールし、README.mdの手順通りに

Docker-Composeを実行しコンテナを起動し、クライアントでnpm run devを実行し、
ブラウザでアクセス、ログイン画面はでるのですが、ID,パス(admin/admin)を入れて進もうとすると、

[このリクエストは、サーバ側で処理できませんでした。]

と出力されてログインできない状態となっております。恐らく、クライアント側とバッグエンド側が
うまく通信できていないように思われるのですが、

発生環境

  • 環境:
  • ブラウザ:
  • バージョン:

セットアップ時のエラーについて

不具合概要

バックエンドの準備で「docker-compose up -d」でコンテナを作成しているが、
 「osscal-db」が動作時に、以下のメッセージをだし、再起動を繰り返す。


2024-05-21 10:59:34 2024-05-21T01:59:34.409384Z 0 [Warning] [MY-010441] [Server] Failed to open optimizer cost constant tables
<省略>
2024-05-21 10:59:34 2024-05-21T01:59:34.474493Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2024-05-21 10:59:34 2024-05-21T01:59:34.637884Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-05-21 10:59:34 2024-05-21T01:59:34.638239Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-05-21 10:59:34 2024-05-21T01:59:34.653406Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2024-05-21 10:59:34 2024-05-21T01:59:34.654261Z 0 [Warning] [MY-010441] [Server] Failed to open optimizer cost constant tables
2024-05-21 10:59:34 2024-05-21T01:59:34.654839Z 0 [ERROR] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-001146 - Table 'mysql.component' doesn't exist
2024-05-21 10:59:34 2024-05-21T01:59:34.654894Z 0 [Warning] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-003543 - The mysql.component table is missing or has an incorrect definition.
2024-05-21 10:59:34 2024-05-21T01:59:34.655230Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default-authentication-plugin=mysql_native_password'.
2024-05-21 10:59:34 2024-05-21T01:59:34.657888Z 0 [ERROR] [MY-010119] [Server] Aborting
2024-05-21 10:59:36 2024-05-21T01:59:36.180510Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.4.0) MySQL Community Server - GPL.
2024-05-21 10:59:36 2024-05-21T01:59:36.180549Z 0 [System] [MY-015016] [Server] MySQL Server - end.

 Docker、docker-composeのバージョン等に問題があるのでしょうか。
  Docker version 26.1.3, build b72abbb
  docker-compose: version 1.29.2

また、当然、osscal-dbが起動できていないので、
 php artisan passport:install 等で、以下のエラーとなります。

Illuminate\Database\QueryException

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Name or service not known (SQL: insert into oauth_clients (user_id, name, secret, provider, redirect, personal_access_client, password_client, revoked, updated_at, created_at) values (?, OSSCalendar Personal Access Client, 3ABpMgh9F9Ph0z2eUYjyL2JyoVAXaZnJPv5jYChS, ?, http://localhost, 1, 0, 0, 2024-05-21 11:11:42, 2024-05-21 11:11:42))

発生環境
 ubuntu 22.04
 Docker version 26.1.3, build b72abbb
 docker-compose: version 1.29.2
 Node.js: v18.20.2
 npm: 10.5.0
 nvm: 0.35.3

ヘルプ、回答、よろしくお願いします。

パスワードリマインダーから自動的にセットされた時、ログインがそのままでは出来ない

不具合概要

パスワードリマインダーから自動的にパスワードが入ると、現在のフォームのバリデーション周りの関係で、そのままログインを押すことが出来ない。

該当ページ

ログイン画面

発生環境

  • 環境:Mac、開発環境(Docker)
  • ブラウザ:Chrome最新版
  • バージョン:

再現手順

  1. パスワードを記録させる
  2. パスワードが自動で入力されたログイン画面を開く
  3. そのまま「ログインボタンを押す」

本来の挙動

自動で入った場合は、そのままログイン処理に回したい

修正しないとどう困るか

毎回、フォームを一回クリックするとかしないといけなくなる。

原因

修正案

スケジュールの一覧をCSVで出力したい

概要

CSVファイルで特定の期間の予定を出力したい

該当ページ

管理画面(?)

背景と目的

データの結果を検証したりするために、CSVにて活動の履歴を出せると便利

最終的なゴール

管理画面にメニューを追加し、特定の期間の全予定をCSV出力できるようする

仕様

検索(日〜日)で期間を絞れるようにする
CSV出力ボタンを用意する
CSVファイルがDLされ、UTF-8(with bom)でDLされる

「このリクエストは、サーバ側で処理できませんでした。」 と表示され動作しない

不具合概要

 CentOS や Ubuntu などの Linux 環境で README.md の手順通りに環境を構築すると npm + Docker での動作でログイン画面から「このリクエストは、サーバ側で処理できませんでした。」 と表示され動作しない

該当ページ

発生環境

  • 環境:Ubuntu 18.04.3
  • ブラウザ:FireFox 74
  • バージョン:2020.03.23 git 

再現手順

 1.README.md の手順通りに環境構築
 2.php.ini に extension_dir 追加、PHP_fileinfo.DLL の行削除
 3.npm のVersion更新 6.13.7 、node 13.11.0

本来の挙動

 ログインできる

修正しないとどう困るか

 ログインできない

原因

 不明

修正案

 不明

深夜帯などをグレーアウトする設定がほしい

概要

一般的な業務時間がわかるように、深夜帯をグレーアウトするようにしたい。

該当ページ

月次以外のカレンダー

背景と目的

24時間表示になっていて、フォーカスする時間幅が広い
→ グレーアウトによって、見る範囲を狭めたい

最終的なゴール

仕様

Full Calendarの機能にあるかどうかを確認し、可能そうであれば管理画面から指定する機能を作り、必要に応じて個人で変えられる機能も実装したい。

ローディングにおいてスクロールが表示される

不具合概要

ローディングにおいてスクロールが表示される

該当ページ

ページを切り替える画面においてすべて

発生環境

  • 環境:Windows10
  • ブラウザ:chrome
  • バージョン:最新

再現手順

  1. ログイン
  2. ログイン後の画面でローディングが表示されるときにスクロールが表示される

本来の挙動

スクロールを出さない

修正しないとどう困るか

見た目の問題

原因

ローディングのコンポーネントにスクロールが表示されるようになっている

修正案

ローディングのコンポーネントにスクロール表示させないように修正する

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.