feat: Remove Caddy and Docker configuration; add Express server with health checker endpoint

This commit is contained in:
Marco Gallegos
2025-11-24 20:09:02 -06:00
parent 227f887c78
commit 5c13fa51c3
6 changed files with 77 additions and 80 deletions

View File

@@ -1,19 +1,37 @@
# Soul:23 coming soon page
A responsive landing page built with Bootstrap 4 that keeps a countdown and lets visitors request updates via the email form. A live preview is available at https://solu23.cloud.
Una landing page responsive Built con Bootstrap 4 que muestra una cuenta regresiva y un formulario de notificaciones. Se accede a una versión viva en https://solu23.cloud.
**Author:** Marco Gallegos
## Subscription form
## Instalación local
The notification form is purely client-side; fill it out, but no emails are sent or stored until you connect it to your own backend.
```bash
npm install
npm start
```
## Changing the countdown target
El servidor Express sirve todos los assets desde la raíz y expone `/healthchecker` con el script de salud como `text/plain`, listo para que operadores lo descarguen con `curl`.
The timer reads its target date from the `data-date` attribute on the `#countdown-timer` element in `index.html`. Update that attribute to any valid timestamp, for example:
## Deploy con Coolify / Traefik
1. Importa el repositorio como app Docker en Coolify.
2. Elige el `Dockerfile` del proyecto, expone el puerto `3000` (ya definido en el contenedor).
3. Coolify/Traefik se encargan del TLS; usa el dominio que asignas en la app.
4. Si necesitas alertas, define la variable de entorno `WEBHOOK_URLS` antes de levantar la app.
Una vez desplegado podrás invocar el verificador con:
```bash
curl https://tudominio.cloud/healthchecker
```
## Contador y formulario
El componente de tiempo lee el atributo `data-date` en `#countdown-timer`. Cámbialo por cualquier fecha válida:
```html
<div id="countdown-timer" data-date="January 17, 2025 03:24:00">
```
If you prefer keeping the attribute dynamic, reassign the `countDownDate` variable inside `js/countdown.js` before the interval starts.
Si prefieres programarlo con JavaScript, reasigna la variable `countDownDate` dentro de `js/countdown.js` antes de que empiece el intervalo.