<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Analytics on Landry Zetam - Tech Blog</title><link>https://blog.landryzetam.net/tags/analytics/</link><description>Recent content in Analytics on Landry Zetam - Tech Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 08 Aug 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.landryzetam.net/tags/analytics/index.xml" rel="self" type="application/rss+xml"/><item><title>Building an Oura Ring Health Dashboard with Streamlit</title><link>https://blog.landryzetam.net/posts/oura-dashboard/</link><pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/oura-dashboard/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Oura Dashboard is a Streamlit-based web application deployed in the Fako cluster that provides interactive visualization of health data collected from the Oura Ring. It connects to the PostgreSQL database populated by the Oura Collector service and presents comprehensive health insights through charts, graphs, and analytics. The dashboard is secured with OAuth2 authentication and provides personalized health tracking capabilities for sleep, activity, readiness, and heart rate metrics.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Interactive Visualizations&lt;/strong>: Real-time charts and graphs using Streamlit&lt;/li>
&lt;li>&lt;strong>Comprehensive Metrics&lt;/strong>: Sleep, activity, readiness, and HRV analytics&lt;/li>
&lt;li>&lt;strong>OAuth2 Authentication&lt;/strong>: Secure access with OAuth2 proxy&lt;/li>
&lt;li>&lt;strong>PostgreSQL Integration&lt;/strong>: Direct database queries for data&lt;/li>
&lt;li>&lt;strong>Responsive Design&lt;/strong>: Mobile-friendly interface&lt;/li>
&lt;li>&lt;strong>Health Trends&lt;/strong>: Long-term pattern analysis&lt;/li>
&lt;li>&lt;strong>Custom Reports&lt;/strong>: Exportable health summaries&lt;/li>
&lt;li>&lt;strong>Real-time Updates&lt;/strong>: Auto-refresh capabilities&lt;/li>
&lt;/ul>
&lt;h2 id="architecture">Architecture&lt;/h2>
&lt;h3 id="components">Components&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Streamlit App&lt;/strong>: Python-based web dashboard&lt;/li>
&lt;li>&lt;strong>OAuth2 Proxy&lt;/strong>: Authentication layer&lt;/li>
&lt;li>&lt;strong>Service&lt;/strong>: ClusterIP on port 8501&lt;/li>
&lt;li>&lt;strong>Ingress&lt;/strong>: HTTPS access with authentication&lt;/li>
&lt;li>&lt;strong>External Secrets&lt;/strong>: AWS Secrets Manager integration&lt;/li>
&lt;li>&lt;strong>Database Connection&lt;/strong>: PostgreSQL read access&lt;/li>
&lt;/ol>
&lt;h3 id="resource-requirements">Resource Requirements&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Memory&lt;/strong>: 256Mi (request), 512Mi (limit)&lt;/li>
&lt;li>&lt;strong>CPU&lt;/strong>: 100m (request), 500m (limit)&lt;/li>
&lt;li>&lt;strong>Storage&lt;/strong>: EmptyDir for temporary data&lt;/li>
&lt;li>&lt;strong>Port&lt;/strong>: 8501 (Streamlit default)&lt;/li>
&lt;/ul>
&lt;h2 id="configuration">Configuration&lt;/h2>
&lt;h3 id="environment-settings">Environment Settings&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Parameter&lt;/th>
&lt;th>Value&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>DATABASE_NAME&lt;/code>&lt;/td>
&lt;td>&lt;code>app&lt;/code>&lt;/td>
&lt;td>PostgreSQL database&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>DAYS_TO_BACKFILL&lt;/code>&lt;/td>
&lt;td>&lt;code>7&lt;/code>&lt;/td>
&lt;td>Default data range&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>LOG_LEVEL&lt;/code>&lt;/td>
&lt;td>&lt;code>INFO&lt;/code>&lt;/td>
&lt;td>Application logging&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>API_TIMEOUT&lt;/code>&lt;/td>
&lt;td>&lt;code>30&lt;/code>&lt;/td>
&lt;td>Query timeout&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="oauth2-configuration">OAuth2 Configuration&lt;/h3>
&lt;p>Protected by OAuth2 proxy for secure access:&lt;/p></description></item></channel></rss>