TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.