An interactive map displaying grantees of the New Jersey Civic Information Consortium. The map automatically syncs with Airtable, so NJCIC staff can update grantee information in Airtable and see changes reflected on the map daily.
Live site: https://njcivicinfo.org/map/
The New Jersey Civic Information Consortium supports local journalism, civic engagement, and information equity projects throughout New Jersey. This interactive map visualizes the geographic distribution of grants, funding amounts, and project details across the state.
The map data is powered by Airtable and syncs automatically every morning at 7am ET.
- Interactive map powered by Leaflet.js and CARTO Voyager tiles
- Live sync with Airtable - Update grantees in Airtable, see changes on the map
- Custom markers showing organization initials
- Marker clustering with hover-to-expand functionality
- Filter by year (2021-2025), county, focus area, and status
- Detailed popups showing grant information, descriptions, and website links
- Support for organizations with multiple grants
- Sequential navigation through grantees with prev/next buttons
- Mobile-friendly with touch gestures
- Status indicators: Active (2024+) and Completed (pre-2024)
- 75 grantee organizations
- 99 total grants awarded
- $10.8+ million in funding
- Grant years: 2021-2025
Statistics updated December 2025. Data synced from Airtable.
Airtable → Automatic sync (7am ET daily) → Map updates
- NJCIC staff updates Airtable - Add, edit, or remove grantees
- Sync runs automatically - Every day at 7am ET via GitHub Actions
- Map displays new data - Visitors see updated information
To update the map immediately (without waiting for the daily sync):
Option 1: Visit the sync URL directly:
https://njcivicinfo.org/map/sync.php?key=[SECRET_KEY]
Option 2: Trigger via GitHub Actions:
- Go to the Actions tab in this repo
- Click "Sync Airtable Data"
- Click "Run workflow"
See the full staff guide: docs/NJCIC-Map-Guide.md
| Task | How to do it |
|---|---|
| Add new grantee | Add row in Airtable with all fields |
| Edit grantee | Edit the row in Airtable |
| Remove grantee | Check "Returned/Cancelled grant?" in Airtable |
| Get coordinates | Use latlong.net |
| Force immediate sync | Visit sync URL or use GitHub Actions |
- Node.js (v14 or higher)
- Modern web browser
# Clone the repo
git clone https://github.com/jamditis/njcic-grantees-map.git
cd njcic-grantees-map
# Install dependencies
npm install
# Start local server
npm startThe app will open at http://localhost:8080
njcic-grantees-map/
├── data/
│ └── grantees.json # Grantee data (synced from Airtable)
├── js/
│ └── app.js # Main application logic
├── scripts/
│ ├── sync-airtable.js # Node.js sync script (local use)
│ └── populate-airtable-coords.js # Push coordinates to Airtable
├── docs/
│ └── NJCIC-Map-Guide.md # Staff guide
├── .github/
│ └── workflows/
│ └── sync-airtable.yml # GitHub Actions daily sync
├── index.html # Main HTML file
└── README.md
# Note: sync.php is deployed directly to the server (not in this repo)
# to keep the Airtable API key secure.
# Set environment variable
export AIRTABLE_PAT=your_pat_here
# Run sync
npm run sync- Leaflet.js - Interactive mapping
- CARTO Voyager - Map tiles
- Leaflet.markercluster - Marker clustering
- Tailwind CSS - Styling (via CDN)
- Airtable API - Data source
- GitHub Actions - Automated sync
- PHP - Server-side sync script
MIT License
Created by Joe Amditis for the Center for Cooperative Media at Montclair State University.
Data source: New Jersey Civic Information Consortium

