From ca9341111e8900c26171ab2aae5234765786aae0 Mon Sep 17 00:00:00 2001 From: Edwin Eames Date: Wed, 28 Jan 2026 21:55:01 -0500 Subject: [PATCH] major claude changes --- .env.example | 40 +++++++++++++++++++++++++++++ .gitignore | 7 ++++++ docker-compose.dev.yml | 23 +++++++++++++++++ docker-compose.local.yml | 44 ++++++++++++++++++++++++++------ docker-compose.prod.yml | 54 ++++++++++++++++++++++++++++++---------- requirements.txt | 44 ++++++++++++++++++-------------- 6 files changed, 174 insertions(+), 38 deletions(-) create mode 100644 .env.example create mode 100644 .gitignore diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..d11a331 --- /dev/null +++ b/.env.example @@ -0,0 +1,40 @@ +# EAMCO Environment Variables +# Copy this file to .env and fill in actual values +# NEVER commit .env to version control + +# =========================================== +# Database Credentials (All Services) +# =========================================== +POSTGRES_USERNAME=postgres +POSTGRES_PW=your_password_here +POSTGRES_SERVER=192.168.1.204 +POSTGRES_PORT=5432 +POSTGRES_DBNAME=auburnoil + +# =========================================== +# Flask Secret Key (eamco_office_api) +# =========================================== +# Generate with: python -c "import secrets; print(secrets.token_hex(32))" +SECRET_KEY=your_secret_key_here + +# =========================================== +# Authorize.net API Credentials +# =========================================== +# Production credentials (used by LOCAL and PRODUCTION modes) +AUTHORIZE_API_LOGIN_ID=your_api_login_id_here +AUTHORIZE_TRANSACTION_KEY=your_transaction_key_here + +# Development/Sandbox credentials (used by DEVELOPMENT mode) +AUTHORIZE_API_LOGIN_ID_DEV=your_sandbox_api_login_id_here +AUTHORIZE_TRANSACTION_KEY_DEV=your_sandbox_transaction_key_here + +# =========================================== +# VoIP.ms Credentials (eamco_voipms) +# =========================================== +VOIPMS_API_USERNAME=your_voipms_username +VOIPMS_API_PASSWORD=your_voipms_password +TARGET_DID=your_did_number +TARGET_SIP_ACCOUNT=your_sip_account +TARGET_CELLPHONE_1=your_cellphone_1 +TARGET_CELLPHONE_2=your_cellphone_2 +VOIPMS_API_URL=https://voip.ms/api/v1/rest.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..31063d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Environment files with secrets +.env +.env.local +.env.production + +# Keep the example template +!.env.example diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 150cf7b..e183810 100755 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -76,6 +76,14 @@ services: - ../eamco_authorize:/app ports: - '9516:8000' + environment: + - MODE=DEVELOPMENT + - AUTHORIZE_API_LOGIN_ID_DEV=${AUTHORIZE_API_LOGIN_ID_DEV} + - AUTHORIZE_TRANSACTION_KEY_DEV=${AUTHORIZE_TRANSACTION_KEY_DEV} + - POSTGRES_USERNAME=postgres + - POSTGRES_PW=postgres + - POSTGRES_SERVER=postgres_dev + - POSTGRES_DBNAME=eamco command: 'uvicorn app.main:app --reload --host 0.0.0.0 --port 8000' @@ -103,3 +111,18 @@ services: ports: - '9618:8000' command: 'uvicorn app.main:app --reload --host 0.0.0.0 --port 8000' + + postgres_dev: + image: postgres:13 + restart: always + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: eamco + ports: + - '5432:5432' + volumes: + - postgres_data:/var/lib/postgresql/data + +volumes: + postgres_data: diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 36c4e06..b111b4c 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -10,7 +10,6 @@ services: ports: - '9611:80' - backend_office_local: restart: always build: @@ -18,8 +17,13 @@ services: dockerfile: Dockerfile.local ports: - '9610:80' - - + environment: + - MODE=LOCAL + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + - SECRET_KEY=${SECRET_KEY} money_service_local: restart: on-failure @@ -28,11 +32,14 @@ services: dockerfile: Dockerfile.local environment: - MODE=LOCAL + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} ports: - '9613:8000' command: 'uvicorn main:app --reload --host 0.0.0.0 --port 8000' - auto_local: restart: on-failure build: @@ -40,9 +47,14 @@ services: dockerfile: Dockerfile.local ports: - '9614:8000' + environment: + - MODE=LOCAL + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} command: 'uvicorn main:app --reload --host 0.0.0.0 --port 8000' - authorize_local: restart: on-failure build: @@ -52,9 +64,16 @@ services: - ../eamco_authorize:/app ports: - '9616:8000' + environment: + - MODE=LOCAL + - AUTHORIZE_API_LOGIN_ID=${AUTHORIZE_API_LOGIN_ID} + - AUTHORIZE_TRANSACTION_KEY=${AUTHORIZE_TRANSACTION_KEY} + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} command: 'uvicorn app.main:app --reload --host 0.0.0.0 --port 8000' - voipms_local: restart: on-failure build: @@ -64,9 +83,20 @@ services: - ../eamco_voipms:/app ports: - '9617:8000' + environment: + - MODE=LOCAL + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + - VOIPMS_API_USERNAME=${VOIPMS_API_USERNAME} + - VOIPMS_API_PASSWORD=${VOIPMS_API_PASSWORD} + - TARGET_DID=${TARGET_DID} + - TARGET_SIP_ACCOUNT=${TARGET_SIP_ACCOUNT} + - TARGET_CELLPHONE_1=${TARGET_CELLPHONE_1} + - TARGET_CELLPHONE_2=${TARGET_CELLPHONE_2} command: 'uvicorn app.main:app --reload --host 0.0.0.0 --port 8000' - address_checker_local: restart: on-failure build: diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 83d158e..4c5046c 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -15,15 +15,15 @@ services: context: ../eamco_office_api dockerfile: Dockerfile.prod ports: - # Expose backend on port 9510 - '9510:80' environment: - MODE=PRODUCTION + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + - SECRET_KEY=${SECRET_KEY} - # Your other services remain the same - # ... - - # Your other services can stay as they are money_service_prod: restart: on-failure build: @@ -31,7 +31,13 @@ services: dockerfile: Dockerfile.prod ports: - '9513:8000' - command: 'uvicorn main:app --reload --host 0.0.0.0 --port 8000' + environment: + - MODE=PRODUCTION + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + command: 'uvicorn main:app --host 0.0.0.0 --port 8000 --workers 2' auto_prod: restart: on-failure @@ -40,9 +46,13 @@ services: dockerfile: Dockerfile.prod ports: - '9514:8000' - command: 'uvicorn main:app --reload --host 0.0.0.0 --port 8000' - - + environment: + - MODE=PRODUCTION + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + command: 'uvicorn main:app --host 0.0.0.0 --port 8000 --workers 2' authorize_prod: restart: on-failure @@ -53,8 +63,15 @@ services: - ../eamco_authorize:/app ports: - '9516:8000' - command: 'uvicorn app.main:app --reload --host 0.0.0.0 --port 8000' - + environment: + - MODE=PRODUCTION + - AUTHORIZE_API_LOGIN_ID=${AUTHORIZE_API_LOGIN_ID} + - AUTHORIZE_TRANSACTION_KEY=${AUTHORIZE_TRANSACTION_KEY} + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + command: 'uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2' voipms_prod: restart: on-failure @@ -65,8 +82,19 @@ services: - ../eamco_voipms:/app ports: - '9517:8000' - command: 'uvicorn app.main:app --reload --host 0.0.0.0 --port 8000' - + environment: + - MODE=PRODUCTION + - POSTGRES_USERNAME=${POSTGRES_USERNAME} + - POSTGRES_PW=${POSTGRES_PW} + - POSTGRES_SERVER=${POSTGRES_SERVER} + - POSTGRES_DBNAME=${POSTGRES_DBNAME} + - VOIPMS_API_USERNAME=${VOIPMS_API_USERNAME} + - VOIPMS_API_PASSWORD=${VOIPMS_API_PASSWORD} + - TARGET_DID=${TARGET_DID} + - TARGET_SIP_ACCOUNT=${TARGET_SIP_ACCOUNT} + - TARGET_CELLPHONE_1=${TARGET_CELLPHONE_1} + - TARGET_CELLPHONE_2=${TARGET_CELLPHONE_2} + command: 'uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 2' address_checker_prod: restart: on-failure diff --git a/requirements.txt b/requirements.txt index 2e76f6f..a763919 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,18 +1,26 @@ -flask -flask_sqlalchemy -flask_session -flask-login -flask-moment -flask-paranoid -flask-bcrypt -flask-cors -flask_marshmallow -gunicorn -python-dateutil -python-dotenv -marshmallow-sqlalchemy -psycopg2-binary -redis -sqlalchemy -flask_wtf -flask_mail +# eamco_deploy dependencies +# Flask web framework +Flask==3.1.0 +Flask-SQLAlchemy==3.1.1 +Flask-Session==0.8.0 +Flask-Login==0.6.3 +Flask-Moment==1.0.6 +Flask-Paranoid==0.3.0 +Flask-Bcrypt==1.0.1 +flask-cors==5.0.1 +flask-marshmallow==1.3.0 +Flask-WTF==1.2.2 +Flask-Mail==0.10.0 + +# Server +gunicorn==23.0.0 + +# Database +SQLAlchemy==2.0.40 +psycopg2-binary==2.9.10 +marshmallow-sqlalchemy==1.4.2 + +# Utilities +python-dateutil==2.9.0.post0 +python-dotenv==1.1.0 +redis==6.0.0