TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Tableau de bord personnel (PWA installable sur iPhone) : rendez-vous, événements, tâches, notes, planning d'entraînement, courses et mesures physiques. HTML / CSS / JavaScript purs (modules ES), sans étape de build ni dépendance payante. Synchronisation multi-appareils via Firebase Realtime Database (offre gratuite). Les modules ES ne fonctionnent pas en file://. Servez le dossier :README 전문 보기 ↗
Tableau de bord personnel (PWA installable sur iPhone), point d'entrée quotidien.
Briefing du matin (js/features/briefing.js) : à la première ouverture du jour, quatre écrans plein écran — météo et séance du jour (« Je la fais » ou « Demain »), rendez-vous / événements / courses des 7 prochains jours avec compte à rebours, tâches échues en pile (glisser à droite = faite, à gauche = demain), puis une plante qui gagne une feuille par geste et la série de matins. Rejouable avec le soleil de l'en-tête ; il remplace ce jour-là le pop-up des retards. Style « Vivant » (css/vivant.css) : palette Forêt et Pollen en sombre et en clair, dates en Geist Mono. Saisie express en langage naturel (js/core/parse.js) : « payer la cantine demain » = tâche datée, « dentiste jeudi 17h30 » = rendez-vous. Dans À faire, glisser une tâche à droite la coche, à gauche la reporte à demain (avec « Annuler »).
Trois onglets :
La saison, les courses et les mesures se gèrent dans l'app Allure (même compte, même nœud Firebase, mêmes données : rien n'est copié). Style minimaliste commun aux apps (anthracite, cartes pleines), couleur Menthe ; les courses gardent la couleur Aurore d'Allure. HTML / CSS / JavaScript purs (modules ES), sans étape de build ni dépendance payante. Synchronisation multi-appareils via Firebase Realtime Database (offre gratuite), avec le même compte (e-mail / mot de passe) que Mon Garage, Ma Maison, Allure et Mon budget.
index.html Squelette HTML (aucun script inline hormis l'anti-flash du thème)
manifest.webmanifest Manifeste PWA
database.rules.json Règles fermées à publier sur l'ANCIENNE base publique (voir « Sécurité »)
css/horizon.css Style « Horizon » (paysage, accent citron, police Geist), chargé en dernier
fonts/, img/ Police Geist et paysages de l'accueil, servis par l'app (marchent hors ligne)
css/
tokens.css Design tokens (couleurs clair/sombre, rayons, ombres, mouvement)
base.css Reset, typographie, fond d'ambiance, accessibilité
components.css Boutons, champs, cartes, modales, toasts, graphiques…
layout.css En-tête, barre d'onglets, grilles responsive
views/*.css Styles propres à chaque vue
js/
main.js Point d'entrée : navigation, abonnements, erreurs globales
config/firebase-config.js Configuration Firebase (projet commun aux apps, publique par conception)
core/
store.js État central + persistance locale + diffusion des changements
schema.js Normalisation / validation de forme des données
validation.js Règles de validation des formulaires
season.js Phases d'entraînement (types, conseils, phase d'un jour, courses d'un jour)
dates.js, utils.js Utilitaires
services/
firebase.js Compte + synchronisation (chargement dynamique, file d'écriture, état réseau, transfert depuis l'ancienne base)
storage.js localStorage sécurisé
weather.js Météo Open-Meteo avec cache
features/
ics.js Génération iCalendar (RFC 5545) + ouverture Calendrier iOS
calendar-prompt.js Modale « Ajouter au calendrier »
overdue-prompt.js Pop-up de démarrage : tâches, entretiens Garage et Maison en retard (une seule liste)
linked-apps.js Échéances de Garage / Maison lues dans le nœud de Carnet (sections, calendrier, pastilles)
auth.js Feuille de connexion (« Continuer sans compte » possible)
settings.js Feuille Réglages : thème Auto / Sombre / Clair, compte connecté, déconnexion
persist.js Attente de l'accusé de réception Firebase
ui/ Icônes SVG, modales, toasts, thème, pastille de synchro, graphiques
views/ dashboard (accueil + tâches), training (planning)
Les modules ES ne fonctionnent pas en file://. Servez le dossier :
python3 -m http.server 8080
# puis http://localhost:8080
GitHub Pages (ou tout hébergement statique) : publier la racine du dépôt. Aucune compilation nécessaire.
test-e27e9, même firebase-config.js). Les données sont sous users/<uid>/carnet (tranches dashboard, notes, theme, families, plans, objectives, races, bodyMetrics, partagées avec Allure). Le même nœud reçoit garage_alerts (écrit par Mon Garage), maison_alerts (Ma Maison) et migrated (marque du transfert) : Carnet les lit et ne les réécrit jamais.benjbepoix-stack.github.io) ; dans un même navigateur, être connecté dans Mon Garage suffit. Sur iPhone, chaque app installée sur l'écran d'accueil a son propre stockage : une connexion par app, une seule fois.dashboard_last_uid) : les données locales sont vidées avant la synchro. À la première connexion après la mise à jour, rien n'est vidé.Au premier instantané de users/<uid>/carnet après connexion, si migrated est absent, Carnet lit l'ancienne base publique en REST (dashboard---projet…/app.json, 8 s max) :
garage_alerts / maison_alerts), avec migrated: { from: '<hôte>', at, by: 'carnet' }, puis affichées ;migrated: { from: 'local', … } ;migrated apparue entre-temps) → Carnet n'écrit rien de plus et garde la marque d'Allure.Un nœud qui ne contient que garage_alerts / maison_alerts / migrated est considéré comme vide : les données de l'appareil n'en sont jamais effacées. Le ménage des tâches cochées et le pop-up des retards attendent la fin de ce premier chargement.
apiKey et le reste de firebase-config.js ne sont pas des secrets : Firebase les destine au navigateur. Aucune clé privée (compte de service) ne doit jamais être commitée ; le .gitignore les exclut.test-e27e9 (gérées dans le dépôt Mon Garage) n'autorisent que users/<uid> au compte connecté. Aucune règle à publier pour les nouveaux chemins.dashboard---projet (lisible et modifiable par n'importe qui jusque-là) une fois les données transférées : ouvrez Carnet connecté sur un appareil à jour, vérifiez que vos données s'affichent (et, dans la console Firebase du projet test-e27e9, que users/<uid>/carnet/migrated existe), puis console Firebase du projet dashboard---projet → Realtime Database → Règles → coller le contenu de database.rules.json (".read": false, ".write": false) → Publier. Après cela, l'ancienne base n'est plus lisible : un appareil qui n'aurait jamais été mis à jour enverra ses propres données à sa première connexion (transfert « local »).Après l'enregistrement d'un rendez-vous (confirmé par Firebase si en ligne), une modale propose « Ajouter au Calendrier ».
Sur iPhone, Safari reçoit un événement text/calendar et affiche directement la fiche native d'ajout à l'app Calendrier. Ailleurs, un fichier .ics est téléchargé.
Un bouton calendrier est aussi disponible sur chaque rendez-vous, événement et course à venir. L'UID est stable : réimporter un rendez-vous modifié met à jour l'événement.
Rendez-vous et événements peuvent se répéter (tous les jours, semaines, mois ou ans — ex. un anniversaire). La date saisie est la première occurrence ; l'accueil affiche la prochaine occurrence et l'export .ics inclut la règle RRULE.
Depuis l'app installée sur l'écran d'accueil, si la fiche ne s'ouvre pas, utilisez le bouton « Partager le fichier .ics ».
Allure écrit races, objectives.seasonPhases et bodyMetrics dans le même nœud (users/<uid>/carnet, même compte) ; Carnet les lit pour l'agenda, la séance du jour, les tâches Sport et le planning (phase de chaque jour, courses). Un appui sur une course ou une tâche Sport ouvre Allure.
Sur iPhone, chaque tâche datée et non terminée a un bouton cloche : il copie le titre et l’échéance (« Appeler le garage — samedi 3 octobre à 10:30 ») puis ouvre l’app Rappels, où il suffit de coller. Une page web ne peut pas créer elle-même un rappel.
sw.js (service worker) vérifie à chaque ouverture si les fichiers de l’app ont changé sur le serveur et garde la dernière version pour le mode hors ligne. Une version publiée sur GitHub Pages apparaît donc à la réouverture de l’app, sans attendre l’expiration du cache du navigateur.
À l’installation, l’app-shell (HTML/CSS/JS/icônes) est aussi pré-mis en cache : un tout premier lancement hors ligne (avant toute visite en ligne réussie) affiche donc l’app au lieu d’un écran blanc.
Par défaut sur Besançon. Le bouton 📍 à côté de la météo (onglet Planning) permet de changer de ville (recherche via l’API de géocodage gratuite d’Open-Meteo) ; le choix est mémorisé sur l’appareil.
L'accueil s'ouvre sur un paysage (crépuscule en sombre, matin en clair) avec la séance du jour en grand titre, puis une rangée de 4 tuiles (icône au trait + nom) qui ouvre Allure, Mon budget, Ma Maison et Mon Garage. Une pastille rouge sur Ma Maison / Mon Garage indique le nombre d'entretiens en retard qu'elles ont publiés.
users/<uid>/carnet/garage_alerts (même compte). Les échéances datées apparaissent aussi dans le calendrier du mois. Carnet lit ce chemin dans l'instantané de son propre nœud (pas d'écouteur séparé) et ne l'écrit jamais. La section reste masquée tant que Garage n'a rien publié. Détail dans js/features/linked-apps.js.Sections « Maison » et « Saison » : dans l'onglet Tâches, en lecture seule et en direct, ce qu'a publié l'app Ma Maison dans users/<uid>/carnet/maison_alerts : entretiens en retard ou à moins de 30 jours et garanties qui expirent (avec leur date, aussi dans le calendrier du mois), puis les tâches du calendrier de saison du mois restant à faire. Un appui ouvre Ma Maison. Détail dans js/features/linked-apps.js.
Plus aucune règle Firebase à publier pour ces liens : tout est sous le compte connecté.
Réglages › Thème : Auto (par défaut, suit le réglage clair / sombre de l'iPhone, y compris son passage automatique le soir), Sombre ou Clair. Le choix est synchronisé (tranche theme). À la mise à jour, l'ancien thème « sombre » (ancien défaut) devient Auto, une seule fois (drapeau dashboard_theme_auto_v1) ; « clair » reste clair.
Au lancement de l'app, une fenêtre liste en une seule fois les tâches en retard (échéance passée, non cochées) et les entretiens en retard publiés par Garage et Ma Maison. Une tâche se coche directement dans la liste (ou s'ouvre d'un appui) ; un entretien ouvre l'app concernée ; un seul bouton « Fermer ». Un seul passage par session, une fois les données du compte reçues (une tâche faite sur un autre appareil n'y figure pas ; après le choix « se connecter » ou « continuer sans compte » si la feuille de connexion est ouverte) et les résumés Garage / Maison lus — sans les attendre plus de 2,5 s. Détail dans js/features/overdue-prompt.js.
Un appui sur une carte (rendez-vous, événement) ou une ligne (tâche) ouvre sa modification ; « Supprimer » est en bas de la feuille. Les listes n'affichent plus d'icônes crayon / corbeille. Le rond d'une tâche la coche sans ouvrir la feuille ; l'icône calendrier des rendez-vous à venir reste disponible.
js/features/task-tidy.js.À l'ouverture de l'app, le planning hebdomadaire (onglet Planning) défile automatiquement jusqu'à la carte du jour, plutôt que de rester sur le lundi de la semaine affichée. Seuls les jours réellement planifiés sont enregistrés (consulter une semaine ne crée plus de jours vides dans la base). Un appui sur une course du planning ouvre Allure.
Carnet n'écrit jamais objectives (les phases de saison appartiennent à Allure) : la gestion des sports ne peut donc plus écraser une phase créée dans Allure.