# planner.html (placeholder Mapbox token + light style + loading overlay) planner_html = """ SprinterXPRESS — Route Planner Ready
SprinterXPRESS Logo Loading Route Planner...
Powered by Mapbox
""" # manifest.json manifest_json = """{ "name": "SprinterXPRESS", "short_name": "SprinterXPRESS", "start_url": "/", "display": "standalone", "background_color": "#ffffff", "theme_color": "#000000", "icons": [ { "src": "/assets/icon-192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/assets/icon-512.png", "sizes": "512x512", "type": "image/png" } ] }""" # _redirects redirects_content = "/* /index.html 200" # Write files with open(os.path.join(base_dir, "index.html"), "w") as f: f.write(index_html) with open(os.path.join(base_dir, "planner.html"), "w") as f: f.write(planner_html) with open(os.path.join(base_dir, "manifest.json"), "w") as f: f.write(manifest_json) with open(os.path.join(base_dir, "_redirects"), "w") as f: f.write(redirects_content) # Folders os.makedirs(os.path.join(base_dir, "assets"), exist_ok=True) os.makedirs(os.path.join(base_dir, "backups"), exist_ok=True) # Backup copy with open(os.path.join(base_dir, "backups", "planner_backup.html"), "w") as f: f.write(planner_html) # Create ZIP zip_path = shutil.make_archive("/mnt/data/sprinterxpress-site", "zip", base_dir) zip_pathf