feat: prepare repo for release with sanitized docs, license, pre-commit hook, and CI/CD workflows

This commit is contained in:
2026-08-23 14:47:05 -07:00
parent c48b1ebbd5
commit 3191f3239b
7 changed files with 374 additions and 34 deletions
+56 -31
View File
@@ -1,58 +1,70 @@
# Brightwheel Memories & Reports Exporter Chrome Extension
# 🌟 Brightwheel Exporter (Chrome Extension)
A Chrome Extension (Manifest V3) that allows parents and guardians to bulk export all of their children's memories, high-resolution photos, videos, daily care reports (meals, naps, potty), learning milestones, and activity manifests from Brightwheel into an organized offline ZIP archive.
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Manifest V3](https://img.shields.io/badge/Manifest-V3-success.svg)](manifest.json)
[![Platform](https://img.shields.io/badge/Platform-Chrome%20Extension-orange.svg)](#installation)
> **Save and back up all your child's precious preschool & daycare memories, high-resolution photos, HD videos, daily care logs, and developmental milestones from Brightwheel.**
---
## ✨ Features
- **Full Data Manifest**: Exports complete student records, activities, and teacher notes in structured `manifest.json` format.
- **High-Resolution Media**: Downloads original full-size photos and videos organized neatly by year and month (`/YYYY/MM/photos/` & `.../videos/`).
- **Daily Care Logs**: Captures meal entries, nap start/end times and durations, diaper/potty logs, and medication logs.
- **Learning Milestones**: Backs up developmental milestones, curriculum tags, and teacher observations.
- **Attendance & Communication**: Includes check-in/out records, health screenings, and message history.
- **Spreadsheet Ready**: Generates an `activities.csv` spreadsheet compatible with Microsoft Excel, Numbers, and Google Sheets.
- **Offline Interactive Timeline Viewer**: Bundles a standalone `index.html` inside the exported ZIP so you can browse your child's photos, search captions, and filter events locally on your computer with no internet required.
- **Safe & Private**: Runs 100% locally in your browser. Seamlessly uses your active Brightwheel logged-in session cookies without asking for passwords or transmitting your family's data to third parties.
- **Smart Rate-Limiting**: Includes automatic exponential backoff (handling HTTP 429 throttling) and configurable pacing delays.
- 📸 **High-Resolution Media Archiver**: Downloads original, full-resolution photos and HD videos organized neatly into date folders (`/photos/YYYY-MM/` and `/videos/YYYY-MM/`).
- 📂 **Direct Local Folder Streaming**: Streams files directly to your chosen local folder via the **File System Access API**—no browser memory crashes or ZIP size limits!
- 📦 **Instant ZIP Archive Export**: One-click bundle creation using zero-compression `STORE` packaging for lightning-fast downloads.
- 🗓️ **Complete Daily Care Records**: Captures meals, exact nap start/end times and calculated durations, diaper & potty logs, check-in/out records, and medication logs.
- 🎯 **Milestones & Learning Observations**: Backs up developmental milestones, curriculum tags, and teacher notes.
- 🌐 **Interactive Offline Timeline Viewer**: Bundles a standalone, elegant `index.html` viewer inside your export so you can search captions, filter events, and relive memories locally with no internet required.
- 📊 **Spreadsheet & Developer Friendly**: Generates a clean `activities.csv` (compatible with Excel, Numbers, and Google Sheets) as well as unified `activities.json` / `manifest.json` files.
- 🛡️ **100% Private & Client-Side**: Operates entirely in your browser using your active logged-in Brightwheel session. No passwords, credentials, or child data are ever transmitted to any third-party servers.
- ⚡ **Smart Throttling & Rate-Limiting**: Built-in exponential backoff automatically handles API pacing and prevents HTTP 429 rate limit errors.
---
## 🚀 Installation (Load Unpacked in Chrome)
1. Open Google Chrome and navigate to `chrome://extensions/`.
2. Turn **ON** the **Developer mode** toggle in the top-right corner.
3. Click the **Load unpacked** button in the top-left corner.
4. Select this directory:
1. **Clone or download this repository:**
```bash
git clone https://github.com/CoderSherlock/brightwheel-exporter.git
```
/Users/haopengzhan/Documents/MyGit/brightwheel-exporter-chrome-extension
2. Open Google Chrome and navigate to:
```
5. The **Brightwheel Memories & Reports Exporter** icon will now appear in your Chrome toolbar!
chrome://extensions/
```
3. Enable **Developer mode** using the toggle switch in the top-right corner.
4. Click the **Load unpacked** button in the top-left corner.
5. Select the cloned `brightwheel-exporter` directory.
6. The **Brightwheel Exporter** icon will now appear in your browser toolbar!
---
## 📖 How to Use
1. Log into your Brightwheel account in Chrome at [https://schools.mybrightwheel.com](https://schools.mybrightwheel.com).
2. Navigate to your child's feed page (e.g. `https://schools.mybrightwheel.com/students/edda433b-2a24-4da7-bbd5-9f131b4b2565/feed`).
3. Click the **Brightwheel Exporter** icon in your browser toolbar (or click the floating **"Export Brightwheel Data"** button on the bottom right of the page).
2. Navigate to your child's page (or open any Brightwheel feed).
3. Click the **Brightwheel Exporter** extension icon in your Chrome toolbar (or click the floating **"Export Brightwheel Data"** button on the bottom right of the page).
4. Click **Open Exporter Dashboard**.
5. In the Dashboard:
- Select your child (or enter a custom student UUID).
- Choose your date range (**All Time**, **This Year**, or **Custom**).
- Select the content categories and export formats you want.
- Select your child from the dropdown (or enter a custom student UUID).
- Choose your date range (**All Time**, **This Year**, or **Custom Date Range**).
- Choose your save mode:
- **Save Directly to Local Folder** *(Recommended for large feeds)*
- **Download as ZIP Archive**
- Select the content categories and export formats you wish to include.
- Click **Start Complete Export**.
6. The extension will automatically harvest activities, download media with live progress tracking, and generate your downloadable ZIP archive!
6. Monitor the real-time progress bar and log window as your files and media are safely saved to your computer.
---
## 📁 Exported Archive Structure
Inside the downloaded `.zip` file, you will find:
## 📁 Exported Folder & Archive Structure
```
[ChildName]_[YYYY-MM-DD]/
├── index.html # Offline interactive timeline viewer
├── manifest.json # Complete raw structured data
├── activities.csv # Spreadsheet for Excel / Google Sheets
├── index.html # Interactive offline timeline viewer
├── activities.csv # Spreadsheet for Excel / Google Sheets / Numbers
├── activities.json # Complete unified structured data records
├── exporter_job_info.json # Metadata summary & statistics of the export
├── photos/
│ ├── 2026-08/
│ │ ├── 2026-08-20_abc123.jpg
@@ -67,5 +79,18 @@ Inside the downloaded `.zip` file, you will find:
## 🔒 Privacy & Security
- **Zero Data Collection**: This extension does not send any personal data, photos, credentials, or cookies to external servers. All requests happen strictly between your browser and Brightwheel/AWS S3.
- **Local Packaging**: The ZIP compression and HTML viewer creation happen entirely in your local browser memory using client-side JSZip.
- **No Remote Servers**: This extension is 100% open source and runs entirely on your local machine.
- **Session Authentication**: Uses your existing Brightwheel browser cookies securely. No logins or API keys are ever stored or shared.
- **Direct S3/CDN Downloads**: Media files are downloaded directly from Brightwheel's official AWS S3 buckets and CloudFront distribution endpoints straight to your disk.
---
## ⚠️ Disclaimer
This project is an independent, community-driven open-source tool. It is **not affiliated with, endorsed by, sponsored by, or associated with Brightwheel** or its parent companies. "Brightwheel" is a registered trademark of its respective owner.
---
## 📄 License
Distributed under the [MIT License](LICENSE). See `LICENSE` for more information.