このシステムは、EPSONのePOSプリンターを使用して領収書を印刷し、その内容をGoogle Cloud Storageに保存するウェブアプリケーションです。
主な機能:
- Google認証によるセキュアなログイン
- 許可されたメールアドレスのみアクセス可能
- 領収書の印刷と保存
- 印刷された領収書のオンライン確認機能
- QRコードによる領収書の共有
- Node.js 22.11.0以上
- EPSONのePOS対応プリンター
- Google Cloud Platform アカウント
- Firebase プロジェクト
- firebaseを作成
- firebaseでAuthenticatorを有効化
- firebaseのサービスアカウントのメールアドレスが発行されるため、 そのメールアドレスを使ってStorage Cloudバケットに読書権限を付与する。
- config.jsonを頑張って書き込む
- Access-Control-Allow-Originや、CORSを任意で書き換える
- Google Cloud Secret-Managerにconfig.jsonを添付する。
- Cloud Runにビルドしたdockerコンテナを積載し、/app/configにシークレットをマウントさせる。
- デプロイ
-
設定ファイルの準備:
config/config.json.temp
をconfig/config.json
にコピー- 必要な設定を行う:
{ "protocol": "https", "printerIP": "xxx.xxx.xxx.xxx", "devid": "local_printer", "phone": "xxx-xxxx-xxxx", "address": "東京都...", "issuerName": "株式会社...", "bucketName": "your-bucket-name", "firebaseApiKey": "your-api-key", "firebaseAuthDomain": "your-project-id.firebaseapp.com", "firebaseProjectId": "your-project-id", "allowedEmails": ["example@domain.com"] }
-
Firebase認証の設定:
- Firebaseコンソールでサービスアカウントキーを取得
config/firebase-service-account-key.json
として保存- cloud run の場合はjsonは不要。サービスアカウントの指定を行うこと。
- サーバーの起動:
npm start
-
ブラウザでアクセス:
- 開発環境:
http://localhost:8080
- 本番環境: 設定したドメイン
- 開発環境:
-
操作手順:
- Googleアカウントでログイン
- 金額を入力(0-20,000円)
- 「印刷」ボタンをクリック
- Google Cloud Storageのバケットアクセス権限の確認
- 保存データの暗号化状態の確認
- 古いデータの自動削除ポリシーの確認
- 依存パッケージの脆弱性スキャン
npm run security-full
- コードの静的解析
npm install -g eslint
eslint .
- HTML/CSS/JavaScript
- Firebase Authentication SDK
- Express.js
- Firebase Admin SDK
- Google Cloud Storage
- EPSONのePOS SDK
- Google Cloud Storage(領収書データ)
- Firebaseセッション管理
PORT
: サーバーポート(デフォルト: 8080)
-
プリンター接続エラー:
- プリンターのIPアドレスを確認
- ネットワーク接続を確認
- ファイアウォール設定を確認
-
認証エラー:
- Firebaseの設定を確認
- 許可メールアドレスリストを確認