This project provides an accessible, easy-to-understand unofficial resource for navigating policies and relevant education code sections for multiple configurable school districts or educational entities. It's implemented as a static website with:
- District Selection: Allows users to choose the specific district they are interested in.
- Synthesized Policy Summaries: Presents simplified summaries of Board Policies (BP), Administrative Regulations (AR), and relevant Education Code sections for the selected district.
- AI Chat Interface: An in-browser chat powered by WebLLM and KuzuDB WASM, allowing users to ask natural language questions and receive contextually relevant answers based only on the selected district's data. All processing happens client-side for privacy and efficiency.
The goal is to improve the accessibility and findability of policy information for parents, students, staff, and community members within the configured districts, while ensuring privacy and accuracy. Data collection and site updates are automated via GitHub Actions.
This project uses pnpm for package management.
-
Install Dependencies:
pnpm install
-
Data Preparation & Geocoding (Required for
pnpm run prepareorpnpm run build:data)The data preparation step (
pnpm run prepareorpnpm run build:data) requires a local geocoding service (Nominatim) running via Docker to find coordinates for districts and schools.- Install Docker: Ensure you have Docker installed and running on your system.
- Download California OSM Data: Run the following command to download the required
california-latest.osm.pbffile into the./pipeline/data/directory:pnpm run download:osm
- Run the Nominatim Container: Open a terminal and run the following command. This will download the
mediagis/nominatimimage (if not already present), start a container namednominatim, import the California data from./pipeline/data(this might take a while the first time), and expose the geocoding service on port 8080.Keep this terminal running while you execute the data preparation scripts (pnpm run docker:nominatim
pnpm run prepareorpnpm run build:data).
-
Run Development Server: Starts a local development server with hot reloading. Requires data to be prepared first (see step 2 or use pre-committed data).
pnpm run dev
-
Build for Production: Generates the static site in the
dist/directory.pnpm run build
-
Preview Production Build: Serves the contents of the
dist/directory locally. Use this to test the final build before deployment.pnpm run preview
- Frontend Framework: Astro (using Vite for bundling)
- Mapping Libraries: Leaflet, Proj4js, Leaflet.markercluster, leaflet-geosearch
- LLM (In-Browser): WebLLM (mlc-ai)
- Graph DB (In-Browser): KuzuDB WASM
- Data Pipeline: TypeScript, GitHub Actions
- LLM (Synthesis - Build Time): External LLM API
- Hosting: GitHub Pages
This project uses Vitest for unit and component testing. For more details on our testing strategy, tools, and coverage, please see the TESTING_PLAN.md document.
This project is licensed under the terms of the LICENSE file.