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.