@@ -7,14 +7,58 @@ export const metadata: Metadata = {
77 title : "Login - DevPulse" ,
88 description :
99 "Log in to your DevPulse account to monitor your coding activity and compete on leaderboards." ,
10+ keywords : [
11+ "DevPulse" ,
12+ "login" ,
13+ "coding activity tracker" ,
14+ "developer leaderboards" ,
15+ "WakaTime integration" ,
16+ "coding stats" ,
17+ "programming habits" ,
18+ "developer competition" ,
19+ "flex your projects" ,
20+ "coding streaks" ,
21+ "productivity insights" ,
22+ ] ,
23+ openGraph : {
24+ title : "Login - DevPulse" ,
25+ description :
26+ "Log in to your DevPulse account to monitor your coding activity and compete on leaderboards." ,
27+ url : "https://devpulse-waka.vercel.app/login" ,
28+ siteName : "DevPulse" ,
29+ images : [
30+ {
31+ url : "https://devpulse-waka.vercel.app/images/devpulse.cover.png" ,
32+ width : 1200 ,
33+ height : 630 ,
34+ alt : "DevPulse Cover Image" ,
35+ } ,
36+ ] ,
37+ locale : "en_US" ,
38+ type : "website" ,
39+ } ,
40+ twitter : {
41+ card : "summary_large_image" ,
42+ title : "Login - DevPulse" ,
43+ description :
44+ "Log in to your DevPulse account to monitor your coding activity and compete on leaderboards." ,
45+ images : [
46+ {
47+ url : "https://devpulse-waka.vercel.app/images/devpulse.cover.png" ,
48+ alt : "DevPulse Cover Image" ,
49+ } ,
50+ ] ,
51+ } ,
1052} ;
1153
1254export default async function Login ( props : {
1355 searchParams ?: Promise < { redirect ?: string } > ;
1456} ) {
1557 const redirectParam = ( await props . searchParams ) ?. redirect ;
1658 const redirectTo =
17- redirectParam && redirectParam . startsWith ( "/" ) && ! redirectParam . startsWith ( "//" )
59+ redirectParam &&
60+ redirectParam . startsWith ( "/" ) &&
61+ ! redirectParam . startsWith ( "//" )
1862 ? redirectParam
1963 : undefined ;
2064
@@ -26,9 +70,14 @@ export default async function Login(props: {
2670 < div className = "absolute inset-0 grid-bg opacity-30" />
2771
2872 < div className = "relative z-10" >
29- < Link href = "/" className = "flex items-center gap-3 w-fit hover:opacity-80 transition" >
73+ < Link
74+ href = "/"
75+ className = "flex items-center gap-3 w-fit hover:opacity-80 transition"
76+ >
3077 < Image src = "/logo.svg" alt = "DevPulse Logo" width = { 40 } height = { 40 } />
31- < span className = "text-2xl font-bold tracking-tight text-white" > DevPulse</ span >
78+ < span className = "text-2xl font-bold tracking-tight text-white" >
79+ DevPulse
80+ </ span >
3281 </ Link >
3382 </ div >
3483
@@ -37,26 +86,31 @@ export default async function Login(props: {
3786 Welcome back to your dashboard.
3887 </ h1 >
3988 < p className = "text-gray-400 text-lg leading-relaxed mb-8" >
40- Access your personalized coding metrics, compare your stats, and keep your productivity streak alive.
89+ Access your personalized coding metrics, compare your stats, and
90+ keep your productivity streak alive.
4191 </ p >
42-
92+
4393 < div className = "glass-card border border-white/5 rounded-2xl p-5 bg-white/5 backdrop-blur-md shadow-2xl" >
4494 < div className = "flex items-center gap-2 mb-4" >
4595 < div className = "w-3 h-3 rounded-full bg-red-500/80" > </ div >
4696 < div className = "w-3 h-3 rounded-full bg-yellow-500/80" > </ div >
4797 < div className = "w-3 h-3 rounded-full bg-green-500/80" > </ div >
48- < span className = "ml-2 text-xs font-mono text-gray-500" > devpulse-auth.ts</ span >
98+ < span className = "ml-2 text-xs font-mono text-gray-500" >
99+ devpulse-auth.ts
100+ </ span >
49101 </ div >
50102 < div className = "space-y-1.5 font-mono text-sm" >
51103 < div className = "flex" >
52- < span className = "text-indigo-400 mr-2" > import</ span >
53- < span className = "text-gray-200" > { "{ Metrics }" } </ span >
54- < span className = "text-indigo-400 mx-2" > from</ span >
55- < span className = "text-green-400" > '@devpulse/core'</ span >
104+ < span className = "text-indigo-400 mr-2" > import</ span >
105+ < span className = "text-gray-200" > { "{ Metrics }" } </ span >
106+ < span className = "text-indigo-400 mx-2" > from</ span >
107+ < span className = "text-green-400" >
108+ '@devpulse/core'
109+ </ span >
56110 < span className = "text-gray-400" > ;</ span >
57111 </ div >
58112 < div className = "flex mt-2" >
59- < span className = "text-purple-400 mr-2" > await</ span >
113+ < span className = "text-purple-400 mr-2" > await</ span >
60114 < span className = "text-blue-400" > Metrics</ span >
61115 < span className = "text-gray-200" > .</ span >
62116 < span className = "text-yellow-200" > syncToday</ span >
@@ -79,7 +133,7 @@ export default async function Login(props: {
79133 { /* Right Side - Form */ }
80134 < div className = "w-full lg:w-1/2 flex flex-col justify-center items-center p-8 sm:p-12 xl:p-20 relative" >
81135 < div className = "absolute inset-0 grid-bg opacity-20 lg:hidden" />
82-
136+
83137 < div className = "w-full max-w-sm relative z-10" >
84138 < div className = "lg:hidden flex items-center justify-center gap-3 mb-10" >
85139 < Image src = "/logo.svg" alt = "DevPulse Logo" width = { 40 } height = { 40 } />
@@ -88,15 +142,21 @@ export default async function Login(props: {
88142
89143 < div className = "mb-8 text-left" >
90144 < h2 className = "text-3xl font-bold text-white mb-2" > Log in</ h2 >
91- < p className = "text-gray-400" > Enter your credentials to access your account.</ p >
145+ < p className = "text-gray-400" >
146+ Enter your credentials to access your account.
147+ </ p >
92148 </ div >
93149
94150 < LoginForm />
95151
96152 < p className = "mt-8 text-center text-sm text-gray-400" >
97153 Don't have an account?{ " " }
98154 < Link
99- href = { redirectTo ? `/signup?redirect=${ encodeURIComponent ( redirectTo ) } ` : "/signup" }
155+ href = {
156+ redirectTo
157+ ? `/signup?redirect=${ encodeURIComponent ( redirectTo ) } `
158+ : "/signup"
159+ }
100160 className = "text-indigo-400 hover:text-indigo-300 font-semibold transition-colors underline-offset-4 hover:underline"
101161 >
102162 Sign up
0 commit comments