βββΒ· ββ’ βββββ βββΒ·
ββ ββ ββͺβββββ βΒ·ββ ββ
βββββ βββββββββ βββββ
ββ βͺββββββββββ’ββββ βͺββ
β β βββ .β β β β
Anomaly Intelligence Platform β v2.0
The internet generates signals. AURA reads them.
Every day, billions of posts move across social platforms. Most are noise.
A few are signals β coordinated spikes, sudden drops, viral cascades β that tell you something real is happening.
Traditional analytics tools tell you what happened.
AURA tells you why it happened β and flags it before you even notice.
AURA is not a dashboard. It's a behavioral surveillance layer built on top of social data.
AURA ships with a complete, production-grade auth system β not a placeholder login screen.
| Method | Details |
|---|---|
| π§ Email / Password | Full registration, login, forgot-password flow |
| π¦ Google SSO | One-click sign-in via Firebase OAuth popup |
| π Secure isolation | Each user's data lives in their own Firestore subcollection |
| π‘οΈ Settings | Update display name, change password, delete account β all from within the app |
The authentication layer is complete end-to-end β password strength meter, loading spinners, error code mapping, enter-key shortcuts, and eye-toggle for password fields included.
The command center. Everything you need, nothing you don't.
4 Live KPI Cards β each with an accent gradient, delta indicator, and shimmer skeleton loader while data populates:
| Card | What it tracks |
|---|---|
| π£ Anomalies Detected | Count of flagged records vs. total dataset |
| π΄ Events Flagged | Total event clusters + critical count |
| π’ Avg Confidence | Weighted mean confidence score across events |
| π‘ Total Engagement | Cumulative engagement across all platforms |
Advanced Filter Bar β filter by platform, topic, type (spike/drop), severity (low β critical), and keyword search (debounced at 280ms to avoid excessive re-renders).
4 Synchronized Charts β all update instantly on every filter change:
π Timeline β Engagement + anomaly frequency over 30 days (dual-axis line)
π© Platform β Breakdown of anomaly count per platform (doughnut)
π Topic β Horizontal bar showing anomaly-heavy topics
π΅ Scatter β Sentiment vs. Engagement β reveals hidden clusters
Each anomaly record carries:
{
"timestamp": "ISO-8601 datetime",
"platform": "Twitter | Instagram | Reddit | TikTok | ...",
"topic_category": "Politics | Sports | Technology | ...",
"engagement_score": 84.7,
"sentiment_score": -0.312,
"anomaly_pred": 1,
"detected_type": "spike | drop",
"anomaly_reason": "Z-score threshold exceeded by 3.2Ο",
"confidence_score": 0.934,
"anomaly_strength": 4.1,
"hashtags": "#trending #viral #tech",
"event_id": "EVT007"
}Detection types include:
- Viral Spikes β engagement surges beyond statistical thresholds
- Engagement Drops β sudden unexplained activity collapses
- Coordinated Activity β bot-like behaviour cluster patterns
- Sentiment Reversals β sudden shift in community tone
Raw anomalies alone are noisy. AURA clusters them into Events β meaningful named groupings that map to real-world moments.
Every event contains:
Event ID β Unique identifier (EVT001 β EVT999)
Event Label β Human-readable name ("Tech Conference Surge")
Platform β Dominant platform for this event
Topic β Dominant topic category
Post Count β Volume of posts in the cluster
Confidence β Mean confidence score across member anomalies
Intensity β low | medium | high | critical
Time Window β start_time β end_time
Top Hashtags β Most prevalent hashtags in the cluster
AI Explanationβ Auto-generated reasoning for why this event was flagged
Events are displayed both in a scannable table (top 50, sortable) and in a grid of expandable cards in the dedicated Events tab.
Click any event β anywhere in the app β to open a side-panel detail view with:
- Full event metadata and confidence bar
- AI-generated contextual reasoning
- Engagement peak + post volume stats
- Duration (auto-computed from start/end timestamps)
- Hashtag cloud
- Severity and type badges
The panel slides in from the right with a smooth 320ms cubic-bezier animation and a backdrop overlay.
AURA speaks two data formats natively:
JSON β accepts either:
{ "anomalies": [...], "events": [...] } // Pre-split structure
[{ "engagement_score": ..., ... }] // Raw array (auto-detected)CSV β any CSV with recognizable column names. AURA auto-normalizes column variants:
| Canonical Field | Also recognized as |
|---|---|
timestamp |
date, created_at, ts |
platform |
source, network |
engagement_score |
engagement, score, value |
If events aren't present in the data, AURA derives them automatically from anomaly clusters grouped by event_id.
Drag & Drop is supported β or click to browse. On successful upload, data is saved to Firestore and appears in your history.
Toggle Go Live to activate real-time simulation:
- Dashboard auto-refreshes every 5 seconds
- New mock data is generated on each tick
- A toast notification and notification log entry fire on each refresh
- The Live button pulses with a visual indicator while active
Designed to simulate the experience of monitoring a live feed β ideal for demos or testing.
Every non-mock upload is persisted to Firestore under your user account.
- Lists your 10 most recent analysis runs, sorted newest-first
- Each entry shows: filename, anomaly count, event count, timestamp
- Click any history entry to restore that exact dataset back into the dashboard β including all charts and filters
Data is stored in a proper subcollection structure:
users/{uid}/runs/{runId}/anomalies/{0..N}
users/{uid}/runs/{runId}/events/{0..N}
A lightweight in-app event log:
- Fires on: login, logout, file upload, history save, live refresh
- Notification bell with a pulsing dot indicator when unread items exist
- Dropdown panel with timestamps (JetBrains Mono formatted)
- One-click Clear All
- Capped at 20 entries β FIFO eviction
Export your currently filtered event dataset as a .csv file:
event_id, event_label, dominant_platform, dominant_topic,
post_count, confidence_mean, event_intensity, start_time, end_time
Respects all active filters β what you see is what you export.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT BROWSER β
β β
β ββββββββββββ ββββββββββββββββ βββββββββββββββββ β
β β Landing β β Auth Pages β β App Shell β β
β β Page β β Login/Signup β β Dashboard β β
β ββββββββββββ ββββββββββββββββ β Events Tab β β
β β History Tab β β
β β Settings Tab β β
β βββββββββββββββββ β
β β β
β ββββββββββββ΄βββββββββββ β
β β services/api.js β β
β β (Firebase layer) β β
β ββββββββββββ¬βββββββββββ β
βββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ
β
βββββββββββββββΌβββββββββββββββ
β FIREBASE β
β β
β Authentication β
β ββ Email/Password β
β ββ Google OAuth β
β β
β Firestore Database β
β ββ users/{uid} β
β ββ profile doc β
β ββ prefs β
β ββ runs/{runId} β
β ββ anomalies/* β
β ββ events/* β
ββββββββββββββββββββββββββββββ
AURA was designed from scratch with a cyber-intelligence aesthetic β dark, precise, data-dense.
| Token | Value |
|---|---|
| Primary | #8b5cf6 (Violet) |
| Secondary | #06b6d4 (Cyan) |
| Success | #10b981 (Emerald) |
| Danger | #f43f5e (Rose) |
| Background | #020617 (Near-black) |
| Display Font | Syne (800 weight) |
| Body Font | DM Sans |
| Mono Font | JetBrains Mono |
Animated elements: ambient background blobs, grid overlay, skeleton loaders, shimmer states, live ticker, badge pulse, scroll-based animations.
Anomaly Record Schema
interface Anomaly {
timestamp: string; // ISO-8601
platform: string; // "Twitter" | "Instagram" | ...
topic_category: string; // "Politics" | "Sports" | ...
engagement_score: number; // 0β100
sentiment_score: number; // -1 to +1
anomaly_pred: 0 | 1; // 1 = anomaly
detected_type: "spike" | "drop";
anomaly_reason: string;
confidence_score: number; // 0.5β1.0
anomaly_strength: number; // 0β5
hashtags: string;
event_id: string; // "EVT001"
}Event Record Schema
interface Event {
event_id: string;
event_label: string;
dominant_platform: string;
dominant_topic: string;
post_count: number;
engagement_max: number;
confidence_mean: number; // 0.5β1.0
event_intensity: "low" | "medium" | "high" | "critical";
start_time: string; // ISO-8601
end_time: string; // ISO-8601
top_hashtags: string;
detected_type: "spike" | "drop";
ai_explanation: string;
}# 1. Clone the repo
git clone https://github.com/your-username/aura-v2.git
cd aura-v2
# 2. Open frontend/
# β See frontend/README.md for full setup instructions
# 3. Configure Firebase
# β Add your Firebase config to frontend/app.js (firebaseConfig object)
# β Enable Email/Password + Google Auth in Firebase Console
# β Create a Firestore database
# 4. Open in browser (no build step required)
open frontend/index.html
# or: npx serve frontend/| Layer | Technology |
|---|---|
| UI | Vanilla HTML5 + CSS3 + JavaScript (ES2022) |
| Charts | Chart.js 4.4 |
| Auth | Firebase Authentication (Email + Google OAuth) |
| Database | Cloud Firestore |
| Fonts | Google Fonts (Syne, DM Sans, JetBrains Mono) |
| Build | None β zero-dependency frontend |
- Real ML backend (Python FastAPI + scikit-learn anomaly detection)
- WebSocket support for true real-time streaming
- Custom alert thresholds per user
- Team workspaces (shared analysis runs)
- Twitter/Reddit API integrations for live data ingestion
- Export to PDF report
MIT β do whatever you want with it. Attribution appreciated but not required.
Built with obsession over details. Every pixel intentional.
AURA β See what the internet doesn't want you to miss.