+
-
+
© {year} DevTrack. Built for open-source contributors.
-
Self-hostable, privacy-conscious, and designed for daily use.
+
+
MIT License
+
Self-hostable & Privacy-conscious
+
diff --git a/src/components/landing/LandingPage.tsx b/src/components/landing/LandingPage.tsx
index dc8c84bb..b0987fd9 100644
--- a/src/components/landing/LandingPage.tsx
+++ b/src/components/landing/LandingPage.tsx
@@ -108,8 +108,7 @@ function MouseSpotlight() {
useEffect(() => {
const fn = (e: MouseEvent) => {
if (ref.current) {
- ref.current.style.left = e.clientX + 'px';
- ref.current.style.top = e.clientY + 'px';
+ ref.current.style.transform = `translate3d(calc(${e.clientX}px - 50%), calc(${e.clientY}px - 50%), 0)`;
}
};
window.addEventListener('mousemove', fn, { passive: true });
@@ -121,10 +120,11 @@ function MouseSpotlight() {
aria-hidden
style={{
position: 'fixed', pointerEvents: 'none', zIndex: 0,
+ left: 0, top: 0,
width: 700, height: 700,
background: 'radial-gradient(circle, rgba(129,140,248,0.05) 0%, transparent 70%)',
- transform: 'translate(-50%,-50%)',
- transition: 'left 0.15s ease-out, top 0.15s ease-out',
+ transform: 'translate3d(-50%, -50%, 0)',
+ willChange: 'transform',
}}
/>
);
@@ -168,7 +168,7 @@ function LandingNav() {
═══════════════════════════════════════════ */
const wLabel: React.CSSProperties = {
fontFamily: MONO, fontSize: 10, fontWeight: 500,
- color: '#444', textTransform: 'uppercase', letterSpacing: '0.1em',
+ color: '#9ca3af', textTransform: 'uppercase', letterSpacing: '0.1em',
};
const wValue: React.CSSProperties = {
fontFamily: MONO, fontWeight: 600, color: TEXT,
@@ -273,7 +273,7 @@ function MergeWidget() {
merge rate
- 87%
+ 87%
weekly goal
- 84%
+ 84%
YOUR
CODE
HAS A
PULSE
-
.
+
.
{/* Tagline */}
@@ -445,7 +445,7 @@ function CommitTicker() {
@@ -466,15 +466,15 @@ function HeatmapSection() {
return (
-
+
52 weeks of contributions
-
less
+
less
{HC.map((c, i) => (
))}
-
more
+
more
- +
+ +
-
@@ -619,7 +619,7 @@ function FeaturesSection() {
borderTop: '1px solid #111',
maxWidth: 720, margin: '0 auto',
}}>
-
+
FEATURES
{FEATURES.map((f, i) => (
@@ -645,7 +645,7 @@ function SetupSection() {
transition: 'all 0.7s ease',
}}
>
-
+
SETUP
@@ -655,12 +655,12 @@ function SetupSection() {
textAlign: 'left', marginBottom: 32,
fontFamily: MONO, fontSize: 13, lineHeight: 1.8,
}}>
-
# start tracking in 30 seconds
+
# start tracking in 30 seconds
→ sign in at{' '}
devtrack.vercel.app
-
# or self-host
+
# or self-host
$ git clone github.com/…/devtrack
@@ -683,7 +683,7 @@ function SetupSection() {
-
+
MIT License · Self-hostable · Free forever · Zero vendor lock-in
@@ -715,7 +715,7 @@ function ContributeSection({ stats }: { stats: RepoStats }) {
}}
>
{/* Label */}
-
+
OPEN SOURCE
@@ -729,7 +729,7 @@ function ContributeSection({ stats }: { stats: RepoStats }) {
borderRadius: 8, padding: '20px 20px 16px',
}}
>
-
+
{s.icon} {s.label}
- {s.suffix && {s.suffix}}
+ {s.suffix && {s.suffix}}
))}
@@ -852,34 +852,7 @@ function ContributeSection({ stats }: { stats: RepoStats }) {
);
}
-/* ═══════════════════════════════════════════
- LANDING FOOTER (above global Footer)
- ═══════════════════════════════════════════ */
-function LandingFooter() {
- return (
-
- );
-}
+
/* ═══════════════════════════════════════════
MAIN EXPORT
@@ -899,7 +872,7 @@ export default function LandingPage({ repoStats }: { repoStats: RepoStats }) {
-
+
);
}