mirror of
https://github.com/logos-co/logos-web.git
synced 2026-08-27 12:11:14 +00:00
* fix(sitemap): remove FAQ route from static indexable routes * feat(web): markdown-managed legal pages + Testnet FAQ & Terms Introduce a markdown-based system for legal/info documents and add the two testnet pages on the same docs route pattern. - Add getLegalDoc loader (gray-matter frontmatter + zod validation) and LegalMarkdown renderer (react-markdown + remark-gfm) mapped to Logos design tokens; render legal pages as a server component. - Refactor docs-page-factory to source content from content/legal/<slug>.md instead of next-intl namespaces; migrate terms, privacy, and security from messages/en.json to markdown. - Add /testnet-v01-faqs and /testnet-terms-and-conditions pages with content mirrored from logos.co; link the FAQ's testnet-terms references to the internal route. - Add Testnet FAQ and Testnet Terms to the docs ToC (remove the dead FAQ entry); register both routes in the sitemap. - Align docs content to the standard page gutter by removing the redundant px-3 on the docs page shell. * chore: optimise page imagery * feat(web): link Logos Devs X account in community section * chore(web): hide 'What you can build today' section on get-started and builders-hub * refactor: reuse builders hub start sections * feat(builders-hub): source RFPs from GitHub API at build time Fetch and parse RFPs from the logos-co/rfp repo (markdown + YAML frontmatter) at build time instead of local content, so the /rfps listing and [slug] detail pages render from a single live source. - add rfps-github lib: GitHub contents fetch, gray-matter frontmatter parse, stable slug from filename, draft/template exclusion - detail page renders frontmatter-stripped markdown via LegalMarkdown, with Apply + View on GitHub CTAs - widen RFP card/row/listing props to RfpListItem so GitHub data (no reward/image) and local Rfp both satisfy the UI - add optional markdown body to BuildersHubDetailLayout * refactor: share get started sections
67 lines
2.7 KiB
JSON
67 lines
2.7 KiB
JSON
{
|
|
"name": "web",
|
|
"type": "module",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev --port 3000",
|
|
"build": "pnpm build:deps && pnpm build:app",
|
|
"build:deps": "pnpm --filter @acid-info/logos-ui build",
|
|
"build:app": "pnpm sync:active-circles && next build && pnpm build:strip-locale",
|
|
"sync:active-circles": "tsx scripts/sync-active-circles.ts",
|
|
"build:export": "pnpm build",
|
|
"build:strip-locale": "bash scripts/strip-default-locale-prefix.sh",
|
|
"start": "python3 -m http.server 3000 --directory out",
|
|
"lint": "eslint . --max-warnings 0",
|
|
"lint:fix": "eslint . --fix",
|
|
"check-types": "next typegen && tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:perf": "tsx test/performance/export-performance.test.ts",
|
|
"test:static": "tsx scripts/static-export-smoke.ts && tsx test/static-export/accessibility.test.ts && tsx test/static-export/navigation.test.ts",
|
|
"test:watch": "vitest",
|
|
"generate:civicrm-fields": "node scripts/generate-civicrm-connect-fields.mjs",
|
|
"fetch:afform-contact": "node scripts/fetch-afform-contact-form.mjs",
|
|
"fetch:afform-contact:dry-run": "node scripts/fetch-afform-contact-form.mjs --dry-run",
|
|
"fetch:afform-activist-builder": "node scripts/fetch-afform-contact-form.mjs --form afformActivistBuilder",
|
|
"fetch:afform-activist-leader": "node scripts/fetch-afform-contact-form.mjs --form afformActivistLeaderSteward",
|
|
"fetch:afform-coalition-partner": "node scripts/fetch-afform-contact-form.mjs --form afformCoalitionPartner",
|
|
"fetch:afform-all": "pnpm fetch:afform-contact && pnpm fetch:afform-activist-builder && pnpm fetch:afform-activist-leader && pnpm fetch:afform-coalition-partner"
|
|
},
|
|
"dependencies": {
|
|
"@acid-info/logos-tokens": "workspace:*",
|
|
"@acid-info/logos-ui": "workspace:*",
|
|
"@hcaptcha/react-hcaptcha": "^1.12.0",
|
|
"@repo/content": "workspace:*",
|
|
"@tanstack/react-query": "^5.100.14",
|
|
"clsx": "^2.1.1",
|
|
"gray-matter": "^4.0.3",
|
|
"leaflet": "^1.9.4",
|
|
"lucide-react": "^1.11.0",
|
|
"motion": "^12.38.0",
|
|
"next": "16.2.4",
|
|
"next-intl": "^4.9.1",
|
|
"react": "^19.2.5",
|
|
"react-dom": "^19.2.5",
|
|
"react-leaflet": "5.0.0",
|
|
"react-leaflet-cluster": "^3.1.1",
|
|
"react-markdown": "^10.1.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"tailwind-merge": "^3.5.0",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4.2.2",
|
|
"@types/leaflet": "^1.9.20",
|
|
"@types/node": "^24.12.4",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "19.2.3",
|
|
"@vitest/coverage-v8": "^4.1.5",
|
|
"dotenv": "^17.2.2",
|
|
"eslint": "^10.2.1",
|
|
"postcss": "^8.5.10",
|
|
"tailwindcss": "^4.2.2",
|
|
"tsx": "^4.20.0",
|
|
"typescript": "^6.0.3",
|
|
"vitest": "^4.1.5"
|
|
}
|
|
}
|