nicxx2/jupiter-usdc-price-alerts

Sponsored OSS

By nicxx2

โ€ขUpdated 22 days 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.4

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

Monitor simulated USDC swaps with real price impact across one or many Solana tokens, then 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.


โ ๐Ÿ“ธ 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
  • ๐ŸŒ 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.4

  • Added cached Token Safety reports powered by SolanaTracker.
  • Added global and per-token Safety controls with configurable check frequency.
  • Improved Token Overview readability across desktop and mobile.
  • Improved RSI reliability, multi-token scheduling, and confirmation of unusually large price moves.
  • Added per-rule Action Readiness trends with truthful gaps and bounded history.
  • Added automated request estimates and shared rate-limit protection.

โžก๏ธ View the v3.4 releaseโ 


๐Ÿ”ง Detailed v3.4 feature and reliability notes
  • Added cached Token Safety reports using one SolanaTracker token-information request per check, enabled by default when SolanaTracker is available, with persistent global and per-token controls, manual or scheduled refreshes, retained trusted results after failures, and no safety notifications.
  • Improved Token Overview with full aligned Buy and Sell prices, a responsive mobile layout, and compact safety shields that open a detailed report without changing the active token.
  • Improved SolanaTracker RSI reliability with standard Wilder calculations over genuine traded candles, stable no-trade values, safer source validation, and correct persistence across restarts, token switches, and interval changes.
  • Added safer confirmation for unusually large Jupiter price moves before updating charts, shared quote caches, or firing alerts.
  • Improved multi-token monitoring with live Token Overview updates, a clear active-token marker, accurate overdue scheduling, independent background alerts, safer notification retries, and cleaner fired-alert timing details.
  • Improved Action Readiness trends across 24h, 7d, 30d, and 90d so representative real readings remain visible while genuine provider gaps and rule or scenario changes stay clearly separated.
  • Open the dedicated graph button on any enabled rule card to switch safely between its live value and its history.
  • Choose 24h, 7d, 30d, or 90d views on desktop or mobile; each coin and rule remembers its own view and range in that browser.
  • Actual readings are plotted against the rule target, including stepped target changes and separate price-impact scenario segments.
โ ๐Ÿ›ก๏ธ Truthful gaps and provider timing
  • Rule Trends reuse completed Action Readiness evaluations and make no additional Jupiter requests.
  • Only fresh, finite readings are saved. Unknown, stale, malformed, disabled, and interrupted periods appear as gaps and are never converted to zero.
  • Jupiter token metrics are deduplicated by the provider's source timestamp, while live price-impact quotes use their own quote timestamp.
โ ๐Ÿ’พ Bounded, isolated history
  • Trend history is stored in /shared/action-rules-history.sqlite3, separately from current readiness, configuration, alerts, and price history.
  • Recent readings stay detailed, older readings are progressively downsampled, and retention is bounded to 90 days by default.
  • History endpoints return a mobile-safe bounded number of points, and deleting a tracked coin also deletes its rule history.
  • A history storage problem cannot stop current Action Readiness checks or alerts.
โ ๐Ÿ“ฑ Focused responsive cards
  • A dedicated 36px graph control prevents accidental card activation and keeps the current Pass / Not passed / Unknown status visible.
  • Charts use compact labels and tap-friendly tooltips, disable animation for motion safety, and explain gaps and the latest valid reading.

๐Ÿ“š Previous release highlights (v3.2 โ†’ v2.1)

โ โœจ What's New in v3.2

โ โœ… Action Rules and Action Readiness
  • Create independent per-coin conditions for holder count, market cap, liquidity, 24-hour volume, sell pressure, volume/liquidity ratio, and maximum Jupiter sell-quote price impact.
  • See each rule's current value, target, and Pass / Not passed / Unknown result in a responsive Action Readiness card.
  • Enable or disable Action Rules globally or per coin while preserving every coin's saved configuration.
  • Jupiter-reported holder counts are clearly identified as provider data and may differ slightly from other indexers.
โ ๐Ÿ”” Confirmed Action Rules alerts
  • Optionally send an ntfy alert when every enabled rule has passed two fresh checks.
  • Choose a send once alert or re-arm after two confirmed failures followed by two new passes.
  • Stale, missing, malformed, or zero-denominator data stays Unknown and cannot trigger an alert.
  • Per-coin ntfy topics override the global topic, and delivery failures retry on later checks without repeating a successfully completed one-time alert.
โ ๐Ÿ”Œ Safe Jupiter integration
  • The optional JUPITER_API_KEY is used only by Action Rules for Tokens V2 data and authenticated sell quotes.
  • Without that key, Action Rules remain unavailable while the existing keyless Jupiter price monitor and price alerts continue unchanged.
  • Action Rules use a separate conservative limiter, batch metadata for up to 100 mints, and retry only transient failures such as timeouts, 429, and server errors.
  • Permanent 4xx errors stop only the current retry burst; the next scheduled refresh still tries again normally.
  • Signed Swap V2 price impact is normalized into adverse percentage points so a negative signed value cannot incorrectly pass a maximum-impact rule.
โ ๐Ÿ“ฑ UI and long-running reliability
  • Action Readiness starts as a compact, expandable status bar, remembers each coin's browser expand/collapse preference, and stays responsive on desktop and mobile.
  • When JUPITER_API_KEY is blank or Action Rules are globally disabled, Action Readiness and Rules indicators stay hidden from the main dashboard; Settings clearly explains the inactive state. A global visibility change only takes effect after Settings is saved.
  • Settings displays the effective Action Rules refresh interval and isolated limiter from Docker/ENV configuration.
  • Global/per-coin transitions, restarts, stale gaps, unrelated token edits, and alert state persistence are handled without false-ready alerts.
  • Re-enabling RSI now shows a waiting state immediately instead of briefly reporting that RSI is still disabled.

โ ๐Ÿงพ What's New in v3.1.1

โ ๐Ÿช™ Multi-token monitoring
  • Track multiple output tokens from the web UI while keeping Docker Compose as the simple default setup.
  • Validate new token mints with Jupiter before saving them.
  • Switch the active token without losing each token's saved chart, alert, RSI, and wallet context.
โ โš™๏ธ Token-isolated settings
  • Each token can have its own simulated USD amount, buy/sell alerts, alert reset minutes, RSI alerts, RSI interval, RSI reset mode, decimals, price check interval, RSI check interval, and optional ntfy topic.
  • Per-token ntfy test notifications make it easy to confirm the right topic before alerts fire.
  • Chart window, wallet selection, and sell simulator preferences are remembered per token in the browser.
โ ๐Ÿ”Œ API and wallet reliability
  • Jupiter price checks now use keyless Swap V2 quote-only requests with a dedicated 0.5 req/sec default limiter.
  • Wallet info now uses SolanaTracker PnL V2 batch positions with a fallback to basic wallet holdings for migrated or not-yet-indexed tokens.
  • Sell simulator keeps proceeds visible for holding-only data, but avoids showing a misleading principal/profit split until PnL is indexed.
  • Long SolanaTracker RSI and wallet status errors wrap cleanly within mobile and desktop cards without changing the original error text.
โ ๐Ÿ›ก๏ธ Safer rate and state management
  • SolanaTracker calls use a shared safe limiter by default for free accounts, with custom/off modes for higher plans.
  • Scheduler checks tokens in a conservative round-robin flow so multiple tokens queue cleanly instead of spiking API calls.
  • SolanaTracker can be disabled globally from Settings, hiding RSI, wallet info, and sell simulator while Jupiter price alerts keep running.
  • RSI can also be disabled per token when you only want SolanaTracker checks on selected tokens.
  • Missing or failed RSI data displays as -- with status context instead of a fake 0.00.
  • Price history and quote caches are scoped per token and cleared when calculation settings change.

โ v2.4

โ ๐ŸŒ™ Dark Mode Support
  • Persistent theme toggle โ€” Sun/moon button in top-right corner
  • System preference detection โ€” Automatically detects your OS dark/light preference on first visit
  • Per-device memory โ€” Each browser/device remembers your theme choice
  • Dark-aware charts โ€” Chart.js axes, grid, and tooltips adapt to dark mode
  • Improved dropdowns โ€” All select elements now have proper dark mode styling
  • Smooth transitions โ€” Clean theme switching without page reload

โ v2.3.1

โ ๐Ÿ”— Jupiter API Update
  • Migrated from the deprecated quote-api.jup.ag/v6 to the new lite-api.jup.ag/swap/v1.
  • Added retry and backoff logic for more resilient price checks.
  • Added restrictIntermediateTokens=true to reduce rare dust-pool price spikes.

โ v2.3

โ ๐Ÿงฎ Sell % Simulator (Wallets)

Quickly model a partial exit from your position and see an estimated breakdown of proceeds:

  • Adjust 0โ€“100% via slider, numeric input, or quick chips
  • Shows:
    • Estimated current token price
    • Tokens to sell
    • Expected proceeds
    • Split into principal vs unrealized profit/loss
  • Works with the selected wallet or All (aggregate)
  • Hidden when no wallets are configured or when the selected source has no holdings
  • Uses the latest values from the Wallet Info card (PnL):
    price โ‰ˆ current_value / holding, with proceeds split using the current cost basis and unrealized PnL
  • Note: This is an estimate; execution may vary due to price impact and slippage

โ v2.2.2

โ ๐Ÿ“ฑ Mobile Layout Tweaks
  • Improved layout so the UI now looks better on phones and smaller screens.
โ ๐Ÿ’ผ Wallet Information Panel
  • You can now add wallets to view real-time holdings and cost basis.
  • A new โ€œAllโ€ option shows the combined totals across all wallets.
  • Requires: SOLANATRACKER_API_KEY; wallets can be set with WALLET_ADDRESSES or added from the Web UI.

โ v2.1

โ ๐Ÿ” RSI Indicators (Optional)

By providing a SOLANATRACKER_API_KEY, you enable a new RSI panel in the UI that lets you:

  • RSI is calculated on the tokenโ€™s USD (USDC) price, not on the token/SOL pair
  • View live RSI values across multiple intervals: 1s, 1m, 5m, 15m, 1h, 4h
  • Set RSI alert thresholds, e.g. "below:30", "above:70"
  • Optionally auto-reset alerts when RSI crosses back (toggle with RSI_RESET_ENABLED)

๐Ÿ“ To use RSI features, create a free account at solanatracker.ioโ  and generate an API key
๐Ÿšฆ Free API keys include 2,500 requests per month

โ ๐Ÿ›ก๏ธ Resilience to API Hiccups
  • Handles rate limits (429) and timeouts gracefully
  • If RSI data is unavailable, the UI displays "โ€“โ€“" instead of crashing
  • RSI alerts automatically resume on the next scheduled check
โ ๐Ÿ–ฅ๏ธ RSI Alert Status Badges
  • New badges show live RSI alert state:
    • ๐ŸŸข Active
    • ๐ŸŸก Waiting to Reactivate
    • ๐Ÿ”ด Inactive

โ ๐Ÿ”— GitHub Repository

๐Ÿ‘‰ https://github.com/Nicxx2/jupiter-usdc-price-alertsโ 


โ ๐Ÿณ 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; the SolanaTracker and Jupiter API keys enable optional features.

Paste the following into a docker-compose.yml file.

โœ… Update the OUTPUT_MINT to the token you want to monitor (e.g. BONK, JIM, PEPE).
๐Ÿ•’ Make sure to change the TZ (timezone) to match your region โ€” this helps timestamps and cooldown logic align properly.


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

    # Expose the FastAPI backend for the Web UI
    ports:
      - "8000:8000"

    environment:
      # --- Token Configuration ---

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

      # Output token mint (token you want to monitor, e.g. JIM)
      OUTPUT_MINT: <YOUR_OUTPUT_TOKEN_MINT>

      # Solanatracker.io API key (required for RSI, Token Safety, wallet info, and sell simulator)
      # If omitted, SolanaTracker-only panels will be disabled in the UI
      SOLANATRACKER_API_KEY: ""

      # Master SolanaTracker feature switch. Docker is the first-run default;
      # saved app settings in /shared/config.json take priority after you edit them in the UI.
      SOLANATRACKER_ENABLED: "true"

      # SolanaTracker limiter: safe, custom, or off.
      # Safe mode is conservative for free accounts and leaves room for RSI/wallet calls.
      # Use custom/off only if your plan allows it.
      SOLANATRACKER_RATE_LIMIT_MODE: safe
      SOLANATRACKER_REQUESTS_PER_SECOND: 1

      # Cached Token Safety reports. Enabled when SolanaTracker is available;
      # disabling it in Settings is persisted across restarts and container updates.
      TOKEN_SAFETY_ENABLED: "true"
      TOKEN_SAFETY_INTERVAL_HOURS: 24

      # Optional and used only by Action Rules. Existing prices remain keyless.
      # Leave blank to keep Action Rules unavailable; create one at https://portal.jup.ag.
      JUPITER_API_KEY: ""

      # Existing keyless price-monitor limiter (unchanged by Action Rules).
      JUPITER_REQUESTS_PER_SECOND: 0.5

      # Separate authenticated limiter used only by Action Rules.
      COMMUNITY_RULES_JUPITER_REQUESTS_PER_SECOND: 0.5
      # This is forced off automatically while JUPITER_API_KEY is blank.
      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
      # Rule Trends reuse Action Readiness results and add no Jupiter calls.
      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 decimals override. Leave blank for auto-detect/fallback.
      # USDC is 6 decimals; output token decimals vary by mint.
      INPUT_DECIMALS: ""
      OUTPUT_DECIMALS: ""

      # How often to check prices (in seconds)
      CHECK_INTERVAL: 60

      # --- Alert Triggers ---

      # Trigger buy alert if price is less than or equal to one of these
      BUY_ALERTS: "0.00138, 0.00135, 0.00136"

      # Trigger sell alert if price is greater than or equal to one of these
      SELL_ALERTS: "0.00140, 0.00145"

      # --- RSI Configuration ---

      # Per-token RSI can also be switched off in the UI
      RSI_ENABLED: "true"

      # How often (in minutes) to refresh RSI checks
      # Note: Free solanatracker.io API keys are limited to 2,500 requests per month
      RSI_CHECK_INTERVAL: 5

      # RSI alert thresholds (e.g. "above:30", "below:70")
      RSI_ALERTS: "below:30"

      # Candle interval used for RSI calculation (e.g. 1s, 1m, 5m)
      RSI_INTERVAL: "5m"

      # If false, RSI alerts trigger only once per session
      RSI_RESET_ENABLED: "false"

      # Persisted, wallet tracking config
      # Comma-separated list of Solana wallet addresses to track
      # Note: Free solanatracker.io API keys are limited to 2,500 requests per month
      WALLET_ADDRESSES: ""

      # --- Push Notifications (via ntfy) ---

      # Unique topic name to receive notifications
      NTFY_TOPIC: token-alerts

      # Ntfy server URL (default: https://ntfy.sh)
      NTFY_SERVER: https://ntfy.sh

      # --- Alert Reset Cooldown ---

      # Minutes before the same buy/sell alert can trigger again (set to 0 to disable)
      ALERT_RESET_MINUTES: 0

      # --- Timezone ---

      # Local timezone for timestamps and scheduling
      TZ: Europe/London

    # Persist UI-edited settings, alert state, and price history
    volumes:
      - jupiter-alert-data:/shared

    # --- Log Rotation ---

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

volumes:
  jupiter-alert-data:

Start the container:

docker compose up -d

To pull a newer image later and recreate the container:

docker compose pull
docker compose up -d

โ ๐ŸŒ Accessing the Web UI

Once the container is running, you can view and control everything from a clean browser interface.

โ โœ… How to Access

If you're running this locally:

http://localhost:8000

If running on a remote server, replace localhost with the IP address or hostname of your server:

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


โ ๐Ÿ“ฒ 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

โš ๏ธ Free Tier Note: ntfy.sh allows up to 250 messages per IP address per day.
If needed, you can self-host your own ntfy server and change the NTFY_SERVER variable in the Docker Compose file to point to your self-hosted instance (e.g. http://localhost:8080).

โ โœ… How to Receive Alerts

๐Ÿ“ฑ Option 1: Mobile App

Open the app and subscribe to your topic (e.g. token-alerts).


๐ŸŒ Option 2: Browser Alerts

  • Go to: https://ntfy.sh/<your-topic>
  • Example: https://ntfy.sh/token-alerts
  • Click โ€œAllowโ€ when your browser asks for notification permissions.

โ ๐Ÿง  Tips for Beginners

  • ๐Ÿ’ก Token mint addresses can be found on jup.agโ  or solscan.ioโ 
  • ๐Ÿ” Your NTFY_TOPIC is your personal alert channel โ€” make it unique
  • ๐Ÿ“‰ You can monitor any token priced in USDC with simulated slippage
  • ๐Ÿงผ Log rotation is built-in (2MB, up to 5 files)

โ โœ… Supported Platforms

  • ๐Ÿ–ฅ๏ธ linux/amd64
  • ๐Ÿ“ linux/arm64 (Raspberry Pi 4/5)
  • ๐Ÿงฒ linux/arm/v7 (Raspberry Pi 3 and older ARM chips)

โ ๐Ÿ’– Support This Project

If you found this helpful and want to support what I do, you can leave a tip here โ€” thank you so much!

Support on Ko-fi


Tag summary

Content type

Image

Digest

sha256:a5df66ab9โ€ฆ

Size

100.3 MB

Last updated

22 days ago

docker pull nicxx2/jupiter-usdc-price-alerts

This week's pulls

Pulls:

2,300

Last week