Landing de Odin
  • TypeScript 59.6%
  • HTML 20%
  • CSS 19.6%
  • Dockerfile 0.8%
Find a file
Kendry Grullón 7e4503eba5
All checks were successful
Deploy odin.do / deploy (push) Successful in 4s
ci: quitar el paso de diagnostico temporal
Ya cumplio: la causa era ProtectSystem=strict en forgejo-runner, que dejaba
/var/www en solo lectura para el script de deploy pese a correr con sudo.
Queda documentado en un comentario del workflow.
2026-07-31 22:16:50 -04:00
.forgejo/workflows ci: quitar el paso de diagnostico temporal 2026-07-31 22:16:50 -04:00
site Adding og-image for correct rendering 2026-03-07 10:08:58 -04:00
.dockerignore Fixing build, again 2025-12-17 15:52:53 -04:00
.env.example Initial commit: odin.do site with CI/CD and epsilon integration 2026-02-20 14:23:59 -04:00
.gitignore Remove accidentally committed binary, add to .gitignore 2026-04-16 16:33:21 -04:00
build.ts migrating everything to bun. 2026-03-07 10:03:48 -04:00
Dockerfile migrating everything to bun. 2026-03-07 10:03:48 -04:00
package.json migrating everything to bun. 2026-03-07 10:03:48 -04:00
README.md migrating everything to bun. 2026-03-07 10:03:48 -04:00
server.ts Migrate config from Epsilon to Hub + add version (v1.1.0) 2026-04-16 16:32:46 -04:00
tsconfig.json migrating everything to bun. 2026-03-07 10:03:48 -04:00

odin.do

The odin.do company website featuring interactive 3D visualizations built with Three.js and GSAP.

Prerequisites

Setup

bun install
cp .env.example .env

Running

bun run build    # bundle frontend
bun run start    # serve on :7002
bun run dev      # build + serve with --watch

Open http://localhost:7002.

Configuration

Epsilon

In production, odin.do fetches its configuration from Epsilon, the centralized config manager. Only two env vars are needed at deploy time:

Variable Description
EPSILON_URL Epsilon server URL (e.g. http://tenma:8085)
EPSILON_API_KEY Service-specific API key (Bearer token)

At startup, the service calls GET /api/v1/config with an Authorization: Bearer <key> header. Epsilon returns a JSON response containing:

  • config — service-specific key/value pairs (same names as env vars)
  • global — shared branding/settings across all services

If Epsilon is unreachable or not configured, the service falls back to local env vars silently.

For local development, leave EPSILON_URL/EPSILON_API_KEY empty — config will be read from local env vars only.

Environment Variables

Variable Default Description
PORT 7002 Server port
EPSILON_URL - Epsilon config server URL
EPSILON_API_KEY - Epsilon API key for this service

Deployment

Deployed via Gitea Actions. On push to main:

  1. Builds the Docker image (single-stage Bun)
  2. Pushes to git.odin.do/odin-software/odin-do
  3. Watchtower picks up the new image and restarts the container

Production runs via docker-compose.yml on the proxy network.