What is this?
A self-hosted, tactical-style crypto dashboard focused on Bittensor (TAO). Unlike most price trackers, this dashboard includes a server-side data cache that fetches from CoinGecko and Alternative.me every 90 seconds — meaning browser clients never hit API rate limits, and the data is always fresh when you load the page.
The dashboard was built to be genuinely useful: not just a price chart, but a tool that combines technical signals, news impact analysis, historical context, and clearly-reasoned trade suggestions based on actual market data.
Live Data Backend
Node.js server caches CoinGecko + F&G data server-side, served via nginx proxy. No browser rate limits.
Technical Analysis
RSI(14), Bollinger Bands, support/resistance from real 1Y price data, composite signal scoring.
Intelligence Report
5 actionable suggestion cards with price triggers, confidence levels, reasoning, and risk factors.
What's on the dashboard
Live Price Header
Animated number counter on load, 24h change badge (green/red), live dot indicator. Auto-refreshes every 60 seconds in-place without reloading the page.
90-Day Price Chart
Built with Chart.js 4. Shows price with gradient fill, MA20 (dashed yellow), and MA50 (dotted orange). Time axis via chartjs-adapter-date-fns. Right-side Y axis for cleaner layout.
Technical Signal Panel
RSI(14) computed from the last 15 price points. Bollinger Band position (20-day). Fear & Greed contrarian signal. Price vs 1-year average. Post-halving cycle indicator. Combined into a composite buy/neutral/caution verdict.
Support & Resistance Levels
Calculated from real 1-year price data: 20th, 50th, and 80th percentile price levels, plus the 1Y high and low. Current price is highlighted with zone classification.
Fear & Greed Gauge
Semicircle arc gauge with animated needle, 7-day bar history. Color-coded from red (Extreme Fear) to green (Extreme Greed). Data from Alternative.me free API.
News Impact Analysis
5 curated news cards covering the most significant recent events. Each shows an impact badge (VERY BULLISH → CAUTION), description, and a price impact bar showing strength of effect on price.
Intelligence Report
5 actionable suggestion cards: ACCUMULATE ($250–$280), STRONG BUY ($220–$240), HOLD/WAIT ($280–$320), PARTIAL TAKE PROFIT ($380–$420), and DO NOT CHASE (above $420). Each has a confidence level, multi-sentence reasoning backed by data, and risk factors. Prominently marked as not financial advice.
How it works
The system has three layers: a Node.js API server that fetches and caches external data, an nginx reverse proxy that routes requests, and the static HTML frontend.
The frontend calls /api/tao on load and every 60 seconds. The backend refreshes from external APIs every 90 seconds independently. This means the browser always gets a fast local response, and external API rate limits are never hit regardless of how many people view the page.
API endpoint
The backend exposes two endpoints:
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
| price | number | Current TAO price in USD |
| change_24h | number | 24-hour % price change |
| change_7d | number | 7-day % price change |
| change_30d | number | 30-day % price change |
| market_cap | number | Market cap in USD |
| volume_24h | number | 24h trading volume in USD |
| ath / atl | number | All-time high / low in USD |
| prices_90d | array | [timestamp, price] pairs for 90-day chart |
| volumes_90d | array | [timestamp, volume] pairs for 90-day chart |
| stats_1y | object | min, max, avg, p20, p50, p80 from 1-year data |
| indicators.rsi | number | RSI(14) computed from last 15 price points |
| indicators.bb_* | number | Bollinger Bands (20-day, 2σ): upper, lower, mid, position % |
| fear_greed | array | Last 7 days: { date, value, classification } |
| cache_age_s | number | Seconds since last external API refresh |
How signals are computed
| SIGNAL | METHOD | SCORING LOGIC |
|---|---|---|
| RSI (14) | Computed from last 15 close prices using Wilder's smoothing method | RSI ≥80 = 15 (overbought/bearish); RSI ≤30 = 90 (oversold/bullish); scale between |
| Bollinger Position | 20-day MA ± 2σ. Position = (price − lower) / (upper − lower) × 100 | ≥85% (near upper) = 15; ≤15% (near lower) = 85; neutral at 50% |
| Fear & Greed | Alternative.me index (0–100). Low values = contrarian buy signals | ≤15 = 80 (extreme fear = buy); ≥75 = 20 (extreme greed = caution) |
| vs 1Y Average | Current price vs rolling 1-year average from CoinGecko daily data | Below avg = bullish; above avg = caution; threshold bands at 75% and 125% |
| Halving Cycle | Static: post-halving (Dec 14, 2025) is structurally bullish for 6–18 months | Fixed score of 72/100 during the post-halving accumulation window |
| Composite | Simple average of all 5 signal scores (0–100) | ≥65 = BUY ZONE; 45–64 = NEUTRAL/WAIT; <45 = CAUTION |
Requirements & dependencies
API rate limits
CoinGecko Free Tier
10–30 calls/minute depending on endpoint. The backend makes 4 parallel calls every 90 seconds = ~2.7 calls/minute. Well within limits. If CoinGecko is temporarily unavailable, the server keeps serving the last cached response.
Offline Fallback
If the API server is unreachable, the frontend shows an "OFFLINE" badge and continues displaying the last known data. The server auto-retries every 90 seconds. The browser retries every 15 seconds on error.
Auto-Restart
The api-server.js process should be run under a process manager (pm2 or systemd) for production use to ensure it restarts automatically after server reboots. Currently running as a background node process.
⚠ DISCLAIMER
This dashboard is for educational and informational purposes only. Nothing on this page constitutes financial advice, investment advice, trading advice, or any other sort of advice. The actionable suggestions in the Intelligence Report are algorithmic analysis based on historical price data and publicly available indicators — they do not account for your personal financial situation, risk tolerance, tax implications, or other factors relevant to investment decisions. Cryptocurrency markets are highly volatile. Past performance is not indicative of future results. Always do your own research and consult a qualified financial advisor before making any investment decisions.