TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Organiza tus sesiones de práctica en bloques temporizados que se encadenan automáticamente, para que solo tengas que concentrarte en practicar.
Translation pending
ProductivityTypeScript · HTMLGitHub @pedrocarramolinoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
PWA para organizar sesiones de práctica en bloques temporizados que se encadenan automáticamente. Ver progreso y fases del proyecto más abajo. • Next.js 16 (App Router, Turbopack) + React 19 + TypeScript estricto • Tailwind CSS v4 + shadcn/ui (Base UI, preset "Nova") • Serwist (Workbox) para el service worker — compilado de forma independiente con esbuild, no con el plugin de webpack (ver src/app/sw.ts) • ESLint (flat config) + Prettier (prettier-plugin-tailwindcss)Read the full README ↗
PWA para organizar sesiones de práctica en bloques temporizados que se encadenan automáticamente. Ver progreso y fases del proyecto más abajo.
src/app/sw.ts)prettier-plugin-tailwindcss)src/
app/ Next.js App Router: rutas, manifest, iconos, service worker
components/
ui/ Primitivas de shadcn/ui (no editar a mano, se regeneran con la CLI)
layout/ Componentes de la "app shell" (header, navegación, etc.)
core/ Ver src/core/README.md — domain / application / infrastructure comunes
features/ Ver src/features/README.md — slices verticales feature-first
config/ Configuración/constantes de la app (metadatos del sitio, etc.)
hooks/ Hooks compartidos
lib/ Utilidades de framework (cn, helpers)
types/ Tipos globales compartidos
Capas y dirección de dependencia: presentation → application → domain, con
infrastructure implementando interfaces definidas en domain. El dominio (core/domain,
y el de cada feature) es TypeScript puro, sin dependencias de React, Next.js o Supabase, para
poder reutilizarse en el futuro fuera de la música (deporte, idiomas, estudio...).
npm install
npm run dev
Abre http://localhost:3000. El service worker está desactivado en
desarrollo (evita interferir con el hot-reload) y solo se registra en npm run build && npm run start.
Scripts disponibles:
| Script | Qué hace |
|---|---|
npm run dev | Servidor de desarrollo (Turbopack) |
npm run build | Build de producción |
npm run start | Sirve el build de producción |
npm run typecheck | tsc --noEmit |
npm run lint / lint:fix | ESLint |
npm run format / format:check | Prettier |
npm run build:sw | Compila src/app/sw.ts → public/sw.js con esbuild |
Los recordatorios y los avisos de fin de fase se entregan como notificaciones push reales (no "locales" en el sentido estricto — no existe esa API fiable multiplataforma en la web), para que lleguen aunque el navegador esté cerrado o el móvil bloqueado. Piezas:
src/app/sw.ts — maneja los eventos push y notificationclick.src/core/infrastructure/qstash/client.ts — programa el mensaje diferido de fin de fase
(scheduleSessionPhaseAlert, se dispara solo una vez, delay = duración planeada del bloque) y
el Schedule cron-recurrente de cada recordatorio (createReminderSchedule, con
CRON_TZ=<zona> embebido en la expresión para respetar la hora local del usuario).src/app/api/qstash/session-phase-alert/route.ts y src/app/api/qstash/reminder-alert/route.ts
— los webhooks que QStash invoca; verifican la firma Upstash-Signature con
src/core/infrastructure/qstash/verify.ts en vez de un secreto estático.QSTASH_URL, QSTASH_TOKEN,
QSTASH_CURRENT_SIGNING_KEY, QSTASH_NEXT_SIGNING_KEY, más APP_URL (origen público de la
app, para que QStash sepa a qué URL llamar)./settings centraliza los ajustes de user_settings (tabla ya creada desde la Fase 2):
tema claro/oscuro/sistema, color de acento, sonido y volumen del temporizador, vibración y
duración del aviso visual al cambiar de bloque.
user_settings.theme), no solo en localStorage — viaja
entre dispositivos del mismo usuario. src/app/layout.tsx lee la sesión en cada petición y
pasa el tema guardado como defaultTheme a next-themes, sin parpadeo.src/features/settings/lib/accent-presets.ts), no
un selector de color libre — todas usan la misma fórmula OKLCH (L/C) que el teal por defecto
y solo cambian el matiz, así que el contraste ya validado se mantiene igual en cualquiera. Se
aplica con un <style> inyectado en el <head> desde el layout raíz (Server Component), para
que no haya parpadeo al navegar.src/features/session-timer/hooks/use-session-runtime.ts); esta fase solo añade la
pantalla para cambiarlos.Fase 0 (esta fase) sienta la base técnica: scaffolding, arquitectura, tooling de calidad y PWA shell mínimo. Sin funcionalidad de negocio todavía. Las siguientes fases (a confirmar en cada paso): Design System, modelo de dominio + base de datos, autenticación, constructor de sesión, motor de temporizador, notificaciones/sonidos, historial, plantillas, estadísticas, rachas, recordatorios, personalización, PWA avanzada (offline/caché), pulido y despliegue.