Skip to content

Commit d7209f5

Browse files
authored
Merge pull request #131 from ArjinAlbay/claude/modern-github-explorer-01DSTAKCia1ktgndFxUSPhr1
Claude/modern GitHub explorer 01 dstak cia1ktgnd fx us phr1
2 parents a02543b + f4acada commit d7209f5

24 files changed

+3881
-164
lines changed

package-lock.json

Lines changed: 1868 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,28 @@
2424
"@radix-ui/react-tabs": "^1.1.12",
2525
"@radix-ui/react-tooltip": "^1.2.8",
2626
"@tanstack/react-table": "^8.21.3",
27+
"@types/react-syntax-highlighter": "^15.5.13",
2728
"chart.js": "^4.5.0",
2829
"class-variance-authority": "^0.7.1",
2930
"clsx": "^2.1.1",
31+
"cmdk": "^1.1.1",
3032
"date-fns": "^4.1.0",
3133
"echarts": "^5.6.0",
3234
"echarts-for-react": "^3.0.2",
35+
"framer-motion": "^12.23.24",
36+
"github-markdown-css": "^5.8.1",
3337
"lucide-react": "^0.525.0",
3438
"next": "15.3.4",
3539
"next-auth": "^4.24.11",
3640
"react": "^19.0.0",
3741
"react-chartjs-2": "^5.3.0",
3842
"react-dom": "^19.0.0",
43+
"react-markdown": "^10.1.0",
44+
"react-resizable-panels": "^3.0.6",
45+
"react-syntax-highlighter": "^16.1.0",
3946
"recharts": "^3.1.0",
47+
"rehype-raw": "^7.0.0",
48+
"remark-gfm": "^4.0.1",
4049
"tailwind-merge": "^3.3.1",
4150
"zustand": "^5.0.6"
4251
},

src/app/globals.css

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,28 @@
224224
}
225225

226226
body {
227-
@apply bg-background text-foreground;
227+
@apply bg-background text-foreground font-sans;
228+
}
229+
230+
h1, h2, h3, h4, h5, h6 {
231+
@apply font-sans;
232+
}
233+
234+
code, pre, kbd, samp {
235+
@apply font-mono;
236+
}
237+
}
238+
239+
@layer utilities {
240+
.glass-card {
241+
@apply bg-background/80 backdrop-blur-md border border-border/20;
242+
}
243+
244+
.glass-modal {
245+
@apply bg-background/90 backdrop-blur-lg border border-border/30;
246+
}
247+
248+
.glass-header {
249+
@apply bg-background/80 backdrop-blur-md border-b border-border/50;
228250
}
229251
}

src/app/layout.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { OAuthSessionSync } from "@/components/providers/OAuthSessionSync";
77

88
import { NotificationProvider } from "@/components/common/NotificationProvider";
99
import { DataInitializer } from "@/components/providers/DataInitializer";
10+
import { CommandPalette } from "@/components/command/CommandPalette";
11+
import { PageTracker } from "@/components/providers/PageTracker";
1012

1113
const geistSans = Geist({
1214
variable: "--font-geist-sans",
@@ -37,6 +39,8 @@ export default function RootLayout({
3739
<ThemeProvider defaultTheme="system" storageKey="githubmon-theme">
3840
<OAuthSessionSync />
3941
<DataInitializer />
42+
<PageTracker />
43+
<CommandPalette />
4044
{children}
4145
<NotificationProvider />
4246
</ThemeProvider>

src/app/login/page.tsx

Lines changed: 104 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -13,47 +13,91 @@ function LoginContent() {
1313
const error = searchParams.get("error");
1414

1515
return (
16-
<div className="h-screen bg-background flex items-center justify-center p-4">
17-
<div className="w-full max-w-md">
18-
<Card className="shadow-xl">
19-
<CardHeader className="text-center pb-6 space-y-2">
20-
<div className="mx-auto w-16 h-16 bg-primary/10 rounded-full flex items-center justify-center mb-4">
21-
<svg className="w-8 h-8" fill="currentColor" viewBox="0 0 20 20">
22-
<path
23-
fillRule="evenodd"
24-
d="M10 0C4.477 0 0 4.484 0 10.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0110 4.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.203 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.942.359.31.678.921.678 1.856 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0020 10.017C20 4.484 15.522 0 10 0z"
25-
clipRule="evenodd"
26-
/>
27-
</svg>
28-
</div>
29-
<CardTitle className="text-2xl font-bold">GitMon</CardTitle>
30-
<p className="text-muted-foreground text-sm">
31-
GitHub organization analytics and monitoring
16+
<div className="h-screen flex flex-col md:flex-row">
17+
<div className="hidden md:flex md:w-1/2 bg-gradient-to-br from-black to-gray-900 dark:from-gray-950 dark:to-black relative overflow-hidden">
18+
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(139,92,246,0.1),transparent_50%)]" />
19+
<div className="absolute inset-0 bg-[linear-gradient(to_right,rgba(255,255,255,0.02)_1px,transparent_1px),linear-gradient(to_bottom,rgba(255,255,255,0.02)_1px,transparent_1px)] bg-[size:4rem_4rem]" />
20+
21+
<div className="relative z-10 flex flex-col justify-between p-12 text-white">
22+
<div>
23+
<svg className="w-12 h-12" fill="currentColor" viewBox="0 0 20 20">
24+
<path
25+
fillRule="evenodd"
26+
d="M10 0C4.477 0 0 4.484 0 10.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0110 4.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.203 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.942.359.31.678.921.678 1.856 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0020 10.017C20 4.484 15.522 0 10 0z"
27+
clipRule="evenodd"
28+
/>
29+
</svg>
30+
<h1 className="text-4xl font-bold mt-8 mb-4">GitHubMon</h1>
31+
<p className="text-xl text-gray-300 max-w-md">
32+
Powerful GitHub analytics and monitoring for modern development teams
3233
</p>
33-
</CardHeader>
34+
</div>
3435

35-
<CardContent className="space-y-6 pb-8">
36-
{error && (
37-
<div className="p-3 rounded-md bg-destructive/10 border border-destructive/20">
38-
<p className="text-sm text-destructive">
39-
{error === "authentication_failed"
40-
? "Authentication failed. Please try again."
41-
: "An error occurred during sign in. Please try again."}
42-
</p>
36+
<div className="space-y-6">
37+
<div className="flex items-center gap-4">
38+
<div className="w-12 h-12 rounded-lg bg-white/10 backdrop-blur-sm flex items-center justify-center">
39+
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
40+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
41+
</svg>
4342
</div>
44-
)}
43+
<div>
44+
<h3 className="font-semibold">Real-time Analytics</h3>
45+
<p className="text-sm text-gray-400">Track repository performance</p>
46+
</div>
47+
</div>
48+
<div className="flex items-center gap-4">
49+
<div className="w-12 h-12 rounded-lg bg-white/10 backdrop-blur-sm flex items-center justify-center">
50+
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
51+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" />
52+
</svg>
53+
</div>
54+
<div>
55+
<h3 className="font-semibold">Smart Notifications</h3>
56+
<p className="text-sm text-gray-400">Stay updated on what matters</p>
57+
</div>
58+
</div>
59+
<div className="flex items-center gap-4">
60+
<div className="w-12 h-12 rounded-lg bg-white/10 backdrop-blur-sm flex items-center justify-center">
61+
<svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
62+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4" />
63+
</svg>
64+
</div>
65+
<div>
66+
<h3 className="font-semibold">Customizable</h3>
67+
<p className="text-sm text-gray-400">Tailored to your workflow</p>
68+
</div>
69+
</div>
70+
</div>
71+
72+
<div className="text-sm text-gray-400">
73+
Trusted by development teams worldwide
74+
</div>
75+
</div>
76+
</div>
4577

46-
<div className="text-center space-y-2">
47-
<h3 className="text-lg font-semibold">Welcome Back</h3>
48-
<p className="text-sm text-muted-foreground">
49-
Sign in with your GitHub account to continue
78+
<div className="flex-1 flex items-center justify-center p-8 bg-background">
79+
<div className="w-full max-w-md space-y-8">
80+
<div className="text-center md:text-left animate-in fade-in slide-in-from-bottom-4 duration-700">
81+
<h2 className="text-3xl font-bold mb-2">Welcome back</h2>
82+
<p className="text-muted-foreground">
83+
Sign in with your GitHub account to continue
84+
</p>
85+
</div>
86+
87+
{error && (
88+
<div className="p-4 rounded-lg bg-destructive/10 border border-destructive/20 animate-in fade-in slide-in-from-bottom-4 duration-500">
89+
<p className="text-sm text-destructive">
90+
{error === "authentication_failed"
91+
? "Authentication failed. Please try again."
92+
: "An error occurred during sign in. Please try again."}
5093
</p>
5194
</div>
95+
)}
5296

97+
<div className="space-y-4 animate-in fade-in slide-in-from-bottom-4 duration-700 delay-150">
5398
<Button
5499
onClick={() => signIn('github', { callbackUrl: '/auth/callback' })}
55-
className="w-full h-12 font-semibold text-base"
56-
size="lg"
100+
className="w-full h-14 text-base font-semibold bg-black dark:bg-white text-white dark:text-black hover:bg-gray-900 dark:hover:bg-gray-100 transition-all hover:-translate-y-0.5 shadow-lg hover:shadow-xl"
57101
>
58102
<svg
59103
className="w-5 h-5 mr-3"
@@ -69,26 +113,35 @@ function LoginContent() {
69113
Continue with GitHub
70114
</Button>
71115

72-
<div className="text-center">
73-
<p className="text-xs text-muted-foreground">
74-
By signing in, you agree to our{" "}
75-
<Link
76-
href="/terms-of-service"
77-
className="underline hover:text-foreground transition-colors"
78-
>
79-
terms of service
80-
</Link>{" "}
81-
and{" "}
82-
<Link
83-
href="/privacy-policy"
84-
className="underline hover:text-foreground transition-colors"
85-
>
86-
privacy policy
87-
</Link>
88-
</p>
116+
<div className="relative">
117+
<div className="absolute inset-0 flex items-center">
118+
<div className="w-full border-t border-border"></div>
119+
</div>
120+
<div className="relative flex justify-center text-xs uppercase">
121+
<span className="bg-background px-2 text-muted-foreground">
122+
Secure authentication via GitHub
123+
</span>
124+
</div>
89125
</div>
90-
</CardContent>
91-
</Card>
126+
</div>
127+
128+
<div className="text-center text-xs text-muted-foreground animate-in fade-in slide-in-from-bottom-4 duration-700 delay-300">
129+
By signing in, you agree to our{" "}
130+
<Link
131+
href="/terms-of-service"
132+
className="underline hover:text-foreground transition-colors"
133+
>
134+
terms of service
135+
</Link>{" "}
136+
and{" "}
137+
<Link
138+
href="/privacy-policy"
139+
className="underline hover:text-foreground transition-colors"
140+
>
141+
privacy policy
142+
</Link>
143+
</div>
144+
</div>
92145
</div>
93146
</div>
94147
);

src/app/page.tsx

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import { SearchModal } from "@/components/search/SearchModal";
88
import { CallToActionSection } from "@/components/CallToActionSection";
99
import { Header } from "@/components/layout/Header";
1010
import Footer from "@/components/layout/Footer";
11+
import { DotPattern } from "@/components/ui/dot-pattern";
12+
import { BentoGrid } from "@/components/landing/BentoGrid";
13+
import { CodeDemo } from "@/components/landing/CodeDemo";
1114

1215
export default function HomePage() {
1316
const router = useRouter();
@@ -38,18 +41,26 @@ export default function HomePage() {
3841
return (
3942
<>
4043
<Header />
41-
<main className="max-w-7xl mx-auto p-6 space-y-6">
42-
{/* Hero Section */}
43-
<div className="text-center space-y-8">
44-
<div className="space-y-4">
45-
<h1 className="text-4xl md:text-6xl font-bold text-gray-900 dark:text-white">
46-
GitHub Analytics
47-
<span className="text-indigo-600 dark:text-indigo-400 block">
48-
Made Simple
49-
</span>
50-
</h1>
44+
<main className="relative max-w-7xl mx-auto p-6 space-y-6">
45+
<DotPattern
46+
className="opacity-50"
47+
dotColor="rgba(139, 92, 246, 0.15)"
48+
gap={30}
49+
/>
5150

52-
<p className="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto">
51+
<div className="text-center space-y-8 py-20 relative">
52+
<div className="space-y-6">
53+
<div className="relative inline-block">
54+
<h1 className="text-5xl md:text-7xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-white via-gray-200 to-gray-400 dark:from-white dark:via-gray-100 dark:to-gray-300">
55+
GitHub Analytics
56+
<span className="block mt-2 bg-clip-text text-transparent bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500">
57+
Made Simple
58+
</span>
59+
</h1>
60+
<div className="absolute -bottom-4 left-1/2 -translate-x-1/2 w-64 h-24 bg-gradient-to-r from-indigo-500/20 via-purple-500/20 to-pink-500/20 blur-3xl" />
61+
</div>
62+
63+
<p className="text-xl text-gray-600 dark:text-gray-300 max-w-3xl mx-auto mt-8">
5364
Monitor your GitHub repositories, track trends, and analyze
5465
performance with powerful insights and beautiful visualizations.
5566
</p>
@@ -59,6 +70,8 @@ export default function HomePage() {
5970
<Separator />
6071
</main>
6172

73+
<BentoGrid />
74+
<CodeDemo />
6275
<CallToActionSection />
6376
<SearchModal />
6477
<Footer />

src/components/CallToActionSection.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ export function CallToActionSection() {
88
const router = useRouter();
99

1010
return (
11-
<section className="text-center py-12">
12-
<Card className="bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-700 shadow-xl hover:shadow-2xl transition-all duration-300 max-w-4xl mx-auto">
11+
<section className="text-center py-12 px-4">
12+
<Card className="bg-background/80 backdrop-blur-md border border-border/20 shadow-xl hover:shadow-2xl transition-all duration-300 max-w-4xl mx-auto">
1313
<CardContent className="p-8">
1414
<div className="flex flex-col md:flex-row items-center gap-8">
1515
<div className="flex-shrink-0">

0 commit comments

Comments
 (0)