feat: add Go microservice, Dockerfile, docker-compose, and API submission endpoint

This commit is contained in:
2026-08-12 17:20:03 +02:00
parent ad02939b88
commit 0ee82eb673
24 changed files with 316 additions and 6 deletions
+76
View File
@@ -0,0 +1,76 @@
// Namensauswahl: lädt Namen aus appsettings.json, Kartenauswahl + Abschluss
(function () {
const nameList = document.getElementById("nameList");
const summary = document.getElementById("summary");
const continueBtn = document.getElementById("continueBtn");
const selectedActivity = localStorage.getItem("selectedActivity");
const selectedDate = localStorage.getItem("selectedDate");
// Ohne Aktivität und Datum ergibt diese Seite keinen Sinn.
if (!selectedActivity) {
window.location.href = "activity.html";
return;
}
if (!selectedDate) {
window.location.href = "datetime.html";
return;
}
const dateLabel = new Date(`${selectedDate}T00:00:00`).toLocaleDateString("de-DE", {
weekday: "long",
day: "numeric",
month: "long",
year: "numeric",
});
summary.textContent = `${selectedActivity} am ${dateLabel} verrate mir, wer du bist.`;
let selectedName = null;
fetch("appsettings.json")
.then((response) => response.json())
.then((settings) => renderNames(settings.names || []))
.catch(() => {
nameList.textContent = "Namen konnten nicht geladen werden.";
});
function renderNames(names) {
const options = names.length > 0 ? names : ["Du weißt, wer ich bin"];
options.forEach((name) => {
const card = document.createElement("button");
card.type = "button";
card.className = "name-card";
card.dataset.name = name;
const icon = document.createElement("span");
icon.className = "icon";
icon.setAttribute("aria-hidden", "true");
icon.textContent = "💖";
const label = document.createElement("span");
label.className = "label";
label.textContent = name;
card.append(icon, label);
card.addEventListener("click", () => {
nameList.querySelectorAll(".name-card").forEach((c) => c.classList.remove("selected"));
card.classList.add("selected");
selectedName = name;
continueBtn.disabled = false;
});
nameList.appendChild(card);
});
}
continueBtn.addEventListener("click", () => {
if (!selectedName) {
return;
}
// Ablage für die spätere Anbindung an Datenbank/Storage
localStorage.setItem("selectedName", selectedName);
window.location.href = "checkout.html";
});
})();