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.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 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. • 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)查看完整 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.