Bringing SolarEdge and SaskPower data together in a simple dashboard.
  • HTML 51.4%
  • Python 48.1%
  • Shell 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-06-20 13:02:21 -06:00
app Add weekly view, automatic SolarEdge sync 2025-06-20 11:52:49 -06:00
docs Refactor admin page into settings and functions sections 2025-06-19 15:55:19 -06:00
scripts Remove deprecated import_solar_history.py (contained hardcoded API key), finalize admin UI/UX, update README and ROADMAP for June 2025 milestone 2025-06-20 17:20:34 +00:00
.gitignore Fix weather import: use Open-Meteo archive endpoint, remove cloudcover, and ensure robust weather data import. Add future task for automating weather import. 2025-06-19 16:31:50 +00:00
readme-shortcut development.txt Initial commit 2025-06-19 03:57:13 +00:00
README.md Add weekly view, automatic SolarEdge sync 2025-06-20 11:52:49 -06:00
readme.txt Initial commit 2025-06-19 03:57:13 +00:00
requirements.txt Add weekly view, automatic SolarEdge sync 2025-06-20 11:52:49 -06:00
ROADMAP.md Add weekly view, automatic SolarEdge sync 2025-06-20 11:52:49 -06:00
watch_csv.sh Add development roadmap 2025-06-18 23:02:52 -06:00

SolarScope

A modern, mobile-friendly dashboard for visualizing and analyzing your solar and utility (SaskPower) data.


🛠️ Tech Stack

  • Backend: Flask (Python)
  • Frontend Graphs: Chart.js v4 (responsive, mobile-friendly)
  • Styling: Tailwind CSS
  • Dynamic Data: AJAX (vanilla JS or HTMX)
  • CSV Import: Supports SaskPower 15-minute interval data
  • Optional: chartjs-plugin-zoom for advanced touch/pinch/zoom

🚀 Quickstart

  1. Clone and install dependencies:
    git clone https://github.com/yourusername/solarscope.git
    cd solarscope
    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    
  2. Initialize the database:
    python3 scripts/init_db.py
    
  3. Run the server:
    python3 app/app.py
    
  4. Visit:

📊 Features

  • Interactive graphs for power usage and solar generation
  • Mobile-first: Responsive layout, touch-friendly graphs
  • Upload SaskPower CSV/ZIP: Drag-and-drop or select your data file
  • Day/week toggle with daily and weekly summaries
  • Download your data as CSV
  • Admin page: Streamlined settings for SolarEdge API, weather location (with validation and feedback), and user-friendly upload/download tools
  • Improved error handling and feedback throughout the admin panel
  • Automatic SolarEdge sync every 15 minutes

🖼️ Architecture

  • Flask serves HTML, API endpoints, and static files
  • Chart.js renders graphs (line, bar, area)
  • Tailwind CSS for layout, spacing, and mobile UX
  • AJAX/HTMX fetches new data for charts when user changes date or toggles filters

🔧 Extending/Customizing

  • Add new chart types: Edit the dashboard JS and add new Flask endpoints as needed
  • Add new data sources: Implement new importers (see routes.py)
  • Style tweaks: Edit Tailwind classes in the HTML

📱 Mobile UX Tips

  • Use w-full and h-64 on chart containers
  • Add horizontal scroll (overflow-x-auto) for long time series
  • Use sticky summary cards for quick daily totals
  • Use button groups for quick date filters ("Today", "This Week", etc.)

📅 Roadmap (see ROADMAP.md for details)

  • Modular Flask backend
  • File upload and CSV import
  • Chart.js v4 integration
  • SolarEdge API integration with automatic 15-minute sync
  • Admin page redesign and error feedback improvements
  • Enhanced mobile dashboard
  • Live updating (HTMX or Flask-Sock)

License

MIT