# Marte Website Builder – Full reference for LLMs This file contains the full text content referenced by /llms.txt. Use it when you need detailed context about the Marte project. --- ## overview Marte CMS is a high-performance, SEO-optimized website builder. Tagline: Blazing fast, SEO-optimized websites with a user-friendly editing experience. Mission: To empower small and medium-sized businesses to create professional, high-performance websites with ease, without compromising on SEO and user experience. Target audience: Small and medium-sized businesses, marketing agencies, and web designers. Key value propositions: - High Performance: Optimized for fast page loads and excellent PageSpeed Insights scores. - SEO-Focused: Built-in tools and features to optimize websites for search engines. - User-Friendly: Intuitive editor that simplifies website creation and content management. - Headless Architecture: Built on TinaCMS, a Git-based headless CMS, for flexibility and scalability. --- ## architecture Folder structure: - app/ – Next.js App Router: pages, layouts, API routes. - components/ – Reusable React components; blocks/ for TinaCMS blocks, layout/ for header/footer. - const/ – Constants and configuration. - content/ – Git-based content (TinaCMS): pages/, posts/, productPages/, reservationPages/, etc. - lib/ – Shared libraries (Stripe, SendGrid, Google APIs, RFEF, etc.). - public/ – Static assets. llms.txt and llms-full.txt live here and are served at /llms.txt and /llms-full.txt. - tina/ – TinaCMS configuration, schemas, custom fields. - utils/ – Utility functions. Architectural decisions: - Headless CMS (TinaCMS): Git-based content, version control, visual editing. - Next.js App Router: Server Components, granular caching, performance. Separation of concerns: Frontend (app/, components/) fetches from TinaCMS GraphQL; CMS (tina/, content/) holds schemas and content; shared (lib/, utils/, const/) is used by both. --- ## content-model Content lives under content/: pages (MDX), posts (blog), productPages, reservationPages, authors, global. Each collection is defined in tina/config. Blocks are React components in components/blocks/ with matching TinaCMS block schemas. Theming (colors, typography) is defined in TinaCMS and passed to components; styling uses Tailwind CSS. --- ## technical-seo Project targets 90%+ scores for Performance, SEO, Best Practices, and Accessibility. Metadata is generated per content type (see seo-metadata-generation rule). Next.js Image component is required for images. Sitemap and robots.txt are generated at build. PR review standards include SEO checklist (metadata, images, Core Web Vitals). --- ## tinacms-schema TinaCMS collections and blocks are defined in tina/config. Schema patterns: use SEO-friendly fields, consistent naming, scalable collections. Custom fields live in tina/customFields/. Block schemas reference components in components/blocks/. --- ## workflows Linear (MArte team MAR) is used for issues and status. Commands in .cursor/commands/ automate PR creation, issue alignment, SEO review, and Marte Sports page creation. Agents in .cursor/agents/ provide role-based assistance (frontend, backend, testing, DevOps, technical writer, code reviewer). Git workflow: feature branches, conventional commits, Linear status sync on PR open/merge. --- ## code-quality No console.log in production; use a proper logger if needed. Handle errors gracefully; avoid unhandled promise rejections. TypeScript: avoid 'any'; use generated TinaCMS types where applicable. Null safety: use optional chaining and nullish coalescing. Comments: explain complex logic; TODOs must reference Linear issue IDs (e.g. MAR-123). Pre-commit: lint, check-types, no sensitive data in code. --- ## testing TDD is the default for new functionality. Tests should be pessimistic (null, empty, wrong types, async edge cases). Use Jest and React Testing Library. Tests document behavior and feed "Docs from Tests" generation. Testing rules and best practices are in .cursor/rules. --- ## nodejs This project requires Node.js 20.x (see .nvmrc and package.json engines). Node 18 or below can cause TinaCMS build failures and native module issues. Use `nvm use 20` for local development. --- ## sports Marte Sports: team pages, standings, scorers, matchday. URL structure and block specs are in docs/marte-sports/ and .cursor/rules/marte-sports-url-structure.mdc. RFEF API integration in lib/rfefApi/ (calendar, standings, scorers, acta). Blocks: Standings, StandingsAuto, Scorers, SportsResults, Matchday. Commands: create-matchday-page, create-scorers-page, bulk-create-validate-sports-pages. --- ## payments Stripe is used for payments. Browser: lib/stripeBrowser/; server: lib/stripeServer/ (payment intents, product/price find-or-create). Checkout and reservation flows use Stripe. See docs for Stripe integration details. --- ## environment Environment variables are documented in ENVIRONMENT_VARIABLES.md and .env.example. Vercel is the deployment platform. GitHub Actions run tests and quality checks. Do not commit secrets; use Vercel/env for production.