From a09024aff7871a6da337ca2777c6f930f26ba810 Mon Sep 17 00:00:00 2001 From: Nicholai Date: Sat, 24 Jan 2026 13:32:50 -0700 Subject: [PATCH] feat(ui): dashboard github stats, sidebar UX, polish - Add live GitHub stats and commits to dashboard with sticky two-column layout and GitHub card link - Auto-expand sidebar when navigating to files/projects while collapsed - Add GitHub link to landing page - Restyle storage indicator with sidebar tokens - Fix nav-user readability with sidebar-foreground tokens - Update favicon to colored compass logo --- public/apple-touch-icon.png | Bin 9016 -> 36257 bytes public/favicon.png | Bin 888 -> 6941 bytes src/app/dashboard/page.tsx | 300 +++++++++++++++------ src/components/app-sidebar.tsx | 9 +- src/components/files/storage-indicator.tsx | 16 +- src/components/nav-files.tsx | 4 +- src/components/nav-user.tsx | 6 +- 7 files changed, 245 insertions(+), 90 deletions(-) diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index 085652c970b7853b2558c7e0a0d55f55af27bb7e..042c5a4c6fa29ebd9d4e3ebbf485649538db18b1 100755 GIT binary patch literal 36257 zcmY&<18^o?(C!=CwzIKqCmZ`sHnwfs8(SOOHaE6yJK5Oz^WA&vuevogbE?kNsh*yh z^K|#q-4TlNk_fQ4umAu6;ir_C^7q*I-w6%*edV8oWceP5jii+2002))0Kh*O0C@eL z@;?CpT$liWGkpMnCk+6=vd?N);`_bCuaj2`~MZf!luf? z#KX+R!_5AFg^=1smwl@Q_$el=>b`dP;gUrlj>(DWr{JQ8Cud4|6$}kS4sPb)mKq1{ zW;SaQ0Dz&ps(;?Y-7s*#Tt;?FK%Q>ZKCiy}oCTIwR9wrh_-q|Nb@%L{9l5%la+k!U zAcq40BOf5F-i)`?2jhhYqhB08P_PdTx7;~tO)SN)*hgYV)*;(%ub_(!OGHg71~%zy zDsL5Ei^J8o&N6$@4Ua@UY+fi^;ayUMgE3=D-*<0TqF1zOE-IOE04F43q( zQFwNE$cVcJwL^w(DUFj$3z(!-GMO6HXeuJY`;ip@%*4sQX=l)QfBq~ZUGCX6*^Z9% zZ7IYXES93N!7l}j>XRPS_IQ3k;)m>#L&H0DbQkuKF^wwaGg@-16T+w;vyQQaGfm+u z3;dRn-GDD#Kv7Pmky|k9@`VLs30bI$RXZFjl#66K%}ZvEPJg)mg=vIEwE}-?MEv|# z^q1MW8T(a%#3u6wJ%ue)9af#9=R6@8Ud{ajV=HYz7zfha8b}l;pA`%!VTvS2zx%ng zww&YSQU)%3Wc}Hf`MMTCwKzOF=461Xb$6Qb`Vb;SC)Bv$eT_-rwD-8V~fHe-+_Ln6)6`NIaY@4j?W zRj&tOZ$s>N;bRqAMBlHj?oP_!w6mpydRr^>vkTagF$`nK=8cj3_zy2K%aW6mOY&~L zLSt$OQ5{J}il3r|I#i#s%Hm^tqiMvnV#oPYv^#@-iMXeN>oV{#>>#)^q4P7VoVXv-HvEoRdh zi7r~E)@6OniAhWj5Ll}00G59$Gcwg zY`r`jt~WHYuTm~r03@59ZnAse4V=7gwo0%)8ElzUm`*ohV*ANFb2t}m;FDY(FW-AA31cg^l7L6?%&KwSBiU1jk2#MqU z&!;cD%$UYqfGwHX`b6l&8_wQw6H_@t^JoorXCdkRIz)jDuIbJaM~<>AUx`!yw?vFY zrvOSBidH!PP7qull7FvW(NwPJe{l^Y}cBRXFTSAPfH_;%e}gexK6uQ=>tyBFKkQ7lu>BeRgsNna zxn094B$%tHV$5RJ!f386Nd{FqiMP7aKa^FY`OIjg_=0SVMG6R^Vc8i*XPRS(niz|? zRJ*TG6V=R^LM!|2!qecX5g+>sZL#BXF=qzq7$j7|Pk0h67n0`sT#OjtnYyp72{Y}e z3Xy{YoPr&iMSS4BF6Vo5bzO`jqCt?urLMdPyur=SEX_Dle*%{bP?=s0LJbIyC?}a3 z^?v#06BA&ou{V)Hj+V~J`d8oov)`>@0_|UJL*7TAibPlL26q-r#+Ig9uS|mDLRgtj za(0>G`uCSkEqi4Vrr2b0c;Yok7>GnYtTzF=sEQau@d^?bH#Z&+gj*R1p!(t47LQ;ha4*LA<*sAje7+CJea*kzS8bj&y5hz`&jf(?xfSwftm{BU*cjJ^m)KiDFR4ybG_VlZ*00*PGCut z>{5jWORckM%s-gZg)_me{&X85cnIR68J;mSVk>w<%OzGgN}~YvKrYlztTlKxj%wfYVBXW9dkDs)c2LNSJOl!c037SI zQ2~ZL(9j?>mM`ET6-d*VelpYoY7VS;+;3gUEoiaJNg-7ws)32Uvb#>b@nx_|=d^Gt z%+&--n(I6{NP*0*+Y?cXmf6EP=cPE@ejE*sQzsp zWQ1nblV@i+kpMvq)foANx_DG3SbId+&&8^pYT4WOFhz`f@D> zPk1!&on#}ZL6m6gyyrz25r04J1B`#rYY-Z*?Tlhsd$V0-)n_nkR#9*DSVZj@0NM

@bIrlP(?U%3Ui7WznhZwHeUK%HpS5|~ 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 diff --git a/public/favicon.png b/public/favicon.png index c430b057132a70efb5368919a57c40450be9a78e..b5b00b96bad1c872c5d438b4929ea512be4afdcf 100755 GIT binary patch literal 6941 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 literal 888 zcmV-;1Bd*HP)kdg0009&Nkl9nn!wmNTfYpvM}-LhJ(rj|t3eog>H|UU({VWrd-bhPpwTgCr1?Cl$`!i_kbngz5j~egCiTeO)G%a=e@flLW)a%?okeTsUQZjmON z&G(}hrDKV}d!BX79?R{vzzhCTr`=CRUM^ymw{=+U5rf@eq$&&DZKy19*(xk_yQ4On zZKOQEt4J+jzNy}FrxR8=WPvX&M}wDrph=oaPn#vzF_ej?Y7q9I6Uxo-iAsNX!x@D* zXq5W}NT~Fi0nT8Dnp8lRTkO=NRJ~m1Ep=7`5kK24(%p%$bK;nO(PIC%F=4H+c_vt4 zoDl|hKMxei)77KYN-dTcV4KhX1B^0Lk!` zAPwjJN`Lns*e~>$oyIdvjyhhXN%gdcwON zHBFt55VcgHmHrfXUygBZ>fO%yj%n3upNCBKxGDD7YOI(I4oC>pDNGJYo{9HhjW66~ zg#t$$RUpj}o6L|YBy5nl!&e5JRH9myQVoj5wA0kx7xb2YfkavRh~%SW&R7TsQlX1n-{$R O0000 -

+
-
-
-

- - Working -

-
    -
  • Projects — create and manage projects with D1 database
  • -
  • Schedule — Gantt chart with phases, tasks, dependencies, and critical path
  • -
  • File browser — drive-style UI with folder navigation
  • -
  • Settings — app preferences with theme and notifications
  • -
  • Sidebar navigation with contextual project/file views
  • -
  • Command palette search (Cmd+K)
  • -
-
+
+
+
+

+ + Working +

+
    +
  • Projects — create and manage projects with D1 database
  • +
  • Schedule — Gantt chart with phases, tasks, dependencies, and critical path
  • +
  • File browser — drive-style UI with folder navigation
  • +
  • Settings — app preferences with theme and notifications
  • +
  • Sidebar navigation with contextual project/file views
  • +
  • Command palette search (Cmd+K)
  • +
+
-
-

- - In Progress -

-
    -
  • Project auto-provisioning (code generation, CSI folder structure)
  • -
  • Budget tracking (CSI divisions, estimated vs actual, change orders)
  • -
  • Document management (S3/R2 storage, metadata, versioning)
  • -
  • Communication logging (manual entries, timeline view)
  • -
  • Dashboard — three-column layout (past due, due today, action items)
  • -
  • User authentication and roles (WorkOS)
  • -
  • Email notifications (Resend)
  • -
  • Basic reports (budget variance, overdue tasks, monthly actuals)
  • -
-
+
+

+ + In Progress +

+
    +
  • Project auto-provisioning (code generation, CSI folder structure)
  • +
  • Budget tracking (CSI divisions, estimated vs actual, change orders)
  • +
  • Document management (S3/R2 storage, metadata, versioning)
  • +
  • Communication logging (manual entries, timeline view)
  • +
  • Dashboard — three-column layout (past due, due today, action items)
  • +
  • User authentication and roles (WorkOS)
  • +
  • Email notifications (Resend)
  • +
  • Basic reports (budget variance, overdue tasks, monthly actuals)
  • +
+
-
-

- - Planned -

-
    -
  • Client portal with read-only views
  • -
  • BuilderTrend import wizard (CSV-based)
  • -
  • Daily logs
  • -
  • Time tracking
  • -
  • Report builder (custom fields and filters)
  • -
  • Bid package management
  • -
-
+
+

+ + Planned +

+
    +
  • Client portal with read-only views
  • +
  • BuilderTrend import wizard (CSV-based)
  • +
  • Daily logs
  • +
  • Time tracking
  • +
  • Report builder (custom fields and filters)
  • +
  • Bid package management
  • +
+
-
-

- - Future -

-
    -
  • Netsuite/QuickBooks API sync
  • -
  • Payment integration
  • -
  • RFI/Submittal tracking
  • -
  • Native mobile apps (iOS/Android)
  • -
  • Advanced scheduling (resource leveling, baseline comparison)
  • -
-
-
+
+

+ + Future +

+
    +
  • Netsuite/QuickBooks API sync
  • +
  • Payment integration
  • +
  • RFI/Submittal tracking
  • +
  • Native mobile apps (iOS/Android)
  • +
  • Advanced scheduling (resource leveling, baseline comparison)
  • +
+
- + + {data && ( +
+ + +
+

View on GitHub

+

{REPO}

+
+ +
+
+ } + label="Stars" + value={data.repo.stargazers_count} + /> + } + label="Forks" + value={data.repo.forks_count} + /> + } + label="Issues" + value={data.repo.open_issues_count} + /> + } + label="Watchers" + value={data.repo.subscribers_count} + /> +
+ + +
+ )}
) } + +function StatCard({ + icon, + label, + value, +}: { + icon: React.ReactNode + label: string + value: number +}) { + return ( +
+
+ {icon} + {label} +
+

+ {value.toLocaleString()} +

+
+ ) +} diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx index 8959d6d..23cd6dc 100755 --- a/src/components/app-sidebar.tsx +++ b/src/components/app-sidebar.tsx @@ -78,7 +78,7 @@ function SidebarNav({ projects: { id: string; name: string }[] }) { const pathname = usePathname() - const { state } = useSidebar() + const { state, setOpen } = useSidebar() const { open: openSearch } = useCommandMenu() const { open: openSettings } = useSettings() const isExpanded = state === "expanded" @@ -86,6 +86,13 @@ function SidebarNav({ const isProjectMode = /^\/dashboard\/projects\/[^/]+/.test( pathname ?? "" ) + + React.useEffect(() => { + if ((isFilesMode || isProjectMode) && !isExpanded) { + setOpen(true) + } + }, [isFilesMode, isProjectMode, isExpanded, setOpen]) + const showContext = isExpanded && (isFilesMode || isProjectMode) const mode = showContext && isFilesMode diff --git a/src/components/files/storage-indicator.tsx b/src/components/files/storage-indicator.tsx index 6ba9f7d..917354d 100755 --- a/src/components/files/storage-indicator.tsx +++ b/src/components/files/storage-indicator.tsx @@ -1,6 +1,5 @@ "use client" -import { Progress } from "@/components/ui/progress" import { formatFileSize } from "@/lib/file-utils" import type { StorageUsage } from "@/lib/files-data" @@ -8,14 +7,15 @@ export function StorageIndicator({ usage }: { usage: StorageUsage }) { const percent = Math.round((usage.used / usage.total) * 100) return ( -
-
- Storage - {percent}% used +
+
+
- -

- {formatFileSize(usage.used)} of {formatFileSize(usage.total)} +

+ {formatFileSize(usage.used)} of {formatFileSize(usage.total)} used

) diff --git a/src/components/nav-files.tsx b/src/components/nav-files.tsx index 8eabd3a..d618ff9 100755 --- a/src/components/nav-files.tsx +++ b/src/components/nav-files.tsx @@ -19,7 +19,6 @@ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, - SidebarSeparator, } from "@/components/ui/sidebar" import { cn } from "@/lib/utils" @@ -84,8 +83,7 @@ export function NavFiles() { -
- +
diff --git a/src/components/nav-user.tsx b/src/components/nav-user.tsx index aac282e..3e0de3f 100755 --- a/src/components/nav-user.tsx +++ b/src/components/nav-user.tsx @@ -57,12 +57,12 @@ export function NavUser({ MV
- {user.name} - + {user.name} + {user.email}
- +