5 Commits
Author SHA1 Message Date
beantownbabe cbb308cf37 Add Core Message/Roadmap/Monthly Notes cards and cross-page nav to Reports tab
Restructures the Reports tab into a CSS Grid layout (Core Message + Campaign
Roadmap stacked, spanning Follower Growth below, alongside All Posts; Audience
Composition + Follower Study + Monthly Notes as a second row), each card
carrying a short abstract with a link to its full detail. Adds three new
"insights" sub-pages (Roadmap, Core Message, Monthly Notes) reachable via a
shared hero-banner nav so hopping between them doesn't require detouring
through the main Reports page each time. Also fixes two content-type
misclassifications (23/07, 30/07 should be Carousel) and trims chart chrome
(legend, axis labels/padding) to reclaim vertical space without shrinking bar
height.

PDF (report.py) and static export (build_static_export.py) intentionally not
yet updated to mirror these Reports tab changes — deferred until layout
iteration is done.
2026-08-07 12:29:21 +02:00
beantownbabe 153b3e970a Track Follower Directory/Study in git as backup
These are hand-maintained data, not regenerable from code, so unlike
the dashboard snapshot they need a real backup rather than a
regenerate-on-demand exclusion.
2026-08-03 08:04:18 +02:00
beantownbabeandClaude Sonnet 5 8a72eeb402 Add Follower Directory/Study hero links, fix country-map centroid gaps, and sync accumulated dashboard work
- Hero banner now shows Follower Directory / Follower Study links on the
  Followers tab only (not the sidebar), opening the standalone reports served
  from assets/.
- Followers by Country: _COUNTRY_CENTROIDS expanded from 14 hardcoded entries
  to a near-complete world table, so a country missing from the old dict no
  longer vanishes from the map silently; added a console warning for any
  country still missing a centroid, and a "N countries represented" caption
  computed from the same rollup the map uses so the two can never disagree.
- Added visitor_history.py: append-only observation log for the Visitors
  export's category breakdowns (Location/Seniority/Company size), since
  LinkedIn only shows a category if it clears a per-export minimum-visits
  threshold and otherwise silently drops it.
- Synced other accumulated app.py/build_static_export.py work not yet
  committed: calendar month drill-down tiles, follower-breakdown expand
  toggle, CTR explainer, manual post title overrides, and matching static-
  export precompute/JS for the calendar and content tabs.
- .gitignore: exclude the newer generated snapshot outputs (follower study/
  directory HTML copies, PDF report, visitor_category_history.json) using
  the same rationale as the existing growth_history.json/snapshot rules —
  regenerable from code + data, not itself code.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 08:49:19 +02:00
beantownbabe f631ba26a0 Make posts table scrollable and fix file-finder to ignore non-export files
- All Posts table now scrolls within a fixed height instead of paginating/
  growing indefinitely as more posts accumulate, with column widths tuned
  so Short title gets the most room and narrow columns (dates, rates,
  counts) stay compact.
- _find_latest_file/_find_all_files now only match real LinkedIn export
  filenames (txproducts_*), so unrelated files sitting in the same folder
  (a manual roster, an Office lock file) can no longer crash the loader.
2026-07-22 11:56:10 +02:00
beantownbabe 348fe65b88 Initial commit: TXproducts LinkedIn Analytics Dashboard
Dash app with Overview, Content, Followers, Visitors, Competitors, and
Growth tabs. Includes weekly-pace tracking, PDF report generation, data
upload with live refresh, and a static HTML export builder for sharing
via NextCloud.
2026-07-21 15:14:28 +02:00