Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
989b2ad
chore: add comprehensive environment variables for notification system
clintjeff2 Jul 26, 2025
b124ea4
chore: configure development environment with notification service se…
clintjeff2 Jul 26, 2025
90b6320
chore: configure production environment with notification service set…
clintjeff2 Jul 26, 2025
5515c9c
feat: implement comprehensive notification service with multi-channel…
clintjeff2 Jul 26, 2025
540e3a0
feat: add Redis-based queue service for notification processing
clintjeff2 Jul 26, 2025
b88c97c
feat: implement SendGrid email service with fallback logging
clintjeff2 Jul 26, 2025
b28a465
feat: implement Twilio SMS service with fallback logging
clintjeff2 Jul 26, 2025
051f50c
feat: implement Firebase push notification service
clintjeff2 Jul 26, 2025
14921b0
feat: add cron service for automated notification maintenance
clintjeff2 Jul 26, 2025
30e5511
feat: implement notification controller with all required endpoints
clintjeff2 Jul 26, 2025
fcf0ba9
feat: add notification routes with authentication and admin protection
clintjeff2 Jul 26, 2025
c3abbdf
feat: implement role-based access control middleware for admin endpoints
clintjeff2 Jul 26, 2025
85443bc
feat: create comprehensive notification data models
clintjeff2 Jul 26, 2025
13f62c5
feat: define TypeScript types and interfaces for notification system
clintjeff2 Jul 26, 2025
c41bf39
test: add basic notification system tests
clintjeff2 Jul 26, 2025
3ff9445
test: implement comprehensive test suite with 100% coverage for notif…
clintjeff2 Jul 26, 2025
57e21f8
feat: create notification system setup and initialization script
clintjeff2 Jul 26, 2025
39d9863
docs: add comprehensive notification system documentation
clintjeff2 Jul 26, 2025
67c9174
feat: integrate notification routes into main application
clintjeff2 Jul 26, 2025
8d9802f
chore: add notification system dependencies and scripts
clintjeff2 Jul 26, 2025
78066ee
chore: update package lock file for notification dependencies
clintjeff2 Jul 26, 2025
64abbb9
chore: update configuration for notification system integration
clintjeff2 Jul 26, 2025
d7bfeae
test: implement notification system core functionality tests
clintjeff2 Jul 26, 2025
ccd57a6
test: update test coverage data for notification system
clintjeff2 Jul 26, 2025
35d4657
test: update coverage report index with notification system results
clintjeff2 Jul 26, 2025
f1b0521
docs: add comprehensive pull request documentation for notification s…
clintjeff2 Jul 26, 2025
50fb5fa
chore: add improved git commit script for notification system files
clintjeff2 Jul 26, 2025
8e9ab7c
chore: add original git commit automation script
clintjeff2 Jul 26, 2025
3b90ca8
test: add comprehensive notification system validation tests
clintjeff2 Jul 26, 2025
edc5d24
test: implement 20-test suite with 100% pass rate for notification sy…
clintjeff2 Jul 26, 2025
32dc572
test: add working notification system integration tests
clintjeff2 Jul 26, 2025
c93e46b
test: add test coverage report for config module
clintjeff2 Jul 26, 2025
41f03a1
test: add test coverage report for controller module
clintjeff2 Jul 26, 2025
714bb63
test: add test coverage report for guard module
clintjeff2 Jul 26, 2025
9695a32
test: add test coverage report for middleware module
clintjeff2 Jul 26, 2025
d35843f
test: add test coverage report for model module
clintjeff2 Jul 26, 2025
6b42969
test: add test coverage report for router module
clintjeff2 Jul 26, 2025
7acc6d8
test: add test coverage report for services module
clintjeff2 Jul 26, 2025
ca0fb52
test: add test coverage report for types module
clintjeff2 Jul 26, 2025
c283677
test: add test coverage report for utils module
clintjeff2 Jul 26, 2025
a9c2abf
removed automated bash scripts I created for fast git tracking
clintjeff2 Jul 26, 2025
bf4d74d
removed automated bash scripts I created for fast git tracking
clintjeff2 Jul 26, 2025
97c304d
Deleted unnecessary file
clintjeff2 Jul 26, 2025
38d3d9c
removed bad test scripts
clintjeff2 Jul 26, 2025
0414918
Removed bad test script
clintjeff2 Jul 26, 2025
1822cfb
Fix final bug in test script for complete notification system
clintjeff2 Jul 26, 2025
e013fb3
fix: adjust coverage thresholds and add Jest exit configuration
clintjeff2 Jul 28, 2025
63123cc
fix: prevent timer initialization in test environment
clintjeff2 Jul 28, 2025
70b04e6
fix: add test environment guard for cleanup timer
clintjeff2 Jul 28, 2025
21faad2
fix: prevent queue service auto-initialization in tests
clintjeff2 Jul 28, 2025
5ccb2c1
fix: improve test stability with graceful import error handling
clintjeff2 Jul 28, 2025
0df3056
fix: remove trailing whitespace in user model
clintjeff2 Jul 28, 2025
c90bd49
fix: remove trailing whitespace in notification model
clintjeff2 Jul 28, 2025
2eb2bfc
Merge branch 'main' of https://github.com/clintjeff2/chainremit_backe…
clintjeff2 Jul 30, 2025
f15204a
fix: correct cleanup timer to use proper class properties
clintjeff2 Jul 30, 2025
b350f6b
fix: resolved conflicts
clintjeff2 Aug 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 50 additions & 4 deletions .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,53 @@ PORT=3000
NODE_ENV=development
LOG_LEVEL=debug

POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
DATABASE_URL=
# Database Configuration
POSTGRES_USER=chainremit_dev
POSTGRES_PASSWORD=dev_password_123
POSTGRES_DB=chainremit_dev
DATABASE_URL=postgresql://chainremit_dev:dev_password_123@localhost:5432/chainremit_dev

# JWT Configuration
JWT_SECRET=dev-jwt-secret-key-not-for-production-use
JWT_EXPIRES_IN=7d
JWT_REFRESH_SECRET=dev-refresh-jwt-secret-key-not-for-production-use
JWT_REFRESH_EXPIRES_IN=30d

# Redis Configuration (for notifications queue)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=1

# Email Configuration (SendGrid) - Test mode
SENDGRID_API_KEY=SG.test_key_for_development_only
SENDGRID_FROM_EMAIL=dev@chainremit.local
SENDGRID_FROM_NAME=ChainRemit Dev

# SMS Configuration (Twilio) - Test mode
TWILIO_ACCOUNT_SID=ACtest1234567890123456789012345678
TWILIO_AUTH_TOKEN=test_auth_token_for_development
TWILIO_PHONE_NUMBER=+15551234567

# Push Notification Configuration (Firebase) - Test mode
FIREBASE_PROJECT_ID=chainremit-dev
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\ntest_private_key_for_development\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL=firebase-adminsdk-test@chainremit-dev.iam.gserviceaccount.com
FIREBASE_DATABASE_URL=https://chainremit-dev-default-rtdb.firebaseio.com

# Rate Limiting - More lenient for development
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX_REQUESTS=1000

# CORS Configuration - Allow all for development
CORS_ORIGIN=*

# Admin Configuration
ADMIN_EMAIL_DOMAINS=chainremit.local,dev.chainremit.com
SUPER_ADMIN_USER_IDS=dev-admin-1,dev-admin-2

# Notification System Configuration - Development settings
NOTIFICATION_RETRY_ATTEMPTS=2
NOTIFICATION_RETRY_DELAY=3000
NOTIFICATION_BATCH_SIZE=10
NOTIFICATION_RATE_LIMIT=50
49 changes: 48 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,54 @@
PORT=3000
NODE_ENV=development
LOG_LEVEL=info

# Database Configuration
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_DB=your_database
DATABASE_URL=postgresql://your_username:your_password@localhost:5432/your_database
DATABASE_URL=postgresql://your_username:your_password@localhost:5432/your_database

# JWT Configuration
JWT_SECRET=your-super-secret-jwt-key-here-change-in-production
JWT_EXPIRES_IN=7d
JWT_REFRESH_SECRET=your-super-secret-refresh-jwt-key-here-change-in-production
JWT_REFRESH_EXPIRES_IN=30d

# Redis Configuration (for notifications queue)
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# Email Configuration (SendGrid)
SENDGRID_API_KEY=SG.your_sendgrid_api_key_here
SENDGRID_FROM_EMAIL=noreply@chainremit.com
SENDGRID_FROM_NAME=ChainRemit

# SMS Configuration (Twilio)
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_twilio_auth_token_here
TWILIO_PHONE_NUMBER=+1234567890

# Push Notification Configuration (Firebase)
FIREBASE_PROJECT_ID=your-firebase-project-id
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nyour_firebase_private_key_here\n-----END PRIVATE KEY-----\n"
FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xxxxx@your-project.iam.gserviceaccount.com
FIREBASE_DATABASE_URL=https://your-project-default-rtdb.firebaseio.com

# Rate Limiting
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100

# CORS Configuration
CORS_ORIGIN=http://localhost:3000,http://localhost:3001

# Admin Configuration
ADMIN_EMAIL_DOMAINS=chainremit.com,admin.chainremit.com
SUPER_ADMIN_USER_IDS=admin-user-1,admin-user-2

# Notification System Configuration
NOTIFICATION_RETRY_ATTEMPTS=3
NOTIFICATION_RETRY_DELAY=5000
NOTIFICATION_BATCH_SIZE=50
NOTIFICATION_RATE_LIMIT=100
56 changes: 52 additions & 4 deletions .env.production
Original file line number Diff line number Diff line change
@@ -1,7 +1,55 @@
# Production Environment Variables
PORT=80
NODE_ENV=production
LOG_LEVEL=info
POSTGRES_USER=prod_username
POSTGRES_PASSWORD=prod_password
POSTGRES_DB=prod_database
LOG_LEVEL=warn

# Database Configuration
POSTGRES_USER=chainremit_prod
POSTGRES_PASSWORD=CHANGE_THIS_SECURE_PASSWORD_IN_PRODUCTION
POSTGRES_DB=chainremit_production
DATABASE_URL=postgresql://chainremit_prod:CHANGE_THIS_SECURE_PASSWORD_IN_PRODUCTION@prod-db-host:5432/chainremit_production

# JWT Configuration
JWT_SECRET=CHANGE_THIS_SUPER_SECURE_JWT_SECRET_IN_PRODUCTION
JWT_EXPIRES_IN=7d
JWT_REFRESH_SECRET=CHANGE_THIS_SUPER_SECURE_REFRESH_JWT_SECRET_IN_PRODUCTION
JWT_REFRESH_EXPIRES_IN=30d

# Redis Configuration (for notifications queue)
REDIS_HOST=prod-redis-host
REDIS_PORT=6379
REDIS_PASSWORD=CHANGE_THIS_REDIS_PASSWORD_IN_PRODUCTION
REDIS_DB=0

# Email Configuration (SendGrid) - Production
SENDGRID_API_KEY=SG.CHANGE_THIS_TO_YOUR_PRODUCTION_SENDGRID_KEY
SENDGRID_FROM_EMAIL=noreply@chainremit.com
SENDGRID_FROM_NAME=ChainRemit

# SMS Configuration (Twilio) - Production
TWILIO_ACCOUNT_SID=CHANGE_THIS_TO_YOUR_PRODUCTION_TWILIO_SID
TWILIO_AUTH_TOKEN=CHANGE_THIS_TO_YOUR_PRODUCTION_TWILIO_TOKEN
TWILIO_PHONE_NUMBER=CHANGE_THIS_TO_YOUR_PRODUCTION_PHONE_NUMBER

# Push Notification Configuration (Firebase) - Production
FIREBASE_PROJECT_ID=chainremit-production
FIREBASE_PRIVATE_KEY="CHANGE_THIS_TO_YOUR_PRODUCTION_FIREBASE_PRIVATE_KEY"
FIREBASE_CLIENT_EMAIL=CHANGE_THIS_TO_YOUR_PRODUCTION_FIREBASE_CLIENT_EMAIL
FIREBASE_DATABASE_URL=https://chainremit-production-default-rtdb.firebaseio.com

# Rate Limiting - Production settings
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100

# CORS Configuration - Specific origins for production
CORS_ORIGIN=https://chainremit.com,https://app.chainremit.com

# Admin Configuration
ADMIN_EMAIL_DOMAINS=chainremit.com
SUPER_ADMIN_USER_IDS=CHANGE_THIS_TO_PRODUCTION_ADMIN_USER_IDS

# Notification System Configuration - Production settings
NOTIFICATION_RETRY_ATTEMPTS=3
NOTIFICATION_RETRY_DELAY=5000
NOTIFICATION_BATCH_SIZE=50
NOTIFICATION_RATE_LIMIT=100
Loading