dubs-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +280 -0
- package/CLAUDE.md +46 -0
- package/CONNECT4_PRODUCTION_DEPLOY.md +155 -0
- package/CURRENT_SESSION.md +171 -0
- package/CURRENT_SESSION_DRAW.md +516 -0
- package/MARCH_MADNESS_SURVIVOR.md +254 -0
- package/PANDA.md +166 -0
- package/Procfile +4 -0
- package/README.md +476 -0
- package/controllers/livescoresController.js +376 -0
- package/controllers/pickemController.js +554 -0
- package/controllers/survivorAdminController.js +887 -0
- package/controllers/survivorController.js +623 -0
- package/cron/oracleMonitor.js +77 -0
- package/cron/pickemOracleMonitor.js +73 -0
- package/data/jackpot-history.json +952 -0
- package/data/ncaaTeams.js +406 -0
- package/documentation/API_SECURITY_GUIDE.md +327 -0
- package/documentation/ARCADE_API.md +593 -0
- package/documentation/ARCADE_IMPLEMENTATION_SUMMARY.md +399 -0
- package/documentation/ARCADE_QUICKSTART.md +242 -0
- package/documentation/AUTOMATIC_MODE_ORACLE.md +321 -0
- package/documentation/BUG_FIX_COHORT_DATE_DISPLAY.md +171 -0
- package/documentation/CLAIM_MIGRATION_INSTRUCTIONS.md +52 -0
- package/documentation/CLAIM_STATUS_FIX.md +67 -0
- package/documentation/CLI_TOOL_GUIDE.md +372 -0
- package/documentation/COHORT_RETENTION_ANALYSIS.md +295 -0
- package/documentation/COHORT_RETENTION_IMPLEMENTATION_COMPLETE.md +461 -0
- package/documentation/COHORT_RETENTION_SUMMARY.md +204 -0
- package/documentation/COMPLETE_PROJECT_SUMMARY.md +490 -0
- package/documentation/DATABASE_QUERIES.md +269 -0
- package/documentation/DATABASE_RETENTION_POLICY.md +390 -0
- package/documentation/DATABASE_SETUP_GUIDE.md +361 -0
- package/documentation/DATABASE_SETUP_SUMMARY.md +247 -0
- package/documentation/DEMO_API_CURL_COMMANDS.md +656 -0
- package/documentation/DEPLOYMENT_SUMMARY.txt +100 -0
- package/documentation/DUPLICATE_NOTIFICATIONS_FIXED.md +201 -0
- package/documentation/EXCHANGE_RATES_INTEGRATION.md +371 -0
- package/documentation/FINAL_API_PROTECTION_TABLE.md +175 -0
- package/documentation/GAME_START_NOTIFICATIONS_DEPLOYMENT.md +256 -0
- package/documentation/GAME_START_NOTIFICATIONS_INTEGRATION.md +275 -0
- package/documentation/HEROKU_DEPLOYMENT.md +134 -0
- package/documentation/HEROKU_SCHEDULER_SETUP.md +271 -0
- package/documentation/JACKPOT_API.md +521 -0
- package/documentation/JACKPOT_DEPLOYMENT_GUIDE.md +362 -0
- package/documentation/JWT_IMPLEMENTATION_SUMMARY.md +373 -0
- package/documentation/JWT_QUICK_SETUP.md +268 -0
- package/documentation/JWT_TESTING_GUIDE.md +404 -0
- package/documentation/KEEPER_RECOVERY_GUIDE.md +381 -0
- package/documentation/KEEPER_SETUP.md +206 -0
- package/documentation/KEEPER_STATE_MACHINE.md +423 -0
- package/documentation/LATEST_PRODUCTION_SETUP.md +387 -0
- package/documentation/LOCAL_VOTING_TEST.md +279 -0
- package/documentation/ORACLE_FIXES_SUMMARY.md +188 -0
- package/documentation/ORACLE_POSTGRESQL_UPDATE.md +202 -0
- package/documentation/PAYMENT_DEPLOYMENT.md +209 -0
- package/documentation/PNL_TRACKING_SETUP.md +189 -0
- package/documentation/PREVENTING_LOCKUP_ERRORS.md +472 -0
- package/documentation/PRODUCTION_READY_SUMMARY.md +227 -0
- package/documentation/PUBLIC_VS_PRIVATE_ENDPOINTS.md +278 -0
- package/documentation/QUICK_AUTH_SETUP.md +99 -0
- package/documentation/QUICK_DEPLOY.md +224 -0
- package/documentation/QUICK_FIX.md +114 -0
- package/documentation/QUICK_START.md +152 -0
- package/documentation/REFEREE_MODE_GUIDE.md +392 -0
- package/documentation/RETENTION_CORE_ACTION_UPDATE.md +313 -0
- package/documentation/RETENTION_UPDATE_SUMMARY.md +108 -0
- package/documentation/RUN_MIGRATION_NOW.md +39 -0
- package/documentation/SCRIPTS_UPDATE_SUMMARY.md +251 -0
- package/documentation/SETUP_GUIDE.md +184 -0
- package/documentation/STATE_MACHINE_IMPLEMENTATION.md +250 -0
- package/documentation/TELEGRAM_NOTIFICATIONS_DIAGNOSIS.md +361 -0
- package/documentation/UNIFIED_ARCHITECTURE.md +231 -0
- package/documentation/VOTING_DEPLOYMENT_SUMMARY.md +392 -0
- package/documentation/WEBSOCKET_ARCHITECTURE.md +881 -0
- package/documentation/WHAT_WE_BUILT_TODAY.md +369 -0
- package/documentation/latest/LATEST_PRODUCTION_SETUP.md +865 -0
- package/ecosystem.config.js +65 -0
- package/env.template +125 -0
- package/middleware/apiKeyAuth.js +136 -0
- package/middleware/authenticate.js +214 -0
- package/middleware/developerUserAuth.js +76 -0
- package/middleware/socketAuth.js +69 -0
- package/package.json +49 -0
- package/postman/Dubs-API-v1-With-Voting.postman_collection.json +555 -0
- package/postman/Dubs-API-v1.postman_collection.json +205 -0
- package/postman/Dubs_Developer_API.postman_collection.json +662 -0
- package/postman/QUICKSTART.md +118 -0
- package/postman/QUICK_REFERENCE.md +246 -0
- package/postman/README.md +71 -0
- package/postman/VOTING_API_GUIDE.md +426 -0
- package/refactor/Animations.md +148 -0
- package/refactor/Chat.md +252 -0
- package/routes/actionsRoutes.js +699 -0
- package/routes/adminRoutes.js +370 -0
- package/routes/analyticsRoutes.js +1262 -0
- package/routes/arcadeRoutes.js +557 -0
- package/routes/authRoutes.js +2310 -0
- package/routes/avatarRoutes.js +85 -0
- package/routes/botRoutes.js +211 -0
- package/routes/chatRoutes.js +377 -0
- package/routes/cryptoPriceRoutes.js +105 -0
- package/routes/developerRoutes.js +4201 -0
- package/routes/deviceRoutes.js +214 -0
- package/routes/dmRoutes.js +167 -0
- package/routes/esportsRoutes.js +806 -0
- package/routes/exchangeRateRoutes.js +233 -0
- package/routes/gamesRoutes.js +3028 -0
- package/routes/jackpotRoutes.js +754 -0
- package/routes/keeperMonitoringRoutes.js +156 -0
- package/routes/keeperWebhookRoutes.js +466 -0
- package/routes/livescoresRoutes.js +31 -0
- package/routes/pickemAdminRoutes.js +199 -0
- package/routes/pickemRoutes.js +231 -0
- package/routes/playerStatsRoutes.js +147 -0
- package/routes/portfolioRoutes.js +217 -0
- package/routes/promoRoutes.js +418 -0
- package/routes/referralEarningsRoutes.js +392 -0
- package/routes/socialRoutes.js +459 -0
- package/routes/sportsRoutes.js +1271 -0
- package/routes/survivorAdminRoutes.js +345 -0
- package/routes/survivorRoutes.js +756 -0
- package/routes/uploadRoutes.js +256 -0
- package/routes/userProfileRoutes.js +244 -0
- package/routes/whatsNewRoutes.js +331 -0
- package/scripts/.claude/settings.local.json +15 -0
- package/scripts/README.md +170 -0
- package/scripts/RESTART_EVERYTHING.sh +104 -0
- package/scripts/add-claim-columns.sql +48 -0
- package/scripts/add-crypto-prices-cache.sql +27 -0
- package/scripts/add-exchange-rates-cache.sql +40 -0
- package/scripts/add-game-invite-column.sql +23 -0
- package/scripts/add-game-invite-notification.sql +33 -0
- package/scripts/add-game-invite-telegram-pref.sql +16 -0
- package/scripts/add-game-joined-notification.sql +16 -0
- package/scripts/add-game-joined-pref.js +40 -0
- package/scripts/add-game-joined-preference.sql +6 -0
- package/scripts/add-game-start-notifications.sql +41 -0
- package/scripts/add-notification-flags-to-games.sql +55 -0
- package/scripts/add-pending-game-dismissals.sql +19 -0
- package/scripts/add-preferred-currency.sql +34 -0
- package/scripts/add-winner-columns.js +61 -0
- package/scripts/add_mention_system.sql +53 -0
- package/scripts/add_payment_system.sql +96 -0
- package/scripts/add_sports_event_id_column.sql +22 -0
- package/scripts/analyze-cohort-data-heroku.js +276 -0
- package/scripts/analyze-cohort-data.js +295 -0
- package/scripts/analyze-prod-cohorts.sh +10 -0
- package/scripts/backfill-matchup-images.js +245 -0
- package/scripts/backfill-missing-signatures.js +175 -0
- package/scripts/backfill-referral-earnings.js +202 -0
- package/scripts/check-chat-schema.js +130 -0
- package/scripts/check-db.sh +14 -0
- package/scripts/check_oracle_in_game.js +54 -0
- package/scripts/cleanup-database.js +193 -0
- package/scripts/clear-notification-cache.js +85 -0
- package/scripts/convert-mnemonic.js +50 -0
- package/scripts/create-users-table.sql +44 -0
- package/scripts/debug-cohort-counts.js +248 -0
- package/scripts/debug-winner-calc.js +84 -0
- package/scripts/deploy-payment-system.sh +118 -0
- package/scripts/deploy-to-heroku.sh +63 -0
- package/scripts/diagnose-locked-round.js +143 -0
- package/scripts/dubs-cli.js +720 -0
- package/scripts/dump-account.js +65 -0
- package/scripts/find-vrf-offset.js +48 -0
- package/scripts/fix-chat-notifications-constraint.sql +122 -0
- package/scripts/fix-claim-columns.js +124 -0
- package/scripts/fix-constraint-now.js +44 -0
- package/scripts/fix-lock-timestamps.js +96 -0
- package/scripts/fix-locked-round.sh +126 -0
- package/scripts/fix-missing-badges.sql +91 -0
- package/scripts/fix-payment-notifications.sql +41 -0
- package/scripts/force-new-round.js +55 -0
- package/scripts/force-resolve-and-claim.js +278 -0
- package/scripts/important/README.md +115 -0
- package/scripts/important/authority-force-lock.js +197 -0
- package/scripts/important/authority-resolve-game.js +267 -0
- package/scripts/important/check-game-status.js +373 -0
- package/scripts/important/list-pending-games-by-version.js +270 -0
- package/scripts/important/reconcile-v1-v2-payouts.js +270 -0
- package/scripts/initialize-jackpot.js +111 -0
- package/scripts/jackpot/.claude/settings.local.json +10 -0
- package/scripts/jackpot/force-reset.js +84 -0
- package/scripts/jackpot/initialize-mainnet.js +100 -0
- package/scripts/jackpot/keeper.js +742 -0
- package/scripts/jackpot/status.js +107 -0
- package/scripts/jackpot/update-round-duration.js +143 -0
- package/scripts/keeper-bot.js +112 -0
- package/scripts/list-pending-games.js +131 -0
- package/scripts/migrate-chat-v2.js +127 -0
- package/scripts/migrate-chat-winners.js +84 -0
- package/scripts/migrate-chat.sh +17 -0
- package/scripts/migrate-game-invite.js +83 -0
- package/scripts/migrate-heroku-game-notifications.sh +159 -0
- package/scripts/migrations/001_analytics_tables.sql +422 -0
- package/scripts/migrations/002_add_matchup_image_url.sql +14 -0
- package/scripts/migrations/003_referral_earnings.sql +208 -0
- package/scripts/migrations/004_add_whats_new_notification_type.sql +62 -0
- package/scripts/migrations/005_add_connect4_your_turn_notification.sql +61 -0
- package/scripts/migrations/005_push_notifications.sql +55 -0
- package/scripts/migrations/006_add_draw_team_players.sql +28 -0
- package/scripts/migrations/006_add_game_cancelled_notification.sql +62 -0
- package/scripts/migrations/007_add_gif_url.sql +8 -0
- package/scripts/migrations/008_add_connect4_columns.sql +139 -0
- package/scripts/migrations/008_add_pool_tracking.sql +22 -0
- package/scripts/migrations/009_create_survivor_pool_tables.sql +174 -0
- package/scripts/migrations/010_add_survivor_pool_outcome.sql +28 -0
- package/scripts/migrations/011_create_developer_tables.sql +67 -0
- package/scripts/migrations/011_fix_keeper_tables.sql +85 -0
- package/scripts/migrations/012_create_developer_webhooks.sql +31 -0
- package/scripts/migrations/013_add_network_mode.sql +18 -0
- package/scripts/migrations/014_create_developer_app_users.sql +19 -0
- package/scripts/migrations/015_add_ui_config.sql +4 -0
- package/scripts/migrations/016_add_resolution_secret.sql +4 -0
- package/scripts/migrations/017_add_external_game_id.sql +3 -0
- package/scripts/migrations/018_create_pickem_tables.sql +115 -0
- package/scripts/migrations/019_expo_push_tokens.sql +19 -0
- package/scripts/migrations/create_whats_new_tables.sql +88 -0
- package/scripts/migrations/drop_live_games_tables.sql +34 -0
- package/scripts/open-jackpot-round.js +85 -0
- package/scripts/purge-all-data.sh +329 -0
- package/scripts/purge-all-data.sql +142 -0
- package/scripts/purge-heroku-data.sh +149 -0
- package/scripts/purge-heroku-data.sql +62 -0
- package/scripts/rebuild-heroku-database.sh +113 -0
- package/scripts/recover-funds.js +357 -0
- package/scripts/regenerate-epl-images.js +278 -0
- package/scripts/resize-s3-matchup-images.js +374 -0
- package/scripts/resolve-direct.js +88 -0
- package/scripts/resolve-mock-game.js +124 -0
- package/scripts/resolve-pickem-game.js +55 -0
- package/scripts/resolve-round-manual.js +83 -0
- package/scripts/resolve-stuck-game.js +382 -0
- package/scripts/resolve-stuck-round.js +42 -0
- package/scripts/run-connect4-migration.sh +16 -0
- package/scripts/run-mention-migration.sh +32 -0
- package/scripts/run-payment-migration.sh +51 -0
- package/scripts/run-preferred-currency-migration.sh +31 -0
- package/scripts/run-referral-earnings-migration.sh +32 -0
- package/scripts/run-survivor-outcome-migration.sh +16 -0
- package/scripts/seed-test-users.js +346 -0
- package/scripts/setup-auth-tables.js +78 -0
- package/scripts/setup-complete-database.sql +992 -0
- package/scripts/setup-database-fresh.sh +359 -0
- package/scripts/setup-heroku-keeper.sh +48 -0
- package/scripts/setup-keeper-database.js +83 -0
- package/scripts/setup-keeper-state-db.sql +110 -0
- package/scripts/setup-oracle.sh +39 -0
- package/scripts/setup-pnl-tracking.js +111 -0
- package/scripts/start-devnet.sh +14 -0
- package/scripts/test-arcade-devnet.sh +160 -0
- package/scripts/test-arcade-match.sh +109 -0
- package/scripts/test-automatic-mode.sh +239 -0
- package/scripts/test-connect4-cancel-claim.js +370 -0
- package/scripts/test-connect4-e2e.js +369 -0
- package/scripts/test-connect4-resolve.js +369 -0
- package/scripts/test-game-state-endpoint.js +136 -0
- package/scripts/test-invite-notification.js +86 -0
- package/scripts/test-jackpot-api.sh +71 -0
- package/scripts/test-poll-confirmation.js +267 -0
- package/scripts/test-resolve-game.js +271 -0
- package/scripts/test-resolve-signature.js +223 -0
- package/scripts/test-signature-preservation.js +124 -0
- package/scripts/test-state-machine.js +291 -0
- package/scripts/test-webhook-receiver.js +60 -0
- package/scripts/update-notification-constraint.js +52 -0
- package/scripts/verify-account-layout.js +145 -0
- package/scripts/verify-winner-algorithm.js +278 -0
- package/server.js +5259 -0
- package/services/arcadeMatchService.js +763 -0
- package/services/automaticGameOracle.js +1596 -0
- package/services/chatService.js +1612 -0
- package/services/connect4GameService.js +1049 -0
- package/services/connect4NotificationService.js +374 -0
- package/services/cryptoPriceService.js +223 -0
- package/services/customGameResolver.js +260 -0
- package/services/db.js +79 -0
- package/services/directMessageService.js +389 -0
- package/services/discordNotifications.js +160 -0
- package/services/exchangeRateService.js +289 -0
- package/services/expoPushService.js +314 -0
- package/services/gamesCacheService.js +539 -0
- package/services/jackpotHistory.js +331 -0
- package/services/jackpotService.js +856 -0
- package/services/keeperStateService.js +355 -0
- package/services/matchupImageService.js +591 -0
- package/services/notificationCacheService.js +407 -0
- package/services/pickemOracle.js +440 -0
- package/services/playerStatsService.js +389 -0
- package/services/portfolioService.js +555 -0
- package/services/promoService.js +757 -0
- package/services/promoTreasuryService.js +239 -0
- package/services/pushNotifications.js +353 -0
- package/services/redisService.js +422 -0
- package/services/referralEarningsService.js +728 -0
- package/services/s3Service.js +396 -0
- package/services/socialService.js +1202 -0
- package/services/survivorOracle.js +469 -0
- package/services/survivorSimulator.js +475 -0
- package/services/telegramNotifications.js +461 -0
- package/services/userProfileStatsService.js +1185 -0
- package/services/whatsNewService.js +388 -0
- package/utils/urlHelper.js +95 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# ⚡ Quick Deploy to Heroku
|
|
2
|
+
|
|
3
|
+
## 🚀 Deploy in 3 Commands
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
cd /Users/adamdahan/Developer/iheartsolana/solana-programs/dubs-server
|
|
7
|
+
|
|
8
|
+
# 1. Setup keeper wallet (one-time only)
|
|
9
|
+
./setup-heroku-keeper.sh
|
|
10
|
+
|
|
11
|
+
# 2. Commit and deploy
|
|
12
|
+
git add .
|
|
13
|
+
git commit -m "Fix keeper for Heroku deployment"
|
|
14
|
+
git push heroku-dev main
|
|
15
|
+
|
|
16
|
+
# 3. Scale up keeper
|
|
17
|
+
heroku ps:scale jackpot-keeper=1 -a dubs-server-dev
|
|
18
|
+
|
|
19
|
+
# 4. Watch it work!
|
|
20
|
+
heroku logs --tail --ps jackpot-keeper -a dubs-server-dev
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## ✅ What You Should See
|
|
26
|
+
|
|
27
|
+
### Step 1: Setup Keeper
|
|
28
|
+
```
|
|
29
|
+
🔐 Setting up Jackpot Keeper on Heroku
|
|
30
|
+
======================================
|
|
31
|
+
|
|
32
|
+
✅ Found oracle wallet
|
|
33
|
+
|
|
34
|
+
📤 Setting KEEPER_PRIVATE_KEY on Heroku...
|
|
35
|
+
Setting KEEPER_PRIVATE_KEY and restarting ⬢ dubs-server-dev... done
|
|
36
|
+
|
|
37
|
+
✅ Keeper wallet configured!
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 2: Deploy
|
|
41
|
+
```
|
|
42
|
+
Enumerating objects: 5, done.
|
|
43
|
+
Counting objects: 100% (5/5), done.
|
|
44
|
+
...
|
|
45
|
+
remote: Verifying deploy... done.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 3: Scale Up
|
|
49
|
+
```
|
|
50
|
+
Scaling dynos... done, now running jackpot-keeper at 1:Free
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Step 4: Logs
|
|
54
|
+
```
|
|
55
|
+
📂 Using wallet from KEEPER_PRIVATE_KEY environment variable
|
|
56
|
+
🤖 Complete Jackpot Keeper Bot
|
|
57
|
+
Wallet: FWUJCthDfPcgmTvdQWM5uofxxiYjqJFMMwiLYvS7LBFa
|
|
58
|
+
|
|
59
|
+
🚀 Keeper bot started!
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 🔍 Verify It's Working
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Check process status
|
|
68
|
+
heroku ps -a dubs-server-dev
|
|
69
|
+
|
|
70
|
+
# Should show:
|
|
71
|
+
# jackpot-keeper.1: up 2024/11/16 15:00:00 -0500 (~ 1m ago)
|
|
72
|
+
|
|
73
|
+
# Check the API
|
|
74
|
+
curl https://dubs-server-dev.herokuapp.com/jackpot/round/current | jq .
|
|
75
|
+
|
|
76
|
+
# Should show an active round with countdown
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 🐛 If Something Goes Wrong
|
|
82
|
+
|
|
83
|
+
### Keeper crashes immediately
|
|
84
|
+
|
|
85
|
+
**Check logs:**
|
|
86
|
+
```bash
|
|
87
|
+
heroku logs --tail --ps jackpot-keeper -a dubs-server-dev
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Common issues:**
|
|
91
|
+
|
|
92
|
+
1. **"No wallet found"** → Run `./setup-heroku-keeper.sh` again
|
|
93
|
+
2. **"Invalid private key"** → Check that env var is set correctly
|
|
94
|
+
3. **"No active round"** → Config account needs SOL (see below)
|
|
95
|
+
|
|
96
|
+
### No active round
|
|
97
|
+
|
|
98
|
+
The config account may need funding:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Check balance
|
|
102
|
+
solana account CwNvZq6GuKvsEr3WDyQWhzDaTYccmsRVibdXK85FnwoW --url devnet
|
|
103
|
+
|
|
104
|
+
# If low, fund it
|
|
105
|
+
solana transfer CwNvZq6GuKvsEr3WDyQWhzDaTYccmsRVibdXK85FnwoW 0.5 --url devnet
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Keeper keeps restarting
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Check if env var is set
|
|
112
|
+
heroku config:get KEEPER_PRIVATE_KEY -a dubs-server-dev
|
|
113
|
+
|
|
114
|
+
# If empty or wrong, reset it
|
|
115
|
+
./setup-heroku-keeper.sh
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 📊 Monitor Your Keeper
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Live logs
|
|
124
|
+
heroku logs --tail --ps jackpot-keeper -a dubs-server-dev
|
|
125
|
+
|
|
126
|
+
# Recent logs
|
|
127
|
+
heroku logs --ps jackpot-keeper -a dubs-server-dev
|
|
128
|
+
|
|
129
|
+
# All logs
|
|
130
|
+
heroku logs --tail -a dubs-server-dev
|
|
131
|
+
|
|
132
|
+
# Process status
|
|
133
|
+
heroku ps -a dubs-server-dev
|
|
134
|
+
|
|
135
|
+
# Restart keeper
|
|
136
|
+
heroku ps:restart jackpot-keeper -a dubs-server-dev
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 🎮 Test the System
|
|
142
|
+
|
|
143
|
+
Once deployed:
|
|
144
|
+
|
|
145
|
+
1. Visit: https://dubs-server-dev.herokuapp.com/jackpot/health
|
|
146
|
+
2. Check round: https://dubs-server-dev.herokuapp.com/jackpot/round/current
|
|
147
|
+
3. Should see an active round with countdown
|
|
148
|
+
4. Keeper should automatically manage rounds every ~1 minute
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 💡 Pro Tips
|
|
153
|
+
|
|
154
|
+
### Check Wallet Balance
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Keeper wallet
|
|
158
|
+
solana balance FWUJCthDfPcgmTvdQWM5uofxxiYjqJFMMwiLYvS7LBFa --url devnet
|
|
159
|
+
|
|
160
|
+
# If low, airdrop more (devnet only)
|
|
161
|
+
solana airdrop 2 FWUJCthDfPcgmTvdQWM5uofxxiYjqJFMMwiLYvS7LBFa --url devnet
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### View All Config
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
heroku config -a dubs-server-dev
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Scale Down (to save dyno hours)
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Turn off keeper
|
|
174
|
+
heroku ps:scale jackpot-keeper=0 -a dubs-server-dev
|
|
175
|
+
|
|
176
|
+
# Turn back on
|
|
177
|
+
heroku ps:scale jackpot-keeper=1 -a dubs-server-dev
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 📋 Full Command Reference
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Setup
|
|
186
|
+
./setup-heroku-keeper.sh # Setup wallet (one-time)
|
|
187
|
+
heroku config -a dubs-server-dev # View all config
|
|
188
|
+
|
|
189
|
+
# Deploy
|
|
190
|
+
git add . # Stage changes
|
|
191
|
+
git commit -m "Your message" # Commit
|
|
192
|
+
git push heroku-dev main # Deploy
|
|
193
|
+
|
|
194
|
+
# Manage
|
|
195
|
+
heroku ps -a dubs-server-dev # Process status
|
|
196
|
+
heroku ps:scale jackpot-keeper=1 -a dubs-server-dev # Start keeper
|
|
197
|
+
heroku ps:scale jackpot-keeper=0 -a dubs-server-dev # Stop keeper
|
|
198
|
+
heroku ps:restart jackpot-keeper -a dubs-server-dev # Restart keeper
|
|
199
|
+
|
|
200
|
+
# Monitor
|
|
201
|
+
heroku logs --tail -a dubs-server-dev # All logs
|
|
202
|
+
heroku logs --tail --ps jackpot-keeper -a dubs-server-dev # Keeper only
|
|
203
|
+
curl https://dubs-server-dev.herokuapp.com/jackpot/round/current | jq .
|
|
204
|
+
|
|
205
|
+
# Debug
|
|
206
|
+
heroku run bash -a dubs-server-dev # Open shell on Heroku
|
|
207
|
+
heroku config:get KEEPER_PRIVATE_KEY -a dubs-server-dev # Check env var
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## ✅ Success Checklist
|
|
213
|
+
|
|
214
|
+
- [ ] Keeper wallet configured (`./setup-heroku-keeper.sh`)
|
|
215
|
+
- [ ] Code deployed (`git push heroku-dev main`)
|
|
216
|
+
- [ ] Keeper scaled up (`heroku ps:scale jackpot-keeper=1`)
|
|
217
|
+
- [ ] Logs show "Keeper bot started"
|
|
218
|
+
- [ ] API returns active round
|
|
219
|
+
- [ ] Rounds cycling every ~1 minute
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
**You're ready! The keeper bot should now be managing jackpot rounds automatically on Heroku.** 🚀🎰
|
|
224
|
+
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# 🚨 Quick Fix Guide - Round Stuck Again
|
|
2
|
+
|
|
3
|
+
## What Happened
|
|
4
|
+
|
|
5
|
+
Round 52 got stuck because **the API server was still running the old buggy code**. Even though we fixed the code in `services/jackpotService.js`, the server needed to be restarted to load the new code.
|
|
6
|
+
|
|
7
|
+
## Immediate Actions (RIGHT NOW)
|
|
8
|
+
|
|
9
|
+
### Option 1: Use the Restart Script (Easiest)
|
|
10
|
+
```bash
|
|
11
|
+
cd /Users/adamdahan/Developer/iheartsolana/solana-programs/dubs-server
|
|
12
|
+
./RESTART_EVERYTHING.sh
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This will:
|
|
16
|
+
- Stop all processes
|
|
17
|
+
- Start API server with fixed code
|
|
18
|
+
- Start keeper bot
|
|
19
|
+
- Verify everything is working
|
|
20
|
+
|
|
21
|
+
### Option 2: Manual Restart
|
|
22
|
+
```bash
|
|
23
|
+
# 1. Stop everything
|
|
24
|
+
pkill -f "jackpot-keeper"
|
|
25
|
+
pkill -f "server.js"
|
|
26
|
+
|
|
27
|
+
# 2. Start API server
|
|
28
|
+
cd /Users/adamdahan/Developer/iheartsolana/solana-programs/dubs-server
|
|
29
|
+
SOLANA_NETWORK=https://api.devnet.solana.com node server.js &
|
|
30
|
+
|
|
31
|
+
# 3. Start keeper bot
|
|
32
|
+
node scripts/jackpot-keeper.js &
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Option 3: PM2 (Best for Production)
|
|
36
|
+
```bash
|
|
37
|
+
# Install PM2 if not installed
|
|
38
|
+
npm install -g pm2
|
|
39
|
+
|
|
40
|
+
# Start everything
|
|
41
|
+
cd /Users/adamdahan/Developer/iheartsolana/solana-programs/dubs-server
|
|
42
|
+
pm2 start ecosystem.config.js
|
|
43
|
+
|
|
44
|
+
# Check status
|
|
45
|
+
pm2 status
|
|
46
|
+
|
|
47
|
+
# View logs
|
|
48
|
+
pm2 logs
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## If Round is Currently Stuck
|
|
52
|
+
|
|
53
|
+
If you have a stuck round right now:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
cd /Users/adamdahan/Developer/iheartsolana/solana-programs/dubs-server
|
|
57
|
+
|
|
58
|
+
# This will resolve it with the fixed code
|
|
59
|
+
node scripts/resolve-direct.js
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Verify Everything Works
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Check API health
|
|
66
|
+
curl http://localhost:3001/jackpot/health
|
|
67
|
+
|
|
68
|
+
# Check current round
|
|
69
|
+
curl http://localhost:3001/jackpot/round/current | python3 -m json.tool
|
|
70
|
+
|
|
71
|
+
# Should see:
|
|
72
|
+
# - Round status: "Open" (accepting entries)
|
|
73
|
+
# - No errors in response
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Why This Keeps Happening
|
|
77
|
+
|
|
78
|
+
**Root Cause:** Node.js doesn't automatically reload code when files change. You must restart the server after making code changes.
|
|
79
|
+
|
|
80
|
+
**Solutions:**
|
|
81
|
+
1. **Development:** Use `nodemon` (auto-restarts on file changes)
|
|
82
|
+
2. **Production:** Use `PM2` (process manager with auto-restart)
|
|
83
|
+
3. **Quick fixes:** Use `./RESTART_EVERYTHING.sh`
|
|
84
|
+
|
|
85
|
+
## Prevention Checklist
|
|
86
|
+
|
|
87
|
+
After fixing any bug:
|
|
88
|
+
- [ ] Restart API server
|
|
89
|
+
- [ ] Restart keeper bot
|
|
90
|
+
- [ ] Verify with health check
|
|
91
|
+
- [ ] Watch next few rounds to confirm fix works
|
|
92
|
+
|
|
93
|
+
## Monitoring
|
|
94
|
+
|
|
95
|
+
Add this to your terminal startup (`.bashrc` or `.zshrc`):
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
alias dubs-status='curl -s http://localhost:3001/jackpot/round/current | python3 -m json.tool'
|
|
99
|
+
alias dubs-health='curl -s http://localhost:3001/jackpot/health | python3 -m json.tool'
|
|
100
|
+
alias dubs-restart='cd /Users/adamdahan/Developer/iheartsolana/solana-programs/dubs-server && ./RESTART_EVERYTHING.sh'
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Then you can just type:
|
|
104
|
+
- `dubs-status` - Check current round
|
|
105
|
+
- `dubs-health` - Check if server is up
|
|
106
|
+
- `dubs-restart` - Restart everything
|
|
107
|
+
|
|
108
|
+
## Questions?
|
|
109
|
+
|
|
110
|
+
Check these files:
|
|
111
|
+
- `documentation/PREVENTING_LOCKUP_ERRORS.md` - Complete prevention guide
|
|
112
|
+
- `ecosystem.config.js` - PM2 configuration
|
|
113
|
+
- `scripts/verify-account-layout.js` - Verify offsets are correct
|
|
114
|
+
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# 🚀 DUBS Server - Quick Start Guide
|
|
2
|
+
|
|
3
|
+
Get up and running in under 1 minute!
|
|
4
|
+
|
|
5
|
+
## 🎯 First Time Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 1. Install dependencies
|
|
9
|
+
npm install
|
|
10
|
+
|
|
11
|
+
# 2. Setup database (automated - just say yes!)
|
|
12
|
+
./scripts/setup-database-fresh.sh
|
|
13
|
+
|
|
14
|
+
# 3. Start server
|
|
15
|
+
npm start
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
That's it! Server running at http://localhost:3001 🎉
|
|
19
|
+
|
|
20
|
+
## 📋 Common Commands
|
|
21
|
+
|
|
22
|
+
### Start Server
|
|
23
|
+
```bash
|
|
24
|
+
npm start
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Reset Everything (Fresh Start)
|
|
28
|
+
```bash
|
|
29
|
+
# Drops database, recreates, and sets up schema
|
|
30
|
+
./scripts/setup-database-fresh.sh
|
|
31
|
+
# Answer 'y' when prompted
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Clear All Data (Keep Structure)
|
|
35
|
+
```bash
|
|
36
|
+
# Removes all data, keeps tables intact
|
|
37
|
+
./scripts/purge-all-data.sh
|
|
38
|
+
# Requires double confirmation for safety
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Update Schema Only
|
|
42
|
+
```bash
|
|
43
|
+
# Updates tables without deleting data
|
|
44
|
+
psql -d dubs_db -f scripts/setup-complete-database.sql
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Check Database Status
|
|
48
|
+
```bash
|
|
49
|
+
# List all tables
|
|
50
|
+
psql -d dubs_db -c "\dt"
|
|
51
|
+
|
|
52
|
+
# Check PostgreSQL status
|
|
53
|
+
pg_isready
|
|
54
|
+
|
|
55
|
+
# Start PostgreSQL if needed
|
|
56
|
+
brew services start postgresql@14
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 🎮 Test Endpoints
|
|
60
|
+
|
|
61
|
+
Once the server is running:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Health check
|
|
65
|
+
curl http://localhost:3001/jackpot/health
|
|
66
|
+
|
|
67
|
+
# Get jackpot config
|
|
68
|
+
curl http://localhost:3001/jackpot/config
|
|
69
|
+
|
|
70
|
+
# Request auth nonce (replace with your wallet)
|
|
71
|
+
curl http://localhost:3001/api/v1/auth/nonce/YOUR_WALLET_ADDRESS
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 🛠️ Troubleshooting
|
|
75
|
+
|
|
76
|
+
### PostgreSQL Not Running?
|
|
77
|
+
```bash
|
|
78
|
+
brew services start postgresql@14
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Database Issues?
|
|
82
|
+
```bash
|
|
83
|
+
# Nuclear option - full reset
|
|
84
|
+
./scripts/setup-database-fresh.sh
|
|
85
|
+
# Answer 'y' to drop and recreate
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Can't Connect?
|
|
89
|
+
Check your `.env` file has:
|
|
90
|
+
```
|
|
91
|
+
DATABASE_URL=postgresql://username@localhost:5432/dubs_db
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Need Fresh Data?
|
|
95
|
+
```bash
|
|
96
|
+
# Clear all data, keep structure
|
|
97
|
+
./scripts/purge-all-data.sh
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## 📖 Full Documentation
|
|
101
|
+
|
|
102
|
+
- **Database Setup:** `documentation/DATABASE_SETUP_GUIDE.md`
|
|
103
|
+
- **Script Reference:** `scripts/README.md`
|
|
104
|
+
- **Complete Summary:** `DATABASE_SETUP_SUMMARY.md`
|
|
105
|
+
|
|
106
|
+
## 🎯 Development Workflow
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Morning routine
|
|
110
|
+
brew services start postgresql@14
|
|
111
|
+
npm start
|
|
112
|
+
|
|
113
|
+
# Testing something? Clear data:
|
|
114
|
+
./scripts/purge-all-data.sh
|
|
115
|
+
|
|
116
|
+
# Messed up schema? Reset:
|
|
117
|
+
./scripts/setup-database-fresh.sh
|
|
118
|
+
|
|
119
|
+
# End of day
|
|
120
|
+
# PostgreSQL keeps running (that's fine)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 💡 Pro Tips
|
|
124
|
+
|
|
125
|
+
1. **Bookmark `setup-database-fresh.sh`** - You'll use it often
|
|
126
|
+
2. **Never commit `.env`** - Already in `.gitignore`
|
|
127
|
+
3. **Use `purge-all-data.sh` for testing** - Keeps structure, removes data
|
|
128
|
+
4. **Full reset = setup-database-fresh.sh** - Rebuilds everything
|
|
129
|
+
|
|
130
|
+
## ⚡ Super Quick Reference
|
|
131
|
+
|
|
132
|
+
| Task | Command |
|
|
133
|
+
|------|---------|
|
|
134
|
+
| First setup | `./scripts/setup-database-fresh.sh` |
|
|
135
|
+
| Start server | `npm start` |
|
|
136
|
+
| Clear data | `./scripts/purge-all-data.sh` |
|
|
137
|
+
| Full reset | `./scripts/setup-database-fresh.sh` (say yes) |
|
|
138
|
+
| Check tables | `psql -d dubs_db -c "\dt"` |
|
|
139
|
+
| Start PostgreSQL | `brew services start postgresql@14` |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
**Need more help?** See `DATABASE_SETUP_GUIDE.md` for comprehensive troubleshooting!
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|