diff --git a/package.json b/package.json deleted file mode 100644 index 7a4549cba..000000000 --- a/package.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "name": "devtrack", - "version": "0.2.0", - "private": true, - "scripts": { - "dev": "next dev", - "validate-env": "node scripts/validate-env.js", - "build": "npm run validate-env && next build && node scripts/copy-standalone-static.js", - "start": "next start", - "lint": "eslint src", - "type-check": "tsc --noEmit", - "test": "vitest run", - "test:coverage": "vitest run --coverage", - "test:e2e": "playwright test", - "supabase:generate-types": "npx supabase@latest gen types typescript --local > src/types/supabase.ts" - }, - "dependencies": { - "@anthropic-ai/sdk": "^0.107.0", - "@dnd-kit/core": "^6.3.1", - "@dnd-kit/sortable": "^10.0.0", - "@dnd-kit/utilities": "^3.2.2", - "@ducanh2912/next-pwa": "^10.2.9", - "@google/generative-ai": "^0.24.1", - "@sentry/nextjs": "^10", - "@supabase/ssr": "^0.12.0", - "@supabase/supabase-js": "^2.106.2", - "@swc/helpers": "^0.5.23", - "@upstash/redis": "^1.38.0", - "@vercel/analytics": "^2.0.1", - "@vercel/speed-insights": "^2.0.0", - "canvas-confetti": "^1.9.4", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "date-fns": "^3.6.0", - "dompurify": "^3.4.11", - "driver.js": "^1.6.0", - "fflate": "^0.8.3", - "groq-sdk": "^1.3.0", - "html-to-image": "^1.11.13", - "idb-keyval": "^6.2.6", - "jspdf": "^4.2.1", - "jspdf-autotable": "^5.0.7", - "lucide-react": "^0.577.0", - "next": "^16.2.7", - "next-auth": "^4.24.14", - "next-intl": "^4.13.0", - "next-pwa": "^5.6.0", - "qrcode.react": "^4.2.0", - "react": "^18", - "react-dom": "^18", - "react-markdown": "^10.1.0", - "recharts": "^2.15.4", - "rehype-sanitize": "^6.0.0", - "server-only": "^0.0.1", - "sharp": "^0.35.1", - "sonner": "^2.0.7", - "swagger-ui-react": "5.32.6", - "tailwind-merge": "^3.6.0" - }, - "devDependencies": { - "@emnapi/core": "^1.11.0", - "@emnapi/runtime": "^1.11.0", - "@next/env": "^16.2.7", - "@playwright/test": "1.61.1", - "@testing-library/dom": "^10.4.1", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.2", - "@types/canvas-confetti": "^1.9.0", - "@types/dompurify": "^3.0.5", - "@types/node": "^20", - "@types/react": "^19", - "@types/react-dom": "^19", - "@types/swagger-ui-react": "^5.18.0", - "@typescript-eslint/eslint-plugin": "^8.62.1", - "@typescript-eslint/parser": "^8.62.1", - "@vitest/coverage-v8": "^4.1.8", - "autoprefixer": "^10.5.2", - "eslint": "^9.39.4", - "eslint-config-next": "16.2.9", - "jsdom": "^29.1.1", - "postcss": "^8.5.16", - "tailwind-scrollbar": "^3.1.0", - "tailwindcss": "^3.4.1", - "tree-sitter": "^0.25.0", - "ts-jest": "^29.4.11", - "typescript": "^6", - "vitest": "^4.1.8", - "web-tree-sitter": "^0.26.10" - }, - "overrides": { - "glob": ">=10.5.0", - "serialize-javascript": ">=7.0.3", - "esbuild": ">=0.25.0", - "uuid": ">=9.0.1", - "swagger-client": "3.36.2", - "undici": ">=7.28.0", - "form-data": ">=4.0.6", - "@opentelemetry/core": ">=2.8.0", - "@opentelemetry/sdk-trace-base": ">=2.8.0", - "@opentelemetry/resources": ">=2.8.0", - "js-yaml": ">=4.1.0" - }, - "engines": { - "node": "20.x" - }, - "optionalDependencies": { - "@esbuild/linux-x64": "^0.28.0", - "@img/sharp-linux-x64": "^0.35.1", - "@parcel/watcher-darwin-arm64": "^2.5.6", - "@parcel/watcher-darwin-x64": "^2.5.6", - "@parcel/watcher-linux-x64-glibc": "^2.5.6", - "@parcel/watcher-linux-x64-musl": "^2.5.6", - "@swc/core-linux-x64-gnu": "^1.15.43" - }, - "pnpm": { - "onlyBuiltDependencies": [ - "@parcel/watcher", - "@scarf/scarf", - "@sentry/cli", - "@swc/core", - "@tree-sitter-grammars/tree-sitter-yaml", - "core-js-pure", - "core-js", - "esbuild", - "sharp", - "tree-sitter-json", - "tree-sitter", - "unrs-resolver" - ] - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69cd44ce1..63b029d8c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14817,4 +14817,4 @@ snapshots: zod@4.4.3: {} - zwitch@2.0.4: {} + zwitch@2.0.4: {} \ No newline at end of file diff --git a/src/components/landing/LandingPage.tsx b/src/components/landing/LandingPage.tsx index 1debed71c..68703c843 100644 --- a/src/components/landing/LandingPage.tsx +++ b/src/components/landing/LandingPage.tsx @@ -573,11 +573,14 @@ function HeroSection() { {/* Tagline */} -
+
Open-source developer productivity dashboard. Track GitHub streaks, PR velocity, and coding goals — automatically.
@@ -672,8 +675,9 @@ function CommitTicker() { {doubled.map((c, i) => ( @@ -714,6 +718,8 @@ function AboutHighlightCard({ transformOrigin: 'top center', transform: visible ? tiltStyle.transform : `perspective(1000px) rotateX(-90deg)`, transition: visible ? tiltStyle.transition : `opacity 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) ${index * 80}ms, transform 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) ${index * 80}ms`, + background: 'var(--card)', + border: '1px solid var(--border)', backdropFilter: 'blur(20px)', WebkitBackdropFilter: 'blur(20px)', cursor: 'pointer', @@ -737,11 +743,14 @@ function AboutHighlightCard({ }}> -@@ -794,7 +803,10 @@ function AboutSection() { > A clearer home for your developer progress. -
+
DevTrack helps developers, open-source contributors, and teams understand how their GitHub work is moving. It brings activity, pull requests, streaks, goals, and public profile insights into one calm dashboard so new users can quickly see what the platform is for.
@@ -873,15 +885,21 @@ function StatItem({ value, label, delay }: { value: number; label: string; delay transition: `all 0.8s cubic-bezier(0.16,1,0.3,1) ${delay}ms`, }} > -+
{f.desc}
@@ -1041,9 +1065,9 @@ function FeaturesSection() { FEATURE PREVIEW
{step.num} -
{step.desc}
+{step.desc}
); })} @@ -1267,14 +1292,20 @@ function ContributeSection({ stats }: { stats: RepoStats }) { borderRadius: 8, padding: '20px 20px 16px', }} > -{/* was '#555' */} +
DevTrack is fully open source — MIT licensed, self-hostable, and built by developers who actually use it. Every widget, every metric, every API was contributed by someone in this list. {stats.goodFirstIssues > 0 && ( - + {stats.goodFirstIssues}{" "} issues are tagged good first issue and waiting right now. )}