Sign inSign up

nicxx2/jupiter-usdc-price-alerts

Sponsored OSS

By nicxx2

β€’Updated about 1 month ago

USDC price alerts for Solana tokens via Jupiter and ntfy.sh push notifications (+Raspberry Pi 5)

Image
Monitoring & observability
0

50K+

nicxx2/jupiter-usdc-price-alerts repository overview

β πŸš€ Jupiter USDC Price Alerts v3.5

A web-enabled price monitoring and alert tool for Solana tokens using the Jupiter Aggregator.

See current Jupiter USD market-reference prices at a glance, or monitor simulated USDC swaps with real price impact across one or many Solana tokens and receive push alerts via ntfy.sh⁠ from a modern Web UI.

GitHub Stars Docker Pulls License Sponsored OSS

⭐ If you find this project useful, consider starring the repository.


β πŸ”— GitHub Repository

Source code, complete documentation, release history and updates:

πŸ‘‰ https://github.com/Nicxx2/jupiter-usdc-price-alerts⁠


β πŸ“Έ See It in Action

Note

Market values in the BONK, WIF, and JUP screenshots below are clearly labelled illustrative demo data. They are not live market data or financial advice.
⁠Multi-token monitoring

Multi-token monitoring with BONK, WIF, and JUP demo scenarios

⁠Action Readiness

Confirmed Action Readiness rules for the BONK demo scenario

⁠Alerts and saved price history

Price alerts and saved price history for the WIF demo scenario

πŸ“· View more screenshots

Rule Trends reuse saved Action Readiness checks. Gaps remain visible instead of being plotted as zero.

Thirty-day holder trend with a target line and an honest collection gap

⁠Risk thresholds

A WIF demo scenario where sell pressure, liquidity ratio, and price impact block readiness

⁠Rule builder

Per-token Action Rules, alert behavior, targets, and price-impact amount

⁠Settings and rate management

Global Action Rules, isolated Jupiter limiter, SolanaTracker settings, and ntfy topic

⁠Confirmation protection

All rules passing while Action Readiness waits for confirmation sample two of two

⁠Mobile layout

Compact mobile token and Action Readiness overview

Thirty-day Rule Trend on mobile

Stacked Action Readiness rule cards on mobile

Responsive mobile settings panel

⁠Wallet tracking

Wallet Information Screenshot


⁠⚑ At a Glance

  • πŸͺ™ Multi-token monitoring β€” Track and switch between multiple Solana tokens while keeping settings and history isolated
  • πŸ’΅ Price Watch β€” Keep a compact, reorderable list of current Jupiter USD prices without trade size, slippage, or price impact
  • 🌐 Web dashboard β€” View simulated USDC swap prices, charts, thresholds, and alert status
  • πŸ›‘οΈ Optional token intelligence β€” Add Token Safety, RSI, wallet holdings, and sell simulations with a SolanaTracker API key
  • βœ… Action Readiness β€” Build per-token market and price-impact rules with an optional Jupiter API key
  • πŸ”” Flexible push alerts β€” Receive buy, sell, RSI, and confirmed Action Rules notifications through ntfy
  • 🐳 Public Docker image β€” Run the backend, Web UI, and alert engine together without building an image locally

⁠✨ What’s New in v3.5

  • Added Price Watch for compact Jupiter USD market-reference prices without trade size, slippage, or price impact.
  • Quick-add monitored tokens or validate up to 10 pasted token addresses before saving anything.
  • Keep up to 50 tokens with optional labels, full-address access, touch-friendly reordering, and safe removal or re-adding.
  • Added app-collected 24h, 7d, 30d, and 90d price trends with truthful gaps and bounded storage.
  • Batched collection shares the existing keyless Jupiter limiter, prefers quiet scheduler windows, and receives one bounded fairness opportunity if the main queue stays busy.
  • Added a compact expandable mobile quick-actions menu for Price Watch, Settings and Theme.
  • Kept the existing simulated quotes, price alerts, RSI, Token Safety, and Action Readiness flows unchanged and isolated from Price Watch failures.

➑️ View the v3.5 release⁠


πŸ’΅ Detailed Price Watch and reliability notes
⁠Current prices at a glance
  • On desktop, open Price Watch from the top-right controls.
  • On mobile, expand the quick-actions button beside the title and choose Price Watch.
  • Price Watch appears as a responsive desktop side panel or mobile bottom sheet.
  • It uses Jupiter Price V3 market-reference prices and remains separate from the main app’s simulated buy and sell quotes, trade amount, slippage, and price-impact calculations.
⁠Safe adding and list management
  • Quick-add tokens already monitored for alerts, or paste one or several Solana token addresses.
  • A live price check is required before anything is saved.
  • Results clearly report ready, unavailable, invalid, duplicate, expired, or limit-reached states.
  • Add up to 10 tokens per batch and keep up to 50 overall.
  • Use optional labels, full-address reveal and copy controls, mouse or touch reordering, removal confirmation, and remembered desktop panel sizing.
⁠Honest app-collected history
  • History starts with the validated reading used to add the token.
  • Price Watch does not invent or backfill earlier prices.
  • Repeated valid prices remain flat instead of becoming gaps.
  • Unavailable readings, long pauses, removal, and later re-adding remain visible as genuine gaps instead of zeroes.
  • Recent detail is retained while older data is progressively compacted within a rolling 90-day window.
⁠Protected scheduling and isolation
  • All watched tokens are collected in one batched request.
  • The default target is 60 seconds.
  • Collection normally waits for a safe idle scheduler window.
  • A protected attempt after 120 seconds prevents a continuously busy main-token queue from starving Price Watch.
  • The collector shares the existing keyless Jupiter limiter and creates no catch-up request bursts.
  • Provider or SQLite failures stay inside Price Watch and cannot stop the main quote, alert, RSI, Token Safety, or Action Readiness paths.

⁠🐳 Docker Compose Example

The example below uses the public Docker Hub image nicxx2/jupiter-usdc-price-alerts:latest, so no local image build is required.

You only need Docker with Compose support. SolanaTracker and Jupiter API keys enable optional features.

βœ… Update OUTPUT_MINT to the token you want to monitor.
πŸ•’ Change TZ to match your region so timestamps and cooldown logic align correctly.

services:
  jupiter-usdc-price-alert:
    image: nicxx2/jupiter-usdc-price-alerts:latest
    container_name: jupiter-usdc-price-alerts
    restart: unless-stopped

    ports:
      - "8000:8000"

    environment:
      # --- Token Configuration ---

      # Input mint must be USDC for accurate USD-based alerts
      INPUT_MINT: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

      # Token you want to monitor
      OUTPUT_MINT: <YOUR_OUTPUT_TOKEN_MINT>

      # Required for RSI, Token Safety, wallet information and sell simulator
      SOLANATRACKER_API_KEY: ""

      # Saved UI settings in /shared/config.json take priority after editing
      SOLANATRACKER_ENABLED: "true"

      # SolanaTracker limiter: safe, custom, or off
      SOLANATRACKER_RATE_LIMIT_MODE: safe
      SOLANATRACKER_REQUESTS_PER_SECOND: 1

      # Cached Token Safety reports
      TOKEN_SAFETY_ENABLED: "true"
      TOKEN_SAFETY_INTERVAL_HOURS: 24

      # Optional and used only by Action Rules
      JUPITER_API_KEY: ""

      # Existing keyless Jupiter price-monitor limiter
      JUPITER_REQUESTS_PER_SECOND: 0.5

      # Price Watch scheduling and persistent history
      PRICE_WATCH_REFRESH_SECONDS: 60
      PRICE_WATCH_IDLE_GUARD_SECONDS: 10
      PRICE_WATCH_MAX_INTERVAL_SECONDS: 120
      PRICE_WATCH_HISTORY_PATH: /shared/price-watch-history.sqlite3

      # Recheck unusually large moves before charting or alerting
      PRICE_MOVE_CONFIRMATION_ENABLED: "true"
      PRICE_MOVE_CONFIRMATION_THRESHOLD_PERCENT: 50
      PRICE_MOVE_CONFIRMATION_TOLERANCE_PERCENT: 15
      PRICE_MOVE_CONFIRMATION_DELAY_SECONDS: 5

      # Action Rules
      COMMUNITY_RULES_JUPITER_REQUESTS_PER_SECOND: 0.5
      COMMUNITY_RULES_ENABLED: "true"
      COMMUNITY_RULES_CHECK_INTERVAL: 120
      COMMUNITY_RULES_STALE_SECONDS: 360
      COMMUNITY_RULES_QUOTE_MAX_AGE_SECONDS: 90
      COMMUNITY_RULES_SOURCE_MAX_AGE_SECONDS: 3600
      COMMUNITY_RULES_HISTORY_PATH: /shared/action-rules-history.sqlite3
      COMMUNITY_RULES_HISTORY_RETENTION_DAYS: 90
      COMMUNITY_RULES_HISTORY_MAX_POINTS: 480

      # --- Simulated Swap Settings ---

      # Amount of USDC to simulate swapping
      USD_AMOUNT: 100

      # Optional token decimal overrides; leave blank for auto-detection
      INPUT_DECIMALS: ""
      OUTPUT_DECIMALS: ""

      # How often to check prices, in seconds
      CHECK_INTERVAL: 60

      # --- Alert Triggers ---

      BUY_ALERTS: "0.00138, 0.00135, 0.00136"
      SELL_ALERTS: "0.00140, 0.00145"

      # --- RSI Configuration ---

      RSI_ENABLED: "true"
      RSI_CHECK_INTERVAL: 5
      RSI_ALERTS: "below:30"
      RSI_INTERVAL: "5m"
      RSI_RESET_ENABLED: "false"

      # Comma-separated wallet addresses
      WALLET_ADDRESSES: ""

      # --- Push Notifications ---

      NTFY_TOPIC: token-alerts
      NTFY_SERVER: https://ntfy.sh

      # Minutes before the same buy/sell alert can trigger again
      ALERT_RESET_MINUTES: 0

      # --- Timezone ---

      TZ: Europe/London

    volumes:
      - jupiter-alert-data:/shared

    logging:
      driver: "json-file"
      options:
        max-size: "2m"
        max-file: "5"

volumes:
  jupiter-alert-data:

Start the container:

docker compose up -d

Pull a newer image and recreate the container:

docker compose pull
docker compose up -d

β πŸ”„ Upgrading to v3.5

Existing configurations remain compatible.

Price Watch automatically creates /shared/price-watch-history.sqlite3 inside the existing persistent volume. It remains separate from alert state, simulated quote history, and Action Readiness history.

If the /shared volume is mounted as shown above, saved settings, alerts, histories, wallets and Price Watch data survive container recreation and future image updates.


⁠🌐 Accessing the Web UI

When running locally:

http://localhost:8000

When running on another server, replace localhost with its IP address or hostname:

http://<your-server-ip>:8000

From the Web UI you can:

  • View current simulated buy and sell prices
  • Open Price Watch for Jupiter USD market-reference prices
  • Add, validate, remove and switch between monitored tokens
  • Configure token-specific alerts and intervals
  • View saved price and Action Readiness trends
  • Manage optional RSI, Token Safety, wallet and Action Rules features
  • Configure global or token-specific ntfy topics
  • Use the responsive desktop and mobile layouts

β πŸ“² Push Alerts with ntfy.sh

This project uses ntfy.sh⁠ to send free push notifications to your browser or mobile device.

βœ… No signup required
βœ… Works on Android, iOS, browsers and terminals

⁠Mobile apps

Subscribe to the topic configured in NTFY_TOPIC.

⁠Browser alerts

Open:

https://ntfy.sh/<your-topic>

Then allow browser notifications when prompted.


⁠🧠 Tips for Beginners

  • πŸ’‘ Token mint addresses can be found on Jupiter⁠ or Solscan⁠
  • πŸ” Make your NTFY_TOPIC unique because it acts as your alert channel
  • πŸ“‰ Use Price Watch for Jupiter USD market-reference prices
  • πŸ’± Use the main monitor for simulated USDC quotes with trade size and price impact
  • πŸ’Ύ Keep the /shared volume mounted to preserve settings and history
  • 🧼 Docker log rotation is included

β βœ… Supported Platforms

  • πŸ–₯️ linux/amd64
  • πŸ“ linux/arm64 β€” Raspberry Pi 4/5
  • 🧲 linux/arm/v7 β€” Raspberry Pi 3 and older ARM devices

β πŸ“š Full Documentation and Releases

For complete feature documentation, production notes, previous release history and source code:

πŸ‘‰ GitHub Repository⁠

πŸ‘‰ v3.5 Release⁠

πŸ‘‰ All Releases⁠


β πŸ’– Support This Project

If you find this project useful, you can leave a tip here β€” thank you!

Support on Ko-fi

Tag summary

Content type

Image

Digest

sha256:1d83afc5f…

Size

100.6 MB

Last updated

about 1 month ago

docker pull nicxx2/jupiter-usdc-price-alerts

This week's pulls

Pulls:

380

Last week