chore: bootstrap initial HLL Vietnam project structure
This commit is contained in:
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.venv/
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
node_modules/
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
23
AGENTS.md
Normal file
23
AGENTS.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# AGENTS
|
||||||
|
|
||||||
|
Este repositorio está preparado para ser orquestado mediante roles especializados. La coordinación debe priorizar claridad, cambios pequeños y documentación técnica suficiente para sostener el crecimiento del proyecto.
|
||||||
|
|
||||||
|
## Roles previstos
|
||||||
|
|
||||||
|
- PM
|
||||||
|
- Analista
|
||||||
|
- Backend Senior
|
||||||
|
- Frontend Senior
|
||||||
|
- Arquitecto de Base de Datos
|
||||||
|
- Arquitecto .NET
|
||||||
|
- Diseñador gráfico
|
||||||
|
- Experto en interfaz
|
||||||
|
|
||||||
|
## Reglas de trabajo
|
||||||
|
|
||||||
|
- No romper la estructura del repositorio sin una justificación técnica clara.
|
||||||
|
- Documentar las decisiones importantes en `docs/decisions.md`.
|
||||||
|
- Hacer cambios pequeños, verificables y fáciles de revisar.
|
||||||
|
- Mantener coherencia visual con una identidad militar, Vietnam y táctica.
|
||||||
|
- Considerar Python como backend principal previsto del proyecto.
|
||||||
|
- No introducir frameworks o complejidad innecesaria en esta fase inicial.
|
||||||
65
README.md
Normal file
65
README.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# HLL Vietnam
|
||||||
|
|
||||||
|
HLL Vietnam es la base inicial del repositorio para una futura web de comunidad enfocada en la comunidad hispana de Discord del juego HLL Vietnam.
|
||||||
|
|
||||||
|
En esta primera fase, el proyecto se centra en una landing sencilla, limpia y profesional que sirva como punto de entrada para la comunidad. La implementación actual utiliza HTML, CSS y JavaScript sin frameworks pesados para mantener una base fácil de mantener y ampliar.
|
||||||
|
|
||||||
|
## Estado actual
|
||||||
|
|
||||||
|
- Landing inicial de comunidad.
|
||||||
|
- Estructura de repositorio preparada para crecer.
|
||||||
|
- Carpeta de backend reservada para una futura implementación en Python.
|
||||||
|
- Carpeta `ai/` preparada para integrar más adelante una capa de orquestación y tareas.
|
||||||
|
|
||||||
|
## Estructura del repositorio
|
||||||
|
|
||||||
|
```text
|
||||||
|
/
|
||||||
|
|-- README.md
|
||||||
|
|-- .gitignore
|
||||||
|
|-- AGENTS.md
|
||||||
|
|-- docs/
|
||||||
|
| |-- project-overview.md
|
||||||
|
| |-- roadmap.md
|
||||||
|
| `-- decisions.md
|
||||||
|
|-- frontend/
|
||||||
|
| |-- index.html
|
||||||
|
| `-- assets/
|
||||||
|
| |-- css/
|
||||||
|
| | `-- styles.css
|
||||||
|
| |-- js/
|
||||||
|
| | `-- main.js
|
||||||
|
| `-- img/
|
||||||
|
| `-- .gitkeep
|
||||||
|
|-- backend/
|
||||||
|
| |-- README.md
|
||||||
|
| |-- requirements.txt
|
||||||
|
| `-- app/
|
||||||
|
| `-- __init__.py
|
||||||
|
`-- ai/
|
||||||
|
|-- README.md
|
||||||
|
|-- orchestrator/
|
||||||
|
| `-- README.md
|
||||||
|
`-- tasks/
|
||||||
|
|-- pending/
|
||||||
|
| `-- .gitkeep
|
||||||
|
|-- in-progress/
|
||||||
|
| `-- .gitkeep
|
||||||
|
`-- done/
|
||||||
|
`-- .gitkeep
|
||||||
|
```
|
||||||
|
|
||||||
|
## Backend futuro
|
||||||
|
|
||||||
|
El backend principal está previsto en Python, pero en esta fase no se incluye lógica funcional ni dependencias de servidor. La estructura queda preparada para incorporar esa capa más adelante sin reorganizar el repositorio.
|
||||||
|
|
||||||
|
## Cómo abrir el frontend localmente
|
||||||
|
|
||||||
|
1. Ve a la carpeta `frontend/`.
|
||||||
|
2. Abre `index.html` directamente en el navegador.
|
||||||
|
|
||||||
|
No hace falta servidor para esta primera versión.
|
||||||
|
|
||||||
|
## Evolución prevista
|
||||||
|
|
||||||
|
En una fase posterior se integrará el repositorio plantilla `ai-dev-platform-template`. En esta ejecución no se ha copiado esa plantilla completa; únicamente se ha dejado el proyecto preparado para recibirla de forma ordenada.
|
||||||
5
ai/README.md
Normal file
5
ai/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# AI Workspace
|
||||||
|
|
||||||
|
Esta carpeta queda preparada para incorporar más adelante el sistema de tareas, la orquestación y los flujos de trabajo asistidos por agentes.
|
||||||
|
|
||||||
|
La estructura actual separa el espacio de tareas por estado y reserva un área específica para el orquestador.
|
||||||
5
ai/orchestrator/README.md
Normal file
5
ai/orchestrator/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Orchestrator
|
||||||
|
|
||||||
|
El orquestador coordinará en fases posteriores la ejecución de tareas, la asignación de roles y la trazabilidad del trabajo entre agentes del proyecto.
|
||||||
|
|
||||||
|
Los agentes actuarán sobre responsabilidades acotadas, con decisiones documentadas y cambios verificables.
|
||||||
1
ai/tasks/done/.gitkeep
Normal file
1
ai/tasks/done/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
ai/tasks/in-progress/.gitkeep
Normal file
1
ai/tasks/in-progress/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
1
ai/tasks/pending/.gitkeep
Normal file
1
ai/tasks/pending/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
5
backend/README.md
Normal file
5
backend/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Backend
|
||||||
|
|
||||||
|
Esta carpeta queda preparada para la futura implementación del backend principal en Python.
|
||||||
|
|
||||||
|
En esta fase inicial no se incluye lógica funcional ni servicios activos. La intención es reservar una estructura clara para incorporar la aplicación, dependencias y configuración sin reorganizar el repositorio más adelante.
|
||||||
1
backend/app/__init__.py
Normal file
1
backend/app/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
"""Base package for the future HLL Vietnam Python backend."""
|
||||||
1
backend/requirements.txt
Normal file
1
backend/requirements.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Dependencias del backend Python se definiran en fases posteriores.
|
||||||
17
docs/decisions.md
Normal file
17
docs/decisions.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Technical Decisions
|
||||||
|
|
||||||
|
## Decision 001: frontend simple HTML/CSS/JS
|
||||||
|
|
||||||
|
Se adopta una base estática con HTML, CSS y JavaScript puro para priorizar simplicidad, velocidad de arranque y compatibilidad total al abrir el frontend directamente en navegador.
|
||||||
|
|
||||||
|
## Decision 002: backend previsto en Python
|
||||||
|
|
||||||
|
La estructura del repositorio reserva desde el inicio una carpeta de backend porque la implementación futura se realizará en Python.
|
||||||
|
|
||||||
|
## Decision 003: estructura preparada para orquestación por agentes
|
||||||
|
|
||||||
|
Se incluye una carpeta `ai/` y un documento `AGENTS.md` para facilitar una futura organización del trabajo por roles, tareas y orquestación.
|
||||||
|
|
||||||
|
## Decision 004: branding militar Vietnam
|
||||||
|
|
||||||
|
La dirección visual inicial se alinea con una estética sobria, táctica y militar inspirada en el contexto Vietnam para mantener coherencia temática desde la primera iteración.
|
||||||
29
docs/project-overview.md
Normal file
29
docs/project-overview.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Project Overview
|
||||||
|
|
||||||
|
## Vision del proyecto
|
||||||
|
|
||||||
|
HLL Vietnam busca convertirse en la base de una web de comunidad para centralizar la presencia digital de una comunidad hispana alrededor del juego, con una identidad visual sobria, táctica y coherente con el universo Vietnam.
|
||||||
|
|
||||||
|
## Objetivo inicial
|
||||||
|
|
||||||
|
Publicar una landing simple que permita presentar la comunidad, mostrar el trailer del proyecto y facilitar el acceso directo al servidor de Discord.
|
||||||
|
|
||||||
|
## Alcance actual
|
||||||
|
|
||||||
|
- Estructura inicial del repositorio.
|
||||||
|
- Landing estática en HTML, CSS y JavaScript.
|
||||||
|
- Documentación base para organizar el crecimiento del proyecto.
|
||||||
|
- Preparación de carpetas para backend y orquestación futura.
|
||||||
|
|
||||||
|
## Stack actual
|
||||||
|
|
||||||
|
- HTML
|
||||||
|
- CSS
|
||||||
|
- JavaScript
|
||||||
|
- Git para control de versiones
|
||||||
|
|
||||||
|
## Stack futuro previsto
|
||||||
|
|
||||||
|
- Backend principal en Python
|
||||||
|
- Integraciones de comunidad y automatización
|
||||||
|
- Posible ampliación de paneles administrativos y servicios internos
|
||||||
31
docs/roadmap.md
Normal file
31
docs/roadmap.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Roadmap
|
||||||
|
|
||||||
|
## Fase 1: base del repo
|
||||||
|
|
||||||
|
- Crear estructura inicial profesional.
|
||||||
|
- Definir documentación base del proyecto.
|
||||||
|
- Publicar la primera landing estática.
|
||||||
|
|
||||||
|
## Fase 2: landing mejorada
|
||||||
|
|
||||||
|
- Incorporar branding definitivo y recursos visuales.
|
||||||
|
- Añadir más secciones informativas de comunidad.
|
||||||
|
- Mejorar experiencia responsive y contenido.
|
||||||
|
|
||||||
|
## Fase 3: backend Python
|
||||||
|
|
||||||
|
- Definir arquitectura del backend.
|
||||||
|
- Incorporar servicios base en Python.
|
||||||
|
- Preparar configuración, entornos y despliegue inicial.
|
||||||
|
|
||||||
|
## Fase 4: integración de datos de Discord/servidores
|
||||||
|
|
||||||
|
- Estudiar integraciones viables con Discord.
|
||||||
|
- Incorporar datos de comunidad o estado de servicios.
|
||||||
|
- Añadir automatizaciones controladas y trazables.
|
||||||
|
|
||||||
|
## Fase 5: panel/admin y automatización
|
||||||
|
|
||||||
|
- Construir panel interno o administrativo.
|
||||||
|
- Añadir flujos de gestión y publicación.
|
||||||
|
- Integrar sistema de tareas y orquestación del proyecto.
|
||||||
209
frontend/assets/css/styles.css
Normal file
209
frontend/assets/css/styles.css
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
:root {
|
||||||
|
--bg: #0f120d;
|
||||||
|
--bg-elevated: rgba(27, 33, 24, 0.92);
|
||||||
|
--panel: rgba(21, 26, 19, 0.94);
|
||||||
|
--border: rgba(159, 168, 141, 0.24);
|
||||||
|
--text: #e7e0cf;
|
||||||
|
--muted: #a9ad9a;
|
||||||
|
--accent: #8ea062;
|
||||||
|
--accent-strong: #b7c97d;
|
||||||
|
--shadow: 0 24px 60px rgba(0, 0, 0, 0.35);
|
||||||
|
--max-width: 1120px;
|
||||||
|
--font-main: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
min-height: 100vh;
|
||||||
|
font-family: var(--font-main);
|
||||||
|
color: var(--text);
|
||||||
|
background:
|
||||||
|
linear-gradient(rgba(9, 11, 8, 0.68), rgba(9, 11, 8, 0.92)),
|
||||||
|
radial-gradient(circle at top, rgba(84, 96, 59, 0.22), transparent 36%),
|
||||||
|
linear-gradient(135deg, #161c14 0%, #0c100b 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-shell {
|
||||||
|
width: min(100%, var(--max-width));
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 32px 20px 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 24px;
|
||||||
|
background:
|
||||||
|
linear-gradient(180deg, rgba(23, 29, 19, 0.86), rgba(13, 16, 12, 0.95)),
|
||||||
|
repeating-linear-gradient(
|
||||||
|
90deg,
|
||||||
|
rgba(255, 255, 255, 0.015) 0,
|
||||||
|
rgba(255, 255, 255, 0.015) 1px,
|
||||||
|
transparent 1px,
|
||||||
|
transparent 24px
|
||||||
|
);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero__overlay {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background:
|
||||||
|
radial-gradient(circle at top right, rgba(142, 160, 98, 0.14), transparent 28%),
|
||||||
|
linear-gradient(135deg, transparent 0%, rgba(0, 0, 0, 0.2) 100%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero__content {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
padding: 56px 28px;
|
||||||
|
display: grid;
|
||||||
|
justify-items: center;
|
||||||
|
text-align: center;
|
||||||
|
gap: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-frame {
|
||||||
|
width: min(240px, 72vw);
|
||||||
|
aspect-ratio: 1 / 1;
|
||||||
|
padding: 16px;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
border: 1px dashed rgba(183, 201, 125, 0.45);
|
||||||
|
border-radius: 18px;
|
||||||
|
background: rgba(12, 16, 10, 0.58);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-frame__image {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.eyebrow {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
letter-spacing: 0.22em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--accent-strong);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2 {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
max-width: 12ch;
|
||||||
|
font-size: clamp(2.2rem, 5vw, 4.6rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: clamp(1.5rem, 2.8vw, 2.2rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero__text {
|
||||||
|
max-width: 640px;
|
||||||
|
margin: 0;
|
||||||
|
color: var(--muted);
|
||||||
|
font-size: 1.05rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discord-button {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 52px;
|
||||||
|
padding: 0 24px;
|
||||||
|
border: 1px solid rgba(183, 201, 125, 0.45);
|
||||||
|
border-radius: 999px;
|
||||||
|
background: linear-gradient(180deg, #8ea062 0%, #6e7f48 100%);
|
||||||
|
color: #11150f;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
transition:
|
||||||
|
transform 160ms ease,
|
||||||
|
box-shadow 160ms ease,
|
||||||
|
filter 160ms ease;
|
||||||
|
box-shadow: 0 12px 30px rgba(110, 127, 72, 0.35);
|
||||||
|
}
|
||||||
|
|
||||||
|
.discord-button:hover,
|
||||||
|
.discord-button:focus-visible {
|
||||||
|
transform: translateY(-1px);
|
||||||
|
filter: brightness(1.04);
|
||||||
|
box-shadow: 0 18px 36px rgba(110, 127, 72, 0.45);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-top: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel {
|
||||||
|
padding: 28px;
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: 24px;
|
||||||
|
background: var(--panel);
|
||||||
|
box-shadow: var(--shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel__header {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
border: 1px solid rgba(159, 168, 141, 0.18);
|
||||||
|
border-radius: 18px;
|
||||||
|
background: #0a0c09;
|
||||||
|
aspect-ratio: 16 / 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.video-wrapper iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.page-shell {
|
||||||
|
padding: 18px 14px 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero__content,
|
||||||
|
.panel {
|
||||||
|
padding: 22px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero__text {
|
||||||
|
font-size: 0.98rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.discord-button {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
1
frontend/assets/img/.gitkeep
Normal file
1
frontend/assets/img/.gitkeep
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
4
frontend/assets/js/main.js
Normal file
4
frontend/assets/js/main.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Inicializacion minima de la landing de HLL Vietnam.
|
||||||
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
|
console.info("HLL Vietnam frontend ready");
|
||||||
|
});
|
||||||
64
frontend/index.html
Normal file
64
frontend/index.html
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Comunidad hispana de HLL Vietnam. Accede al Discord oficial y descubre el trailer del proyecto."
|
||||||
|
/>
|
||||||
|
<title>Comunidad Hispana - HLL Vietnam</title>
|
||||||
|
<link rel="stylesheet" href="./assets/css/styles.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="page-shell">
|
||||||
|
<header class="hero">
|
||||||
|
<div class="hero__overlay"></div>
|
||||||
|
<div class="hero__content">
|
||||||
|
<div class="logo-frame">
|
||||||
|
<img
|
||||||
|
src="./assets/img/logo.png"
|
||||||
|
alt="Logo de HLL Vietnam"
|
||||||
|
class="logo-frame__image"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p class="eyebrow">Comunidad táctica hispana</p>
|
||||||
|
<h1>Comunidad Hispana - HLL Vietnam</h1>
|
||||||
|
<p class="hero__text">
|
||||||
|
Punto de encuentro para jugadores, escuadras y comunidad alrededor
|
||||||
|
del futuro universo HLL Vietnam.
|
||||||
|
</p>
|
||||||
|
<a
|
||||||
|
class="discord-button"
|
||||||
|
href="https://discord.com/invite/PedEqZ2Xsa"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Unirse al Discord
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="content">
|
||||||
|
<section class="panel">
|
||||||
|
<div class="panel__header">
|
||||||
|
<p class="eyebrow">Trailer</p>
|
||||||
|
<h2>Primer vistazo a HLL Vietnam</h2>
|
||||||
|
</div>
|
||||||
|
<div class="video-wrapper">
|
||||||
|
<iframe
|
||||||
|
src="https://www.youtube.com/embed/JzYzYNVWZ_A"
|
||||||
|
title="Trailer HLL Vietnam"
|
||||||
|
loading="lazy"
|
||||||
|
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||||
|
referrerpolicy="strict-origin-when-cross-origin"
|
||||||
|
allowfullscreen
|
||||||
|
></iframe>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="./assets/js/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user