Publish species-occurrence maps from plain text files — no server, no database.
Use it online
Repo
Option A — Start blank (fastest)
app/data/
(see specs below).app/index.html
locally or publish on GitHub Pages.Option B — Convert your spreadsheet
data_mappoints.txt
to app/data/
.Publish on GitHub Pages
main
, Folder: / (root)
https://sanriomisintaro.github.io/biodiversity-webmap-template/
app/
index.html
assets/
css/styles.css
js/app.js
data/
data_species.txt
data_mappoints.txt
data_language.txt
data_setting.txt
images/ # photos/icons referenced from data_species.txt
docs/ # this page
tools/
csv-to-txt/ # CSV converter (browser-only)
xlsx-to-txt/ # XLSX converter (browser-only)
template/ # blank starter you can copy
data_species.txt
Pipe-separated, 3 columns:
name | color | image
#377eb8
)app/images/
(optional)Example
Perkutut Jawa (Geopelia striata) | #377eb8 | images/PerkututJawa.jpg
data_mappoints.txt
Pipe-separated, 9 columns in this exact order:
date | time | species | count | district | coord | habitat | location | activity
YYYY-MM-DD
recommended (DD/MM/YYYY
and DD-MM-YYYY
are auto-normalized by the converters)HH:MM
(24-h) or H:MM AM/PM
(auto-normalized)name
in data_species.txt
-1.481, 124.846
or DMS/DM N 01°28.717' E 124°53.518'
```
Example
2025-08-21 | 06:15 | Perkutut Jawa (Geopelia striata) | 2 | Sario | -1.481, 124.846 | Pekarangan | Pohon ketapang depan rumah | Menyanyi
data_language.txt
INI-style blocks + key=value
pairs. Unknown keys are ignored.
[id]
appTitle=Informasi Sebaran Burung di Kota Manado
legendTitle=Spesies
details.date=Tanggal
...
[en]
appTitle=Birds Distribution Information in Manado
legendTitle=Species
details.date=Date
...
Common keys: appTitle
, legendTitle
, mapDefault
, mapSatellite
,
details.date
, details.time
, details.count
, details.coord
, gmapsButton
, etc.
data_setting.txt
Key = value lines controlling defaults:
scale = 12 # initial zoom (city ~12, neighborhood ~15)
theme = light # light | dark
language = local # local=id, translate=en
mapType = default # default | satellite | terrain
showImages = true # true/false | 1/0
showRoad = 1 # 0=show road labels, 1=hide labels
data_mappoints.txt
.# from the repo root
python -m http.server 8000
# then open http://localhost:8000/app/
##Converters (details)
CSV to TXT: detects Indonesian/English headers, normalizes dates/times, previews, then downloads data_mappoints.txt. Open:
XLSX to TXT: supports multi-sheet workbooks, header synonyms, date/time normalization, preview, download. Open:
Both run entirely in your browser (no upload).
If needed, generalize or mask coordinates before publishing (e.g., round to 0.01° or remove precise sites). Please never publish the exact locations of sensitive taxa. We mean it, especially for endangered and protected taxa.
species
values in data_mappoints.txt
must match name
in data_species.txt
.images/Jalak.jpg
) and filename case.key = value
formatting (no extra characters).# in the repo root
python -m http.server 8000
# then open http://localhost:8000/app/
If you use this template in a publication or report, please cite the repository and the archived release DOI (if available) .
Happy mapping!