Inspired by kurisyushien.org
このプロジェクトは、risyuを参考に作成された、金沢大学の学生向けの履修支援ツールです。履修登録期間における抽選科目の登録状況の可視化と、シラバス情報の検索・閲覧機能を提供します。
rishu-appは、金沢大学の学生が履修登録をより効率的に行えるよう支援するWebアプリケーションです。
- 抽選科目の登録状況可視化: 履修登録期間中の抽選科目の申込状況をグラフで表示
- シラバス情報の提供: 金沢大学のシラバスデータを検索・閲覧可能な形で提供
このプロジェクトへの参加を歓迎します!
- 🌱 初めての方: 初心者向け貢献ガイド - GitHubの使い方から丁寧に解説
- 📖 経験者の方: 貢献ガイドライン - 開発ワークフローやコーディング規約
開発に参加したい方は、Twitterの@ToYamaSoujinまたは、toyamasoujinn@gmail.comまでお気軽にご連絡ください。
- 不具合報告: Issuesで不具合を報告
- 機能提案: 新機能のアイデアをIssuesで提案
- 改善提案: コードの改善や新機能の追加
- 文書改善: READMEやドキュメントの改善
詳しい参加ガイドラインはCONTRIBUTING.mdをご覧ください。
質問や相談は以下の方法でお気軽にどうぞ:
- GitHub Issues: 技術的な質問や不具合報告
- X (Twitter): @ToYamaSoujin
- Email: toyamasoujinn@gmail.com
このプロジェクトでは、Dev Containerを使用して一貫した開発環境を提供しています。各サービスごとに独立したDev Container環境が用意されています。
-
リポジトリのクローン
git clone https://github.com/ToYama170402/rishu-app.git cd rishu-app -
環境変数の設定
sample.envを参考に.envファイルを作成し、必要な環境変数を設定してください。 -
Dev Containerで開く
- VS Codeでクローンしたディレクトリを開く
- コマンドパレット(
Ctrl+Shift+P/Cmd+Shift+P)を開く Dev Containers: Reopen in Containerを選択- 開発したいサービスを選択(frontend、legacy-frontend、legacy-syllabus-frontend、syllabus-backend、syllabus-scrapeなど)
開発環境ではdocker-compose.ymlをdocker-compose.dev.ymlで上書きして使用します。各サービスのDev Containerで開発サーバーを起動して開発を進めてください。
開発環境のポート割り当て:
frontend(新実装): http://localhost:3000legacy-frontend(旧実装): http://localhost:3001legacy-syllabus-frontend(旧実装): http://localhost:4000syllabus-backend: http://localhost:8080
詳細な開発ガイドラインについては、CONTRIBUTING.mdを参照してください。
このプロジェクトは以下のサービスで構成されています:
抽選科目の登録状況を可視化するフロントエンドサービス(新実装)
- 技術スタック: Next.js, React, TypeScript, Tailwind CSS, shadcn/ui, pnpm
- 役割: risyu APIから取得したデータをグラフ形式で表示
抽選科目の登録状況を可視化するフロントエンドサービス(旧実装・開発環境のみ)
- 技術スタック: Next.js, React, TypeScript, MUI
- 役割: risyu APIから取得したデータをグラフ形式で表示(移行完了後に削除予定)
シラバス情報を表示するフロントエンドサービス(旧実装・開発環境のみ)
- 技術スタック: SolidJS, TypeScript, Tailwind CSS
- 役割: シラバスデータの検索と閲覧インターフェースを提供(移行完了後に削除予定)
シラバスデータを提供するバックエンドAPI
- 技術スタック: Go, Gin, GORM, PostgreSQL
- 役割: シラバスデータベースへのアクセスを提供するRESTful API
シラバス情報を収集するスクレイピングサービス
- 技術スタック: TypeScript, Puppeteer, Cheerio
- 役割: 金沢大学のシラバスサイトから定期的にデータを取得してデータベースに保存
シラバスデータを格納するデータベース
- 技術スタック: PostgreSQL
- 役割: スクレイピングしたシラバス情報の永続化
- Next.js - Reactベースのフロントエンドフレームワーク
- SolidJS - 高性能なUIフレームワーク
- TypeScript - 型安全な開発言語
- MUI - Reactコンポーネントライブラリ
- Tailwind CSS - ユーティリティファーストCSSフレームワーク
- PostgreSQL - リレーショナルデータベース
- Docker - コンテナ化プラットフォーム
- Docker Compose - マルチコンテナアプリケーション管理
- Dev Container - 一貫した開発環境の構築
- Nginx - リバースプロキシ
- risyu API - 抽選科目の登録状況データ取得
このプロジェクトは複数のサービスで構成されており、各サービスがDockerコンテナとして動作し、Docker Composeで統合管理されています。
architecture-beta
group api(cloud)[API]
group frontend(cloud)[Frontend]
service db(database)[Database] in api
service backend(server)[Backend] in api
service scraper(server)[Scraper] in api
db:L -- R:backend
backend:B -- T:scraper
service rishuapp(server)[rishu app] in frontend
service rishu(server)[rishu builder viewer] in frontend
junction frontendjunction
frontendjunction:T -- B:rishuapp
frontendjunction:B -- T:rishu
service endpoint(server)[EndPoint]
service gateway(internet)[Gateway]
gateway:B -- T:endpoint
endpoint:B -- T:backend
endpoint:L -- R:frontendjunction
service syllabus(server)[Syllabus]
scraper:L -- R:syllabus
- フロントエンド層:
frontend(新実装)が本番環境で動作。legacy-frontendとlegacy-syllabus-frontendは開発環境でのみ利用可能 - バックエンド層:
syllabus-backendがRESTful APIを提供 - データ層:
syllabus-db(PostgreSQL)がデータを永続化 - データ収集層:
syllabus-scrapeが定期的にシラバス情報を更新 - リバースプロキシ:
nginxが各サービスへのルーティングを管理
- Ogawa3427
- kurisyushien.orgのサブドメインを提供していただきました。
MIT License