尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Interactive Chicago tax incentive discovery tool — map, pre-qualification survey, and zone eligibility checker across 12 programs
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Interactive Chicago business incentive discovery tool for Southeast Chicago. The app helps a business owner, developer, or community partner enter an address, inspect overlapping incentive zones, understand likely program eligibility, and generate a practical report.
Live site: chicagoincentiveexplorer.com
public/data// - Landing page with address/business lookup and quick links./report - Report wizard and instant report generation from lat, lon, and addr URL params./map - Interactive incentive map with zone layers, vacant properties, parcels, zoning, presets, and map snapshots./programs - Incentive program directory with level and industry filters./locate - Location finder for sector/zoning fit and area recommendations./check - Retired compatibility route that forwards old links to /report./faq - Public FAQ.The app is designed to keep working without production services:
DATABASE_URL is configured, API routes can query Neon/PostGIS for businesses, programs, zones, census data, stats, assets, stacking rules, and vacant properties./api/parcel uses CookViewer by default. Set PARCEL_DB_LOOKUPS_ENABLED=true only in an environment whose Neon parcels table has been migrated and populated; production intentionally does not store that parcel snapshot.public/data/./api/zones/check returns zone membership from PostGIS when available; client-side Turf.js handles static fallback checks./api/zones/geojson/[key] first and fall back to public/data/zones/*.geojson.npm install
npm run dev
npm run lint
npm run test
npm run test:e2e # full Chromium regression suite
npm run test:e2e:browsers # focused Mobile Safari/WebKit + Firefox smoke
npm run build
Offline data refresh scripts:
npm run data:acs2024 # fetch 2024 ACS 5-year Cook County tract data and static fallback
Database maintenance scripts currently cover vacant-property and workspace data:
npm run db:migrate # vacant_properties + workspace/auth migrations
npm run db:seed # vacant property sync
npm run db:migrate:workspace # Google auth + saved reports/workspace tables
npm run db:reset # migration + sync
These DB scripts require DATABASE_URL.
NEXT_PUBLIC_MAPBOX_TOKEN=...
DATABASE_URL=...
PARCEL_DB_LOOKUPS_ENABLED=true # only for a migrated, populated parcels table
AUTH_SECRET=...
NEXTAUTH_URL=...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
SOCRATA_APP_TOKEN=...
UPSTASH_REDIS_REST_URL=...
UPSTASH_REDIS_REST_TOKEN=...
RESEND_API_KEY=...
PASSWORD_RESET_EMAILS_ENABLED=true
PUBLIC_INVESTMENT_ACCESS_EMAILS_ENABLED=true
AUTH_EMAIL_FROM="Chicago Incentive Explorer <[email protected]>"
REPORT_EMAILS_ENABLED=true
REPORT_EMAIL_FROM="Chicago Incentive Explorer <[email protected]>"
INCENTIVE_HELP_INBOX=...
Only NEXT_PUBLIC_MAPBOX_TOKEN is required for the interactive map to render. DATABASE_URL, AUTH_SECRET, and NEXTAUTH_URL are required for account login, saved reports, and workspace features. GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET enable Google login; the option is hidden when either value is absent. Email/password signup also requires the workspace migration so the users.password_hash column exists. Password recovery is fail-closed and requires DATABASE_URL, RESEND_API_KEY, and PASSWORD_RESET_EMAILS_ENABLED=true. Public Investment beta verification, approval invitations, and passwordless sign-in are fail-closed and require DATABASE_URL, AUTH_SECRET, RESEND_API_KEY, and PUBLIC_INVESTMENT_ACCESS_EMAILS_ENABLED=true; staff decisions use the existing analytics-admin session. Report delivery is fail-closed and requires DATABASE_URL, RESEND_API_KEY, and REPORT_EMAILS_ENABLED=true; INCENTIVE_HELP_INBOX receives staff notifications only when a report recipient explicitly requests Chamber support. The rest are optional service integrations; the app should degrade gracefully when they are absent.
app/page.tsx - landing page and primary lookup entry.app/report/page.tsx - report wizard and instant report flow.app/workspace/page.tsx - saved project/report workspace for signed-in users.components/map/MapView.tsx - main interactive map implementation.lib/zone-check.ts - DB-first and Turf fallback zone checking.lib/zone-response.ts - normalized zone API response handling.lib/confidence-engine.ts - program eligibility confidence scoring.lib/report-engine.ts - report data generation and narrative assembly.lib/pdf-report.ts - PDF report rendering.lib/industries-data.ts - industry-to-program mapping.public/data/ - static fallback data.npm run test runs Vitest unit tests only.tests/e2e/ and can be run with:npx playwright test
For browser verification of /map, make sure NEXT_PUBLIC_MAPBOX_TOKEN is set before starting the dev server.