Skip to content

flll/receipt-system

Repository files navigation

ePOS領収書印刷システム

概要

このシステムは、EPSONのePOSプリンターを使用して領収書を印刷し、その内容をGoogle Cloud Storageに保存するウェブアプリケーションです。

主な機能:

  • Google認証によるセキュアなログイン
  • 許可されたメールアドレスのみアクセス可能
  • 領収書の印刷と保存
  • 印刷された領収書のオンライン確認機能
  • QRコードによる領収書の共有

システム要件

  • Node.js 22.11.0以上
  • EPSONのePOS対応プリンター
  • Google Cloud Platform アカウント
  • Firebase プロジェクト

インストール

大まかな流れ:

  1. firebaseを作成
  2. firebaseでAuthenticatorを有効化
  3. firebaseのサービスアカウントのメールアドレスが発行されるため、 そのメールアドレスを使ってStorage Cloudバケットに読書権限を付与する。
  4. config.jsonを頑張って書き込む
  5. Access-Control-Allow-Originや、CORSを任意で書き換える
  6. Google Cloud Secret-Managerにconfig.jsonを添付する。
  7. Cloud Runにビルドしたdockerコンテナを積載し、/app/configにシークレットをマウントさせる。
  8. デプロイ

詳細な手順:

  1. 設定ファイルの準備:

    • config/config.json.tempconfig/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"]
      }
  2. Firebase認証の設定:

    • Firebaseコンソールでサービスアカウントキーを取得
    • config/firebase-service-account-key.jsonとして保存
    • cloud run の場合はjsonは不要。サービスアカウントの指定を行うこと。

使用方法

  1. サーバーの起動:
npm start
  1. ブラウザでアクセス:

    • 開発環境: http://localhost:8080
    • 本番環境: 設定したドメイン
  2. 操作手順:

    • Googleアカウントでログイン
    • 金額を入力(0-20,000円)
    • 「印刷」ボタンをクリック

ストレージセキュリティ

  • Google Cloud Storageのバケットアクセス権限の確認
  • 保存データの暗号化状態の確認
  • 古いデータの自動削除ポリシーの確認

推奨される定期的なセキュリティチェック項目

  1. 依存パッケージの脆弱性スキャン
npm run security-full
  1. コードの静的解析
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)

トラブルシューティング

  1. プリンター接続エラー:

    • プリンターのIPアドレスを確認
    • ネットワーク接続を確認
    • ファイアウォール設定を確認
  2. 認証エラー:

    • Firebaseの設定を確認
    • 許可メールアドレスリストを確認

About

金額を入力して領収証(レシート)を発行、印刷、保存を行うモノ。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published