✦ ✦ ✦
STREETPASS
MADRID 2026
// ÚLTIMA VEZ ACTUALIZADO: 25 DE MARZO DE 2026
✦ ✦ ✦
FASE 0
Base & Wii
Base & Wii
~Hecho
FASE 1
Quedadas
Quedadas
~por edición
FASE 2
API & Auth
API & Auth
~3-4 semanas
FASE 3
Social
Social
~3-4 semanas
FASE 4
Eventos & Foro
Eventos & Foro
~4-6 semanas
Issues Web
18
8 resueltas / 10 pendientes
Issues API
20
0 resueltas / 20 pendientes
Total
38
8 resueltas / 30 pendientes
LÍDER & ÚNICO DEV
DANIEL POZA
Fullstack Developer — Creador StreetPass Madrid Web
8
Issues Resueltas
30
Issues Pendientes
// ESTRUCTURA_DEL_PROYECTO (ACTUAL → OBJETIVO)
index.html
Menú principal estilo Wii ✓
script.js
Grid canales dinámico ✓
style.css
Wii aesthetic + animaciones ✓
quedada5/
Subpágina Quedada 5 ✓
✦ StreetPassAPI/
FastAPI backend (nuevo)
✦ quedada6–SP8/
Subpáginas restantes (nuevo)
✦ users/
MongoDB: users, amigos, logros
✦ eventos/
MongoDB: eventos, inscripciones
✦ foro/
MongoDB: hilos, mensajes
✦ noticias/
MongoDB: posts de noticias
// FASE_0 — ISSUES RESUELTAS (HISTORIAL WEB)
// WEB — BASE & MENÚ WII
| # | Issue | Repo | Labels |
|---|---|---|---|
| #1 | Estructura HTML base — grid 4x3 de canales estilo menú Wii generado dinámicamente en JS | WEB | arch ui |
| #2 | Fondo estático Wii — StreetpassWebBackGroun.jpg con background-attachment:fixed y overlay inferior StreetpassWebMenu.png | WEB | ui anim |
| #3 | Cursor personalizado Wii — reemplazar cursor del sistema por CursosWeb.png en toda la página | WEB | ux |
| #4 | Efecto hover de canal — escala 1.06 con spring cubic-bezier, borde resaltado y z-index elevado, igual que la Wii | WEB | anim ui |
| #5 | Título flotante de ediciones — imagen TituloPaginaEdiciones.png centrada sobre la rejilla con drop-shadow 3D | WEB | ui |
| #6 | Títulos de canal animados — channel-title opacado al 0.2 que aparece en hover con transición hacia posición normal | WEB | anim |
| #7 | Quedada 5 — canal clickable con foto portada, efecto fade-out-wii (scale 2.5 + blur) y redirección a quedada5/index.html | WEB | feat content |
| #8 | Animación de retorno — fade-in-wii-return al volver desde una quedada: zoom desde 0.5 con blur inverso hasta escala normal | WEB | anim ux |
// FASE_1 — CONTENIDO: QUEDADAS & POLISH WEB (PENDIENTE)
// WEB — QUEDADAS PENDIENTES
| # | Issue | Repo | Labels |
|---|---|---|---|
| #9 | SP8 — Subpágina completa con galería de fotos, asistentes, juegos jugados y resumen del evento | WEB | content gallery |
| #10 | SP6 — Canal clickable + subpágina con portada y galería de fotos | WEB | content gallery |
| #11 | SP7 — Canal clickable + subpágina con portada y galería de fotos | WEB | content gallery |
| #12 | Sonido de selección y música de fondo — audio bip Wii al clickar + loop ambiental con control de volumen discreto | WEB | ux anim |
| #13 | Reloj estilo Wii en la esquina — fecha y hora con tipografía Wii, igual que el menú real de la consola | WEB | ui feat |
| #14 | Canal "Próxima quedada" parpadeante — destacado con fecha y lugar de la siguiente edición + countdown en tiempo real | WEB | feat anim |
| #15 | Galería lightbox Frutiger Aero — fotos a pantalla completa con transiciones fluidas y efecto cristal en las subpáginas de quedada | WEB | gallery ux |
| #16 | SEO y meta tags — título, descripción y og:image para que el link de street-pass-web.vercel.app se comparta bien en redes | WEB | devops docs |
| #17 | Responsive móvil — el grid 4x3 se rompe en pantallas pequeñas, adaptar a 2 columnas con media queries | WEB | responsive bug |
| #18 | Contadores de asistentes por edición visibles en el menú — badge numérico por cada canal con el conteo de asistentes registrados | WEB | feat ui |
// FASE_2 — API FASTAPI: AUTH & USUARIOS (PENDIENTE)
// API — INFRAESTRUCTURA BASE
| # | Issue | Repo | Labels |
|---|---|---|---|
| #19 | Crear la API en FastAPI — proyecto base con estructura de routers (auth.py, users.py, events.py, forum.py), conexión MongoDB Motor y variables .env | API | arch devops |
| #20 | Registro de usuario — POST /api/auth/register con nombre único, email, contraseña (bcrypt), foto de perfil y colección users en MongoDB | API | auth feat |
| #21 | Verificación de correo electrónico — envío de email con token al registrarse, endpoint GET /api/auth/verify-email?token= y campo email_verified en users | API | auth security |
| #22 | Login con JWT — POST /api/auth/login retorna JWT de 7 días, campo role en el token (user / moderator / admin) | API | auth security |
| #23 | Perfil de usuario con foto personalizada — GET/PATCH /api/users/{username}: editar nombre, bio, juegos favoritos (3DS, Switch), foto subida a Cloudinary | API | profile feat |
| #24 | Historial de participación en quedadas — campo attended_events en users, visible en el perfil público: "Ha asistido a SP5, SP7, SP8…" | API | profile feat |
// API — AMIGOS & CLUBES
| # | Issue | Repo | Labels |
|---|---|---|---|
| #25 | Sistema de amigos — POST /api/friends/request, aceptar/rechazar, listar amigos con estado online/offline en friendships | API | feat |
| #26 | Clubes de juego — crear/unirse a clubes por juego (Smash, Mario Kart, Pokémon…), CRUD en colección clubs con admin del club | API | feat |
// FASE_3 — ASISTENCIA, LOGROS & NOTICIAS (PENDIENTE)
// API — ASISTENCIA A EDICIONES
| # | Issue | Repo | Labels |
|---|---|---|---|
| #27 | Marcar asistencia a cada edición — POST /api/editions/{id}/attend, conteo total por edición en colección editions y visible en la subpágina de la quedada | API | feat |
| #28 | Conteo total de asistentes — GET /api/editions/{id}/attendees con lista de perfiles y contador total; visible en la subpágina de la quedada con avatares | API | feat ui |
// API — SISTEMA DE LOGROS
| # | Issue | Repo | Labels |
|---|---|---|---|
| #29 | Logros básicos de asistencia — "Primera quedada", "3 quedadas", "5 quedadas", "Veterano (10+)" — se conceden automáticamente al marcar asistencia | API | achieve feat |
| #30 | Logros de torneo — "Ganador Smash (SP8)", "Campeón Mario Kart (SP6)"… concedibles solo por admins/mods desde el panel de administración | API | achieve admin |
| #31 | Logros sociales — "Primer amigo", "Club fundador", "Has ayudado a organizar un evento" — se asignan automáticamente al cumplir la condición | API | achieve |
| #32 | Galería de logros en el perfil — mostrar badges earned/locked con nombre, descripción y fecha de obtención en GET /api/users/{username}/achievements | API | achieve profile |
// API — NOTICIAS
| # | Issue | Repo | Labels |
|---|---|---|---|
| #33 | Sección de noticias — CRUD en colección news: GET /api/news lista pública, POST/PATCH/DELETE solo admins; campos: título, cuerpo, imagen, fecha, autor | API | content admin |
| #34 | Canal de noticias en menú Wii — nueva sección en el menú principal que muestra las últimas 3 noticias con un diseño tipo Mii Channel | WEB | ui content |
// FASE_4 — EVENTOS, TORNEOS & FORO (PENDIENTE)
// API — EVENTOS DENTRO DE CADA STREETPASS
| # | Issue | Repo | Labels |
|---|---|---|---|
| #35 | Crear eventos dentro de una edición — POST /api/editions/{id}/events solo para admins/mods: nombre, descripción, tipo (torneo / taller / venta), aforo máximo y horario | API | feat admin |
| #36 | Inscripción de usuarios a eventos — POST /api/events/{id}/join: cualquier usuario registrado puede inscribirse, se actualiza el contador en tiempo real | API | feat |
| #37 | Tipos de eventos predefinidos — Torneo Smash, Torneo Beyblade, Torneo Mario Kart, Venta de dibujos, Intercambio Pokémon — con icono y color por categoría | WEB | ui content |
| #38 | Vista de eventos en la subpágina de cada quedada — lista de eventos con inscriptos, aforo y botón para apuntarse directamente desde la página | WEB | ui feat |
| #39 | Panel de administración — /admin solo accesible para admins/mods: gestión de usuarios, roles, noticias, eventos y validación manual de asistencia | WEB | admin security |
// API — FORO & BUSCAR PARTIDA
| # | Issue | Repo | Labels |
|---|---|---|---|
| #40 | Foro general — colección threads: crear hilos por categoría (General, Buscar partida, Préstamos de juegos), con paginación y contador de respuestas | API | feat |
| #41 | Sección "Buscar partida" — hilos específicos con campo de código Nintendo (Pretendo / Switch) para buscar partida de juego online: MK8, Smash, Splatoon, etc. | API | feat |
| #42 | Buscador en el foro — GET /api/forum/search?q= para buscar hilos por título, juego o usuario, con filtros por categoría | API | feat perf |
// NOTAS_TÉCNICAS — ARQUITECTURA OBJETIVO
Stack planificado para la API
StreetPassAPI/ ├── app/ │ ├── main.py # FastAPI app + CORS + lifespan │ ├── routers/ │ │ ├── auth.py # register, login, verify-email │ │ ├── users.py # perfil, amigos, clubes, logros │ │ ├── editions.py # asistencia, conteos, eventos │ │ ├── news.py # CRUD noticias (admin only) │ │ └── forum.py # hilos, respuestas, buscar partida │ ├── models/ # Pydantic schemas │ └── db.py # Motor (MongoDB async) └── .env # MONGODB_URI, JWT_SECRET, CLOUDINARY_*
Animación Wii — Grid dinámico (cómo añadir quedada)
// Para añadir SP6, añadir un bloque if(i === 2) en script.js:
if (i === 2) {
const img = document.createElement("img");
img.src = "resources/SP6/portada.jpg";
img.classList.add("channel-image");
box.appendChild(img);
titleSrc = "resources/SP6/titulo.png";
box.addEventListener("click", () => {
document.getElementById("page-content")
.classList.add("fade-out-wii");
setTimeout(() => {
window.location.href = "quedada6/index.html";
}, 400);
});
}
// REGISTRO_DE_AVANCE
Historial de progreso — actualmente al 13%. Solo dev.
SEMANA 1
Mar 2026
FASE 0 — Base & Quedadas
✅ Completado
- Grid 4x3 generado dinámicamente en
script.js - Fondo Wii + overlay inferior con
StreetpassWebMenu.png - Cursor personalizado Wii, hover spring cubic-bezier
- Títulos de canal animados en hover
- Animación
wiiStartal clickar — scale 2.5 + blur - Animación
wiiReturnEnteral volver — zoom inverso - Canal Quedada 5 funcional con redirección completa
- Canal SP8 visual con portada (sin click aún)
→ Objetivos actuales
- Subpáginas SP6, SP7 y SP8 completas
- Sonido + reloj Wii + responsive
- Empezar API FastAPI: auth + registro con verificación email