mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 18:19:43 +00:00
chore(harness): make repository agent-ready
Add concise routed context, task-aware agent roles, focused skills, and structured learning promotion.\n\nUnify local development and workspace tooling, add layered test and E2E verification, harden MCP authentication, and gate deployment behind verification and explicit production promotion.
This commit is contained in:
1 parent
5a69bbc1a5
commit
01bb8225ae
125 files changed
+5078
-24529
No files matched your search
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "next/core-web-vitals"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
# Web application
|
||||
|
||||
Next.js App Router marketing, legal, and redemption UI.
|
||||
|
||||
- Prefer server components; add `use client` only when browser state is needed.
|
||||
- Preserve PostHog provider/page-view integration unless the task changes it.
|
||||
- Keep metadata current for public pages.
|
||||
- Never expose server credentials through `NEXT_PUBLIC_*` variables.
|
||||
- Public redemption must use sandbox/local Supabase during automated tests.
|
||||
- Verify lint, typecheck, build, and the relevant Playwright flow.
|
||||
@@ -1,86 +0,0 @@
|
||||
# Web App - Agent Guidelines
|
||||
|
||||
**STRICT RULES - DO NOT VIOLATE**
|
||||
|
||||
## Architecture
|
||||
|
||||
This is a Next.js 14+ marketing/landing website using:
|
||||
- **Framework**: Next.js with App Router
|
||||
- **Styling**: Tailwind CSS
|
||||
- **Analytics**: PostHog
|
||||
- **Routing**: File-based routing in `app/` directory
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
app/
|
||||
layout.tsx # Root layout with PostHog provider
|
||||
page.tsx # Home/landing page
|
||||
globals.css # Global styles
|
||||
providers.tsx # PostHog provider wrapper
|
||||
PostHogPageView.tsx # Page view tracking component
|
||||
privacy/ # Privacy policy
|
||||
terms/ # Terms of service
|
||||
redeem/ # Code redemption page
|
||||
components/ # Reusable components
|
||||
public/ # Static assets (images, fonts)
|
||||
```
|
||||
|
||||
## Critical Rules
|
||||
|
||||
### App Router
|
||||
|
||||
This uses Next.js App Router (not Pages Router):
|
||||
- Server Components by default
|
||||
- Use `'use client'` directive for client components
|
||||
- Metadata exported from layout.tsx and page.tsx
|
||||
|
||||
### PostHog Integration
|
||||
|
||||
PostHog is configured at root level:
|
||||
- Provider in `providers.tsx`
|
||||
- Page view tracking in `PostHogPageView.tsx`
|
||||
- Wrap all pages in `<PostHogProvider>`
|
||||
|
||||
### SEO & Metadata
|
||||
|
||||
Metadata is defined in `layout.tsx`:
|
||||
```typescript
|
||||
export const metadata: Metadata = {
|
||||
title: 'Sauci - Ignite Your Connection',
|
||||
description: '...',
|
||||
openGraph: { ... },
|
||||
twitter: { ... },
|
||||
};
|
||||
```
|
||||
|
||||
Update metadata when adding new pages.
|
||||
|
||||
### Styling
|
||||
|
||||
- Use Tailwind CSS classes
|
||||
- Global styles in `globals.css`
|
||||
- Follow mobile-first responsive design
|
||||
|
||||
### Static Pages
|
||||
|
||||
Privacy and Terms pages are static content:
|
||||
- `/privacy` - Privacy policy
|
||||
- `/terms` - Terms of service
|
||||
|
||||
Keep these updated with legal requirements.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Required environment variables:
|
||||
- `NEXT_PUBLIC_POSTHOG_KEY` - PostHog API key
|
||||
- `NEXT_PUBLIC_POSTHOG_HOST` - PostHog host
|
||||
|
||||
## Forbidden Actions
|
||||
|
||||
1. **DO NOT** remove PostHog tracking without approval
|
||||
2. **DO NOT** use Pages Router patterns (use App Router)
|
||||
3. **DO NOT** add server-side API routes that expose sensitive data
|
||||
4. **DO NOT** forget to update metadata for new pages
|
||||
5. **DO NOT** skip mobile responsiveness
|
||||
6. **DO NOT** commit .env files with real API keys
|
||||
@@ -120,7 +120,7 @@ export default function Pricing() {
|
||||
<p className="text-sm text-white/80">
|
||||
<span className="font-semibold text-white">Pay once per couple.</span>{' '}
|
||||
Whether monthly or yearly, one subscription unlocks Pro for both you and your partner.
|
||||
That's two accounts for the price of one.
|
||||
That's two accounts for the price of one.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -153,7 +153,7 @@ export default function Pricing() {
|
||||
transition={{ delay: 0.3 }}
|
||||
className="text-center text-white/40 text-sm mt-8 max-w-lg mx-auto"
|
||||
>
|
||||
Start free with access to selected packs. Upgrade to Pro when you're ready to unlock everything.
|
||||
Start free with access to selected packs. Upgrade to Pro when you're ready to unlock everything.
|
||||
</motion.p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Generated
-1798
File diff suppressed because it is too large.
Load diff
@@ -5,9 +5,10 @@
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"typecheck": "tsc --noEmit"
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"test": "vitest run --passWithNoTests",
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"framer-motion": "^11.0.0",
|
||||
@@ -20,9 +21,11 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.0.0",
|
||||
"@types/react": "^18.3.0",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"autoprefixer": "^10.4.0",
|
||||
"postcss": "^8.4.0",
|
||||
"@types/react-dom": "^18.3.0",
|
||||
"autoprefixer": "^10.4.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-next": "14.2.35",
|
||||
"postcss": "^8.4.0",
|
||||
"tailwindcss": "^3.4.0",
|
||||
"typescript": "^5.3.0"
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user