Files
mintel.me/apps/web/package.json
T
mmintelandClaude Opus 5.5 fa40fefe2f feat: rebuild mintel.me as a single-page freelance site
The site now presents one freelance developer on one page: hero, introduction,
four typical cases (developer for a product, make an app reliable, automate a
process, a website) with what you get, how it runs and what it costs, a
process automation section, technology and project fit, how I work, two live
references, questions and contact.

- Hero and closing headline are drawn from running binary digits.
- Each case explains its four steps with an animated drawing; the automation
  section shows example workflows with work travelling between systems; a
  pipeline run shows what a test catches before a release.
- Contact is one email address, kept in parts and assembled in the browser so
  it never appears in the page source (src/domain/email.ts, spec first).
- Imprint and privacy pages added.
- The old site (blog, case studies, contact form, fixed-price pages, video
  rendering and related scripts) is removed. Its URLs redirect to the homepage.
- The deploy smoke test checks the legal pages and the redirects instead of
  the removed case study.
- Dev scripts use docker compose v2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 22:33:06 +02:00

128 lines
4.2 KiB
JSON

{
"name": "@mintel/web",
"type": "module",
"version": "0.1.0",
"description": "Technical problem solver's blog - practical insights and learning notes",
"scripts": {
"dev": "next dev --webpack --hostname 0.0.0.0",
"dev:native": "next dev --webpack",
"build": "next build --webpack",
"start": "next start",
"lint": "eslint app src scripts",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"pagespeed:test": "npx tsx ./scripts/pagespeed-sitemap.ts",
"typecheck": "tsc --noEmit",
"test:mutation": "stryker run",
"check:og": "tsx scripts/check-og-images.ts"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.750.0",
"@emotion/is-prop-valid": "^1.4.0",
"@mdx-js/loader": "^3.1.1",
"@mdx-js/react": "^3.1.1",
"@mintel/concept-engine": "link:../../../at-mintel/packages/concept-engine",
"@mintel/content-engine": "link:../../../at-mintel/packages/content-engine",
"@mintel/estimation-engine": "link:../../../at-mintel/packages/estimation-engine",
"@mintel/meme-generator": "link:../../../at-mintel/packages/meme-generator",
"@mintel/pdf": "link:../../../at-mintel/packages/pdf-library",
"@mintel/thumbnail-generator": "link:../../../at-mintel/packages/thumbnail-generator",
"@next/mdx": "^16.1.6",
"@next/third-parties": "^16.1.6",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/context-async-hooks": "^2.1.0",
"@opentelemetry/core": "^2.1.0",
"@opentelemetry/sdk-trace-base": "^2.1.0",
"@react-pdf/renderer": "^4.3.2",
"@remotion/bundler": "^4.0.414",
"@remotion/cli": "^4.0.414",
"@remotion/lottie": "^4.0.414",
"@remotion/renderer": "^4.0.414",
"@remotion/tailwind": "^4.0.414",
"@sentry/core": "^10.38.0",
"@sentry/nextjs": "^10.38.0",
"@types/canvas-confetti": "^1.9.0",
"@types/ioredis": "^4.28.10",
"@types/react": "^19.2.8",
"@types/react-dom": "^19.2.3",
"@vercel/og": "^0.8.6",
"axios": "^1.13.4",
"canvas-confetti": "^1.9.4",
"clsx": "^2.1.1",
"crawlee": "^3.15.3",
"dotenv": "^17.3.1",
"esbuild": "^0.27.3",
"framer-motion": "^12.29.2",
"graphql": "^16.12.0",
"gray-matter": "^4.0.3",
"html-to-image": "^1.11.13",
"import-in-the-middle": "^1.11.0",
"ioredis": "^5.9.1",
"lucide-react": "^0.468.0",
"mermaid": "^11.12.2",
"next": "^16.1.6",
"next-mdx-remote": "^6.0.0",
"nodemailer": "^8.0.1",
"playwright": "^1.58.1",
"prismjs": "^1.30.0",
"puppeteer": "^24.36.1",
"qrcode": "^1.5.4",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-social-media-embed": "^2.5.18",
"react-tweet": "^3.3.0",
"recharts": "^3.7.0",
"remotion": "^4.0.414",
"replicate": "^1.4.0",
"require-in-the-middle": "^8.0.1",
"sharp": "^0.34.5",
"shiki": "^1.24.2",
"tailwind-merge": "^3.4.0",
"tailwindcss": "^3.4.0",
"webpack": "^5.96.1",
"website-scraper": "^6.0.0",
"website-scraper-puppeteer": "^2.0.0",
"xlsx": "^0.18.5",
"zod": "^3.25.76"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.3",
"@eslint/js": "^10.0.0",
"@lhci/cli": "^0.15.1",
"@mintel/cli": "^1.9.0",
"@mintel/eslint-config": "^1.9.0",
"@mintel/husky-config": "^1.9.0",
"@mintel/next-config": "^1.9.0",
"@mintel/next-utils": "^1.9.0",
"@mintel/tsconfig": "^1.9.0",
"@next/eslint-plugin-next": "^16.1.6",
"@stryker-mutator/core": "^10.0.0",
"@stryker-mutator/typescript-checker": "^10.0.0",
"@stryker-mutator/vitest-runner": "^10.0.0",
"@tailwindcss/typography": "^0.5.15",
"@types/mime-types": "^3.0.1",
"@types/node": "^25.0.6",
"@types/nodemailer": "^7.0.10",
"@types/prismjs": "^1.26.5",
"@types/qrcode": "^1.5.6",
"@vitest/coverage-v8": "^4.1.11",
"autoprefixer": "^10.4.20",
"cheerio": "^1.1.2",
"concurrently": "^9.2.1",
"eslint": "10.0.0",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"mime-types": "^3.0.2",
"postcss": "^8.4.49",
"require-extensions": "^0.0.4",
"tsx": "^4.21.0",
"typescript": "5.9.3",
"typescript-eslint": "^8.54.0",
"vitest": "^4.1.11"
},
"repository": {
"type": "git",
"url": "git@git.infra.mintel.me:mmintel/mintel.me.git"
}
}