From 9bf1db9889ecd76852182f9b95506d764759803b Mon Sep 17 00:00:00 2001 From: user01 Date: Fri, 15 May 2026 16:26:14 +0900 Subject: [PATCH] Initial commit: Map Flag Placer with Leaflet, Excel import/export, admin boundaries, and photo upload --- index.html | 807 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sample.xlsx | Bin 0 -> 5993 bytes server.py | 9 + 3 files changed, 816 insertions(+) create mode 100644 index.html create mode 100644 sample.xlsx create mode 100644 server.py diff --git a/index.html b/index.html new file mode 100644 index 0000000..c0f279b --- /dev/null +++ b/index.html @@ -0,0 +1,807 @@ + + + + + +Flag Placer + + + + + + + + + +
+ + + + diff --git a/sample.xlsx b/sample.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c94a934cd3e5765ee7a9bf31029a2af5b57dadf0 GIT binary patch literal 5993 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