垂直配列タイピング練習アプリ
Typnixは、Cornixなどの分割型・カラムスタッガード配列キーボードのタイピング練習を支援するWebアプリケーションです。
- カスタムキーマップ登録: 自分専用のキーマップを登録して練習できます
- レイヤー対応: 最大6レイヤー(Layer 0-5)に対応
- リアルタイムガイド: 次に押すべきキーと指をリアルタイムでハイライト表示
- 多彩なレッスン: 10カテゴリ・20+レッスンから選択可能
- Google認証: 安全なGoogle Identity Servicesを使用
- ダークモード: Light/Dark/Systemの3つのテーマから選択可能
- Ruby 3.4.4
- Rails 8.1.1
- PostgreSQL
- Google Identity Services (google-id-token gem)
- Slim テンプレートエンジン
- Tailwind CSS v4
- Hotwire (Turbo + Stimulus)
- Kamal (デプロイツール)
- Docker
- さくらVPS
- Ruby 3.4.4
- PostgreSQL
- Node.js (Tailwind CSSビルド用)
# 依存関係のインストール
bundle install
# データベースのセットアップ
rails db:create
rails db:migrate
# 開発サーバーの起動
bin/devブラウザで http://localhost:3000 にアクセス。
- Google Cloud Console でプロジェクトを作成
- OAuth 2.0クライアントIDを作成(Webアプリケーション)
- 認証情報を暗号化ファイルに保存:
rails credentials:edit以下の内容を追加:
google:
client_id: YOUR_CLIENT_ID
client_secret: YOUR_CLIENT_SECRET- 開発環境では環境変数
ALLOWED_EMAILSを設定(任意):
export ALLOWED_EMAILS="your-email@example.com"本番環境へのデプロイ方法については、デプロイガイドを参照してください。
# 推奨: 自動テスト付きデプロイ
./bin/deploy
# 緊急時: テストスキップ
kamal deploy詳細は docs/DEPLOY_GUIDE.md を確認してください。
開発に関する詳細な仕様やルールは、CLAUDE.mdを参照してください。
- ブランチ運用: 必ずブランチを切って作業(mainへの直接コミット禁止)
- コミット: 意味のある単位で分割、日本語でメッセージを記述
- プッシュ前チェック: RuboCopとBrakemanを実行
# コード品質チェック
bundle exec rubocop
# セキュリティチェック
bundle exec brakeman --no-pagerflexitype/
├── app/
│ ├── controllers/ # コントローラー
│ ├── models/ # モデル
│ ├── views/ # Slimテンプレート
│ └── javascript/ # Stimulusコントローラー
├── config/
│ ├── deploy.yml # Kamalデプロイ設定
│ ├── database.yml # DB設定
│ └── typing_words.yml # タイピング練習用単語データ
├── docs/
│ ├── DEPLOY_GUIDE.md # デプロイガイド
│ └── daily_reports/ # 日報
└── scripts/
├── pre_deploy_check.sh # デプロイ前チェック
└── vps_setup.sh # VPS初期セットアップ
このプロジェクトは、Ruby/Railsの学習と実践を目的として開発されています。プライベートリポジトリとして管理され、許可されたメンバーのみがアクセス可能です。
開発に参加する場合は、以下のガイドラインに従ってください:
- CLAUDE.mdの開発ルールを遵守
- ブランチ運用ルールに従った開発フロー
- プッシュ前のRuboCop・Brakemanチェック必須
バグ報告や機能要望は、GitHubのIssueまたはプロジェクトメンバーへの直接連絡でお願いします。