# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] ### Added - Added a multi-stage `Dockerfile` and `docker-compose.yml` for running the web app, API, worker, and PostGIS database as a local container stack. ### Changed - Updated the Docker Compose deployment config to read app secrets and Vite build settings from environment variables, and added a `.dockerignore` to keep container builds leaner. - Aligned the Docker Compose and example environment settings so local and deployment configs use the same variable names and document URL-encoded database passwords when needed. ## [2026-04-19] ### Added - Added separate `Research` and `Results` workspaces so new runs and saved run browsing live in distinct flows while preserving bundled map selection. - Added dedicated Basic and Deep Research results views, plus a public landing page and dedicated auth route for the unauthenticated experience. ### Changed - Made Basic research map-first by requiring a dropped pin or current location, sending coordinate-based searches through the API, and cleaning up shared map presentation. - Simplified shared Google Maps rendering by moving Basic, Deep Research, and result review maps onto the same cleaner visual style. ### Fixed - Fixed local logout behavior so the session cookie is cleared consistently and optional session-id logout requests can remove the active server session record. ## [2026-04-12] ### Changed - Improved local development networking by making API env loading work with `.env.local`, adding LAN-friendly API URL fallback behavior, and fixing development CORS handling. - Fixed local research inserts so nullable Google Places coordinates no longer break business upserts. - Improved postal data tooling with streaming imports, clearer CRS validation, progress logs, and a status command for checking imported areas and adjacency counts. ### Added - Added postal-area import and adjacency build scripts for US ZIP/ZCTA and Canada FSA datasets. - Added a dedicated `Deep Research` view with map pin placement, propagation preview overlays, batch history, and bundled map navigation. - Added backend deep-research preview, batch creation, and batch detail APIs, reusing the existing research engine to create one child search per postal area. ### Removed - Removed stale local metadata, placeholder postal seeding code, and leftover Supabase-era repository artifacts. ## [2026-03-27] ### Changed - Migrated the app from a Supabase runtime to a local Fastify API with PostgreSQL, PostGIS, and cookie-based session auth. - Reworked the research experience with the `Leads4less` branding, the renamed `Research` view, a top-form layout, and a filterable grid of research jobs. - Added local API wiring for research, dashboard, and map flows while keeping selected-job map behavior and broader lead retrieval support. ### Added - Added local backend scaffolding under `server/` for auth, health checks, search routes, database access, and worker startup. - Added local database migrations and scripts under `db/`, including the first PostGIS-enabled schema and migration runner. - Added shared app types and frontend API/auth helpers for the local stack. ### Removed - Removed the Supabase browser client, Edge Function runtime, and Supabase migration artifacts from the active app stack. ## [2026-03-26] ### Added - Initial Leads4Less app with React and Vite. - Supabase-backed authentication, lead storage, and search job persistence. - Research, dashboard, and map views for running searches, browsing leads, and visualizing results on Google Maps.