From af524184e224377e7342d37a45c47c997706643f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 07:57:28 +0000 Subject: [PATCH 1/2] Add website with /oss page featuring anti-dark-pattern and slop-scan cards Agent-Logs-Url: https://github.com/erayaha/slop-scan/sessions/0ac53f12-6992-4829-82bf-1783f14e2f8b Co-authored-by: PranayShah <2013275+PranayShah@users.noreply.github.com> --- website/app/globals.css | 36 +++++ website/app/layout.tsx | 21 +++ website/app/oss/page.tsx | 279 +++++++++++++++++++++++++++++++++++++ website/app/page.tsx | 19 +++ website/next-env.d.ts | 6 + website/next.config.mjs | 4 + website/package.json | 25 ++++ website/postcss.config.mjs | 9 ++ website/tailwind.config.ts | 34 +++++ website/tsconfig.json | 40 ++++++ 10 files changed, 473 insertions(+) create mode 100644 website/app/globals.css create mode 100644 website/app/layout.tsx create mode 100644 website/app/oss/page.tsx create mode 100644 website/app/page.tsx create mode 100644 website/next-env.d.ts create mode 100644 website/next.config.mjs create mode 100644 website/package.json create mode 100644 website/postcss.config.mjs create mode 100644 website/tailwind.config.ts create mode 100644 website/tsconfig.json diff --git a/website/app/globals.css b/website/app/globals.css new file mode 100644 index 0000000..bf8028e --- /dev/null +++ b/website/app/globals.css @@ -0,0 +1,36 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --border: 240 5.9% 90%; +} + +.dark { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + --border: 240 3.7% 15.9%; +} + +* { + border-color: hsl(var(--border)); +} + +body { + background-color: hsl(var(--background)); + color: hsl(var(--foreground)); +} diff --git a/website/app/layout.tsx b/website/app/layout.tsx new file mode 100644 index 0000000..399f6d3 --- /dev/null +++ b/website/app/layout.tsx @@ -0,0 +1,21 @@ +import type { Metadata } from "next"; +import "./globals.css"; + +export const metadata: Metadata = { + title: "Erayaha", + description: "Erayaha — open source tools for developers.", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/website/app/oss/page.tsx b/website/app/oss/page.tsx new file mode 100644 index 0000000..1b89ff1 --- /dev/null +++ b/website/app/oss/page.tsx @@ -0,0 +1,279 @@ +import type { Metadata } from "next"; +import Link from "next/link"; + +export const metadata: Metadata = { + title: "Open Source | Erayaha", + description: + "Explore Erayaha's open source projects. We build tools for the developer community to detect UX anti-patterns and improve software quality.", +}; + +const ossProjects = [ + { + category: "Developer Tools", + name: "Anti Dark Pattern Linter", + subtitle: "Catch UX anti-patterns before they ship", + description: + "A GitHub Actions linter that automatically detects UX dark patterns in your codebase. Prevent misleading UI, hidden costs, roach motels, and other deceptive patterns from reaching your users — directly in your CI/CD pipeline.", + tags: ["GitHub Actions", "UX", "Linting", "CI/CD", "Dark Patterns"], + links: [ + { + label: "GitHub", + href: "https://github.com/erayaha/anti-dark-pattern", + primary: false, + }, + { + label: "Actions Marketplace", + href: "https://github.com/marketplace/actions/erayaha-anti-dark-pattern-linter", + primary: true, + }, + ], + }, + { + category: "Security", + name: "Slop Scan", + subtitle: "Detect hallucinated npm packages before they ship", + description: + "A security CLI and GitHub Action that parses your source code and Markdown documentation for npm package references, then verifies every package against the live npm registry. Protect your supply chain from slopsquatting — AI-hallucinated package names that attackers register as malware.", + tags: ["Security", "npm", "CLI", "GitHub Actions", "Supply Chain"], + links: [ + { + label: "GitHub", + href: "https://github.com/erayaha/slop-scan", + primary: false, + }, + { + label: "Actions Marketplace", + href: "https://github.com/marketplace/actions/slop-scan", + primary: true, + }, + ], + }, +]; + +function GitHubIcon({ size = 18 }: { size?: number }) { + return ( + + ); +} + +function CodeIcon() { + return ( + + ); +} + +function ExternalLinkIcon() { + return ( + + ); +} + +export default function OSSPage() { + return ( +
+ {/* Hero */} +
+
+
+ + Open Source +
+

+ Built for the{" "} + + community + +

+

+ We believe in giving back. Erayaha open sources tools that help + developers build better, more ethical software — starting with + detection of UX anti-patterns. +

+
+ + + View on GitHub + + + Explore projects + +
+
+
+ + {/* Projects */} +
+
+
+

+ Our Projects +

+

+ Free, open source tools built by the Erayaha team and maintained + for the community. +

+
+ +
+ {ossProjects.map((project) => ( +
+
+
+ + {project.category} + +

+ {project.name} +

+

+ {project.subtitle} +

+
+
+ +
+
+ +

+ {project.description} +

+ +
+ {project.tags.map((tag) => ( + + {tag} + + ))} +
+ +
+ {project.links.map((link) => ( + + {!link.primary && } + {link.label} + {link.primary && } + + ))} +
+
+ ))} +
+
+
+ + {/* Values */} +
+
+
+
+

+ Open by default +

+

+ We default to open source for tools that benefit the broader + developer ecosystem. +

+
+
+

CI/CD native

+

+ Our tools integrate directly into your workflow as GitHub + Actions — no extra setup required. +

+
+
+

+ Community first +

+

+ Contributions, issues, and ideas are always welcome. We build + these tools together. +

+
+
+
+
+ + {/* CTA */} +
+
+

+ Get involved +

+

+ Star our repos, report issues, submit pull requests, or just spread + the word. Every contribution counts. +

+ + + github.com/erayaha + +
+
+
+ ); +} diff --git a/website/app/page.tsx b/website/app/page.tsx new file mode 100644 index 0000000..e2b6f6b --- /dev/null +++ b/website/app/page.tsx @@ -0,0 +1,19 @@ +import Link from "next/link"; + +export default function HomePage() { + return ( +
+

Erayaha

+

+ Erayaha builds open source tools that help developers build better, + more ethical software. +

+ + View Open Source Projects → + +
+ ); +} diff --git a/website/next-env.d.ts b/website/next-env.d.ts new file mode 100644 index 0000000..830fb59 --- /dev/null +++ b/website/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/website/next.config.mjs b/website/next.config.mjs new file mode 100644 index 0000000..4678774 --- /dev/null +++ b/website/next.config.mjs @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/website/package.json b/website/package.json new file mode 100644 index 0000000..7f0019e --- /dev/null +++ b/website/package.json @@ -0,0 +1,25 @@ +{ + "name": "erayaha-website", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "next dev -p 4000", + "build": "next build", + "start": "next start -p 4000", + "lint": "next lint" + }, + "dependencies": { + "next": "15.5.16", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.49", + "tailwindcss": "^3.4.17", + "typescript": "^5" + } +} diff --git a/website/postcss.config.mjs b/website/postcss.config.mjs new file mode 100644 index 0000000..2ef30fc --- /dev/null +++ b/website/postcss.config.mjs @@ -0,0 +1,9 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; + +export default config; diff --git a/website/tailwind.config.ts b/website/tailwind.config.ts new file mode 100644 index 0000000..66a0500 --- /dev/null +++ b/website/tailwind.config.ts @@ -0,0 +1,34 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + darkMode: "class", + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + colors: { + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + border: "hsl(var(--border))", + }, + }, + }, + plugins: [], +}; + +export default config; diff --git a/website/tsconfig.json b/website/tsconfig.json new file mode 100644 index 0000000..d81d4ee --- /dev/null +++ b/website/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./*" + ] + }, + "target": "ES2017" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} From bdc8281ecd35835086d0ecb82e55d16e60419597 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 May 2026 07:59:15 +0000 Subject: [PATCH 2/2] Extract icon size magic numbers into named constants Agent-Logs-Url: https://github.com/erayaha/slop-scan/sessions/0ac53f12-6992-4829-82bf-1783f14e2f8b Co-authored-by: PranayShah <2013275+PranayShah@users.noreply.github.com> --- website/app/oss/page.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/website/app/oss/page.tsx b/website/app/oss/page.tsx index 1b89ff1..856bc64 100644 --- a/website/app/oss/page.tsx +++ b/website/app/oss/page.tsx @@ -50,7 +50,11 @@ const ossProjects = [ }, ]; -function GitHubIcon({ size = 18 }: { size?: number }) { +const ICON_SIZE_SM = 14; +const ICON_SIZE_MD = 18; +const ICON_SIZE_LG = 24; + +function GitHubIcon({ size = ICON_SIZE_MD }: { size?: number }) { return (
- +
@@ -208,7 +212,7 @@ export default function OSSPage() { : "inline-flex items-center gap-2 px-4 py-2 rounded-lg border border-border hover:bg-secondary transition-colors text-sm font-medium" } > - {!link.primary && } + {!link.primary && } {link.label} {link.primary && }