An agentic landing page built with atomic design architecture, featuring multi-model AI support through Netlify Functions.
components/
βββ atoms/ # Basic building blocks (Button, Text, Input, Icon, Badge)
βββ molecules/ # Combined atoms (InputField, Card, IconButton, TypingDots)
βββ organisms/ # Complex components (ChatMessage, ModelSelector, ChatInput)
βββ templates/ # Page-level components
- AI Integration: Powered by Claude Sonnet 4.5 (via Anthropic API)
- State Management: React Context + LocalStorage
- Styling: Tailwind CSS + Custom Animations
- Deployment: Netlify with serverless functions
- AI Models: Multiple providers via unified API
- Google Gemini 2.5 (Pro & Flash)
- OpenAI GPT-4o & O3
- Anthropic Claude (Opus 4 & Sonnet 4)
- Node.js 18+
- npm or yarn
- API keys for AI providers (optional)
- Clone the repository:
git clone https://github.com/your-org/humanglue-landing.git
cd humanglue-landing- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.local- Add your API keys to
.env.local:
GOOGLE_AI_API_KEY=your_key
OPENAI_API_KEY=your_key
ANTHROPIC_API_KEY=your_key- Run development server:
npm run dev-
Connect your GitHub repository to Netlify
-
Configure build settings:
- Build command:
npm run build - Publish directory:
.next
- Build command:
-
Add environment variables in Netlify dashboard
-
Deploy!
All environment variables from .env.example should be configured in Netlify:
# Required for API functionality
GOOGLE_AI_API_KEY
OPENAI_API_KEY
ANTHROPIC_API_KEY
# Optional configuration
RATE_LIMIT_REQUESTS_PER_MINUTE
SESSION_SECRET
CORS_ALLOWED_ORIGINS
humanglue-landing/
βββ app/ # Next.js app directory
βββ components/ # Atomic design components
β βββ atoms/ # Basic UI elements
β βββ molecules/ # Composite components
β βββ organisms/ # Complex features
β βββ templates/ # Page templates
βββ netlify/ # Netlify Functions
β βββ functions/ # Serverless API endpoints
βββ lib/ # Core libraries
β βββ mcp/ # Model Context Protocol
βββ services/ # API service layer
βββ utils/ # Utility functions
βββ constants/ # App constants
βββ hooks/ # Custom React hooks
Control features via environment variables:
NEXT_PUBLIC_ENABLE_CHAT=true
NEXT_PUBLIC_ENABLE_MODEL_SELECTOR=true
NEXT_PUBLIC_ENABLE_ANALYTICS=falseModels are configured in lib/mcp/models.ts with environment variable overrides:
GOOGLE_AI_MODEL_PRO=gemini-2.0-flash-exp
OPENAI_MODEL_GPT4O=gpt-4o
ANTHROPIC_MODEL_SONNET=claude-3-5-sonnet-20241022Follow atomic design principles:
- Atoms: Single-purpose, reusable elements
- Molecules: Simple combinations of atoms
- Organisms: Complex, feature-complete components
- Templates: Page layouts and structures
# Create atom
touch components/atoms/NewAtom.tsx
# Export from index
echo "export { NewAtom } from './NewAtom'" >> components/atoms/index.tsNetlify Functions are located in netlify/functions/:
// netlify/functions/my-function.ts
import { Handler } from '@netlify/functions'
export const handler: Handler = async (event) => {
// Function logic
}Configure analytics providers:
GOOGLE_ANALYTICS_ID=G-XXXXXXXXXX
MIXPANEL_TOKEN=your_token
SENTRY_DSN=your_dsn- Fork the repository
- Create a feature branch
- Follow atomic design principles
- Write tests for new components
- Submit a pull request
MIT License - see LICENSE file for details