bunker-admin a77306fac2 Initial v2 commit: complete rebuild with unified API + React admin
Phase 1-14 complete:
- Unified Express.js API (TypeScript, Prisma ORM, PostgreSQL 16)
- React Admin GUI (Vite + Ant Design + Zustand)
- JWT auth with refresh tokens
- Influence: Campaigns, Representatives, Responses, Email Queue
- Map: Locations, Cuts, Shifts, Canvassing System
- NAR data import infrastructure (2025 format)
- Listmonk newsletter integration
- Landing page builder (GrapesJS)
- MkDocs + Code Server integration
- Volunteer portal with GPS tracking
- Monitoring stack (Prometheus, Grafana, Alertmanager)
- Pangolin tunnel integration

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 10:05:04 -07:00

38 lines
1.3 KiB
JavaScript

// Global configuration
export const CONFIG = {
DEFAULT_LAT: parseFloat(document.querySelector('meta[name="default-lat"]')?.content) || 53.5461,
DEFAULT_LNG: parseFloat(document.querySelector('meta[name="default-lng"]')?.content) || -113.4938,
DEFAULT_ZOOM: parseInt(document.querySelector('meta[name="default-zoom"]')?.content) || 11,
REFRESH_INTERVAL: 30000, // 30 seconds
MAX_ZOOM: 20,
MIN_ZOOM: 2,
domain: null // Will be loaded dynamically
};
// Load domain configuration from server
export async function loadDomainConfig() {
try {
const response = await fetch('/api/config/domain');
if (response.ok) {
const data = await response.json();
CONFIG.domain = data.domain;
updateHomepageLinks();
} else {
console.error('Failed to load domain config:', response.status);
}
} catch (error) {
console.error('Error loading domain config:', error);
}
}
// Update homepage links with the configured domain
function updateHomepageLinks() {
if (CONFIG.domain) {
const homepageUrl = `https://homepage.${CONFIG.domain}`;
const homepageLink = document.getElementById('homepage-link');
if (homepageLink) {
homepageLink.href = homepageUrl;
}
}
}