Blog

Building a Cricket Stats Dashboard with AWS

15 November 2024 · 6 min
CricketAWSData

The Idea

I wanted to track my cricket performance over time: batting average, strike rate, scores by venue, performance against different bowling types. Nothing fancy, just a personal dashboard.

The Stack

S3: Store match data as JSON files (one file per match)

Lambda: Process new match data, calculate stats

DynamoDB: Store aggregated statistics

QuickSight: Visualize trends and patterns

EventBridge: Trigger weekly summary emails

The Data Model

Each match file looks like this:

{
  "date": "2024-11-10",
  "venue": "Local Ground",
  "opposition": "Team X",
  "innings": {
    "runs": 45,
    "balls": 38,
    "fours": 6,
    "sixes": 1,
    "dismissal": "caught",
    "bowling_type": "pace"
  }
}

Simple, easy to update from my phone after a match.

The Processing

Lambda function triggered on S3 upload:

1. Read the new match data 2. Calculate match-level stats (strike rate, boundary %) 3. Update career aggregates in DynamoDB 4. Trigger QuickSight refresh

The Dashboard

QuickSight shows: - Career batting average over time - Strike rate by venue - Performance vs pace vs spin - Recent form (last 10 innings) - Best partnerships

What I Learned

Keep it simple: I started with complex schemas and multiple tables. Simplified to one S3 file per match and it's much easier to maintain.

Manual input is fine: I considered OCR from scorecards or API integrations. Typing 5 fields after a match is actually faster.

Visualizations matter: Seeing my average trend upward is more motivating than I expected. Data-driven practice works.

Cost

Basically free: - S3: ~$0.01/month - Lambda: Free tier covers it - DynamoDB: Free tier covers it - QuickSight: $9/month (only cost)

Next Steps

I'm thinking about: - Adding bowling stats - Comparing my stats to professional benchmarks - Predicting optimal batting position based on conditions

If you're interested in the code, let me know. Happy to share the Lambda functions and QuickSight templates.

Discuss
Thoughts on this?

I'd love to hear your take. Reach out via email or LinkedIn.