diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index af5a829..3776f74 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -24,12 +24,15 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Logout of Github Container Registry + run: docker logout ghcr.io + - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} - password: ${{ secrets.GHCR_TOKEN }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata for Docker id: meta @@ -67,7 +70,6 @@ jobs: NEXLAYER_API_KEY: ${{ secrets.NEXLAYER_API_KEY }} run: | # Deploy to Nexlayer using the API - curl -X POST https://app.nexlayer.io/startUserDeployment \ + curl -X POST https://app.nexlayer.io/startUserDeployment/${{ secrets.NEXLAYER_SESSION_TOKEN }} \ -H "Content-Type: text/x-yaml" \ - -H "Authorization: Bearer $NEXLAYER_API_KEY" \ --data-binary @nexlayer.yaml diff --git a/app/launchfile/page.tsx b/app/launchfile/page.tsx index 29abd7f..b6d9c02 100644 --- a/app/launchfile/page.tsx +++ b/app/launchfile/page.tsx @@ -201,7 +201,6 @@ application: transition={{ duration: 0.6 }} >
-

Nexlayer YAML Guide

@@ -304,7 +303,7 @@ application:
handleTimeCardClick("simple-website")} > @@ -321,7 +320,7 @@ application: handleTimeCardClick("fullstack-app")} > @@ -338,7 +337,7 @@ application: handleTimeCardClick("api-service")} > @@ -355,7 +354,7 @@ application: handleTimeCardClick("ai-app")} > @@ -539,7 +538,6 @@ application:

- Deployment Flow (It's This Simple!)

From YAML to production in just 4 steps

diff --git a/app/learn/mcp-quickstart/page.tsx b/app/learn/mcp-quickstart/page.tsx index d8c2316..9ded8f1 100644 --- a/app/learn/mcp-quickstart/page.tsx +++ b/app/learn/mcp-quickstart/page.tsx @@ -2,61 +2,151 @@ import React from 'react'; import { Button } from '@/components/ui/button'; -import Link from 'next/link'; -import { Bot, Sparkles, Zap, CheckCircle, Copy, Check } from 'lucide-react'; +import { + Bot, + Sparkles, + Zap, + CheckCircle, + Copy, + Check, + ArrowRight, + RefreshCw, + UserPlus, +} from 'lucide-react'; import { useState } from 'react'; +type ContentItem = { + title: string; + description: string; + codeText?: string; + code?: string; + steps?: (string | { type: string; value: string })[]; + postSteps?: string[]; +}; + const techTabs = [ { name: 'Cursor', description: 'AI-first code editor' }, { name: 'Claude Code', description: "Anthropic's AI-powered CLI" }, - { name: 'VS Code', description: 'Using Command Pallete' }, + { name: 'VS Code', description: 'Using Command Palette' }, { name: 'Other Tools', description: 'Any MCP-compatible AI IDE or CLI' }, ]; -const techContent = [ +// Content for EXISTING users (migration instructions) +const existingUserContent: ContentItem[] = [ + { + title: 'Cursor - Update Configuration', + description: 'Update your existing Nexlayer MCP configuration:', + steps: [ + 'Navigate to Cursor Settings -> Tools & MCP', + 'Hover over the installed "nexlayer-mcp" MCP server and select the edit icon', + 'Remove the "headers" object from your configuration so that the new configuration reads:', + { + type: 'code', + value: `{ + "mcpServers": { + "nexlayer-mcp": { + "url": "https://mcp.nexlayer.ai/api/mcp" + } + } +}`, + }, + 'Save the file and navigate back to the Tools & MCP settings', + 'Click the "Connect" button to authenticate with the Nexlayer MCP server. If the "Connect" button re-appears, select the text "Needs authentication" under the nexlayer-mcp name and select "Open"', + 'Login with one of the SSO providers. You will be redirected back to Cursor', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], + }, + { + title: 'Claude Code - Update Configuration', + description: 'Update your existing Nexlayer MCP configuration:', + steps: [ + 'Start a Claude session and prompt Claude with the following: "Remove the authorization header from all nexlayer-mcp MCP server configs in .claude.json file in my home directory"', + 'After completion, close out of your Claude session and start a new one', + 'Enter "/mcp" and select the nexlayer-mcp server', + 'Select "Authenticate" to authenticate with the Nexlayer MCP server. You will be asked to sign in using one of our SSO providers.', + 'After successful authentication you will be asked to return to Claude Code. Please allow 15-20 seconds for Claude to finish authenticating on its end', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], + }, + { + title: 'VS Code - Update Configuration', + description: 'Update your existing Nexlayer MCP configuration:', + steps: [ + 'Press Ctrl+Shift+P (or Cmd+Shift+P for Mac) to open the Command Palette', + 'Type "MCP" and then select "MCP: List Servers"', + 'Select the nexlayer-mcp server and then select "Show Configuration"', + 'Remove the headers object from the nexlayer-mcp configuration so that the configuration matches the following:', + { + type: 'code', + value: `"nexlayer-mcp": { + "url": "https://mcp.nexlayer.ai/api/mcp", + "type": "http" +}`, + }, + 'Save the file', + 'You should be asked to authenticate with the MCP. If not prompted to do so, click either "Restart" or "Start" above the configuration.', + 'Sign in with any of the SSO providers shown. After successful authentication you will be redirected back to VS Code', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], + }, + { + title: '', + description: '', + steps: [ + 'Remove the Authorization header from your nexlayer-mcp configuration and save', + 'Follow the given instructions to sign in to the Nexlayer MCP server', + 'Sign in with one of our SSO providers', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], + }, +]; + +// Content for NEW users +const newUserContent: ContentItem[] = [ { title: 'Cursor Setup', description: 'Create or update your .cursor/mcp.json file:', codeText: 'Cursor — .cursor/mcp.json', code: `{ "mcpServers": { - "nexlayer_mcp": { - "url": "https://mcp.nexlayer.ai/api/mcp", - "headers": { - "Authorization": "Bearer " - } + "nexlayer-mcp": { + "url": "https://mcp.nexlayer.ai/api/mcp" } } }`, + postSteps: [ + 'Save the file and navigate to Cursor Settings -> Tools & MCP', + 'Click the "Connect" button to authenticate with the Nexlayer MCP server', + 'Login with one of the SSO providers. You will be redirected back to Cursor', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], }, { - title: 'Claude Setup', + title: 'Claude Code Setup', description: 'Use the CLI command to add Nexlayer MCP:', codeText: 'CLI command', - code: `claude mcp add nexlayer-mcp --transport sse https://mcp.nexlayer.ai/api/mcp --header "Authorization: Bearer "`, + code: `claude mcp add nexlayer-mcp --transport sse https://mcp.nexlayer.ai/api/mcp`, + postSteps: [ + 'Start a new Claude session', + 'Enter "/mcp" and select the nexlayer-mcp server', + 'Select "Authenticate" to authenticate with the Nexlayer MCP server', + 'Sign in with one of our SSO providers', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], }, { title: 'VS Code Setup', description: 'Nexlayer MCP Setup Instructions for VS Code:', - codeText: 'MCP Server URL', steps: [ - 'Open the Command Palette in VS Code 2 (Ctrl+Shift+P on Windows/Linux, Cmd+Shift+P on macOS)', + 'Press Ctrl+Shift+P (or Cmd+Shift+P for Mac) to open the Command Palette', 'Search and select the "MCP: Add Server" command', 'Select HTTP (HTTP or Server-Sent Events)', - "Enter 'https://mcp.nexlayer.ai/api/mcp' for the Server URL", - "Enter 'nexlayer-mcp' for the Server ID", - 'In the nexlayer-mcp object, add the following lines of code:', - { - type: 'code', - value: `"nexlayer-mcp": { - "url": "https://mcp.nexlayer.ai/api/mcp", - "type": "http", - "headers": { - "Authorization": "Bearer " - } -}` - }, - 'Save and begin prompting with Github Copilot!', + 'Enter https://mcp.nexlayer.ai/api/mcp for the Server URL', + 'Enter nexlayer-mcp for the Server ID', + 'Remove the "headers" object from the nexlayer-mcp configuration so that the configuration matches the following:', + 'You should now be asked to authenticate with the MCP. Select "Allow" then "Open"', + 'Sign in to one of the SSO providers. Once authenticated you will be redirected to VS Code', + 'You are now authenticated and ready to use the Nexlayer MCP!', ], }, { @@ -64,6 +154,12 @@ const techContent = [ description: 'For other tools, use the MCP server URL:', codeText: 'MCP Server URL', code: `https://mcp.nexlayer.ai/api/mcp`, + postSteps: [ + 'Configure your MCP client with the URL above (no Authorization header needed)', + "Follow your tool's instructions to authenticate", + 'Sign in with one of our SSO providers', + 'You are now authenticated and ready to use the Nexlayer MCP!', + ], }, ]; @@ -71,6 +167,8 @@ export default function MCPQuickStartPage() { const [copiedCommand, setCopiedCommand] = useState(null); const [selectedTab, setSelectedTab] = useState(0); const [copiedTab, setCopiedTab] = useState(false); + const [copiedStepCode, setCopiedStepCode] = useState(null); + const [userType, setUserType] = useState<'existing' | 'new' | null>(null); const copyToClipboard = (text: string) => { navigator.clipboard.writeText(text); @@ -84,8 +182,16 @@ export default function MCPQuickStartPage() { setTimeout(() => setCopiedTab(false), 2000); }; - const deploymentCommand = - 'Deploy my project to nexlayer @https://github.com/Nexlayer/ai-code-arena'; + const handleStepCodeCopy = (text: string) => { + navigator.clipboard.writeText(text); + setCopiedStepCode(text); + setTimeout(() => setCopiedStepCode(null), 2000); + }; + + const deploymentCommand = 'Deploy my project to nexlayer'; + + const currentContent = + userType === 'existing' ? existingUserContent : newUserContent; return (
@@ -99,13 +205,90 @@ export default function MCPQuickStartPage() {

- Quick Start with MCP + Utilizing the Nexlayer MCP

-

+

Deploy your first app using your MCP supported AI IDE or CLI.

+ + {/* OAuth/SSO Update Notice */} +
+
+ + + We have updated our MCP to use OAuth/SSO + +
+

+ Authentication is now simpler and more secure. Choose your path + below to get started. +

+
+ {/* User Type Selection */} + {!userType && ( +
+
+ {/* Existing User Path */} + + + {/* New User Path */} + +
+
+ )} + {/* What is MCP */}
@@ -155,176 +338,214 @@ export default function MCPQuickStartPage() {
- {/* Setup Section */} -
-

- Setup with your AI coding assistant -

+ {/* Setup Section - Shows after user selects their path */} + {userType && ( + <> + {/* Back button */} +
+ +
-
-

- Step 1: Install MCP -

-

- After installing MCP, you can go to Cursor, Claude, or other AI - coding tools or CLIs that support MCPs. -

+ {/* Setup Section */} +
+

+ {userType === 'existing' + ? 'Update Your MCP Configuration' + : 'Setup with your AI coding assistant'} +

- {/* Tabs Section */} -
-
- {techTabs.map((tab, idx) => ( - - ))} -
- -
-

- Generate Your Access Token -

-

- You need to generate a token to use the Nexlayer MCP. Go to{' '} - - app.nexlayer.io - {' '} - to create your access token. +

+

+ {userType === 'existing' + ? 'Migration Instructions' + : 'Step 1: Install MCP'} +

+

+ {userType === 'existing' + ? 'Follow the instructions below for your AI coding tool to update to OAuth/SSO authentication.' + : 'Choose your AI coding tool below to get started with the Nexlayer MCP.'}

-
-
- - Visit app.nexlayer.io - -
-
-
- - Generate your access token - -
-
-
- - Use the token in your MCP configuration - -
-
-
-

- MCP Configuration -

-
- {techContent[selectedTab].title} -
-

- {techContent[selectedTab].description} -

- {/* Render steps as a numbered list if present */} - {techContent[selectedTab].steps ? ( -
    - {techContent[selectedTab].steps.map((step, idx) => ( -
  1. - {typeof step === 'string' ? ( - {step} - ) : step.type === 'code' ? ( -
    -
    -                                {step.value}
    -                              
    -
    - ) : null} -
  2. - ))} -
- ) : null} - {/* Render code block if present */} - {techContent[selectedTab].code && ( -
-
- - {techContent[selectedTab].codeText} - + {/* Tabs Section */} +
+
+ {techTabs.map((tab, idx) => ( -
-
-                        {techContent[selectedTab].code}
-                      
+ ))}
- )} -
-
-
- {/* Deployment Command Section */} -
-

- Step 2: Deploy Your Project -

-

- After installing, you can prompt your AI coding tool with this - command: -

+
+

+ {userType === 'existing' + ? 'Update Instructions' + : 'MCP Configuration'} +

+
+ {currentContent[selectedTab].title} +
+

+ {currentContent[selectedTab].description} +

+ {/* Render steps as a numbered list if present */} + {currentContent[selectedTab].steps ? ( +
    + {currentContent[selectedTab].steps.map( + (step: any, idx: number) => ( +
  1. + {typeof step === 'string' ? ( + + {step} + + ) : step.type === 'code' ? ( +
    +
    + +
    +
    +                                      {step.value}
    +                                    
    +
    + ) : null} +
  2. + ) + )} +
+ ) : null} + {/* Render code block if present */} + {currentContent[selectedTab].code && ( +
+
+ + {currentContent[selectedTab].codeText} + + +
+
+                            {currentContent[selectedTab].code}
+                          
+
+ )} + {/* Render post-steps for new users if present */} + {userType === 'new' && + currentContent[selectedTab].postSteps && ( +
    + {currentContent[selectedTab].postSteps.map( + (step: string, idx: number) => ( +
  1. + + {step} + +
  2. + ) + )} +
+ )} +
+
+
-
-
-

- {deploymentCommand} + {/* Deployment Command Section */} +

+

+ {userType === 'existing' + ? 'Deploy Your Project' + : 'Step 2: Deploy Your Project'} +

+

+ After{' '} + {userType === 'existing' + ? 'updating your configuration' + : 'installing'} + , you can prompt your AI coding tool with this command:

- -
-
-
-

- What happens next: -

-
    -
  • • MCP analyzes your GitHub repository
  • -
  • • Automatically generates deployment configuration
  • -
  • • Deploys your app to Nexlayer's infrastructure
  • -
  • • Returns a live URL for your application
  • -
+
+
+

+ {deploymentCommand} +

+ +
+
+ +
+

+ What happens next: +

+
    +
  • • MCP analyzes your GitHub repository
  • +
  • + • Automatically generates deployment configuration +
  • +
  • + • Deploys your app to Nexlayer's infrastructure +
  • +
  • • Returns a live URL for your application
  • +
+
+
-
-
+ + )} {/* Example Project */}
@@ -390,7 +611,7 @@ export default function MCPQuickStartPage() { rel='noopener noreferrer' >
diff --git a/app/learn/templates/custom-fullstack/page.tsx b/app/learn/templates/custom-fullstack/page.tsx index 83b5532..cc7590e 100644 --- a/app/learn/templates/custom-fullstack/page.tsx +++ b/app/learn/templates/custom-fullstack/page.tsx @@ -1,10 +1,10 @@ -"use client"; +'use client'; -import { Button } from "@/components/ui/button"; -import Link from "next/link"; -import { Settings, ExternalLink, Play, Copy, CheckCircle } from "lucide-react"; -import { useState } from "react"; -import { YamlCodeBlock } from "@/components/yaml-code-block"; +import { Button } from '@/components/ui/button'; +import Link from 'next/link'; +import { Settings, ExternalLink, Play, Copy, CheckCircle } from 'lucide-react'; +import { useState } from 'react'; +import { YamlCodeBlock } from '@/components/yaml-code-block'; export default function CustomFullstackTemplatePage() { const [copied, setCopied] = useState(false); @@ -155,79 +155,100 @@ jobs: echo "Access Prometheus at: http://your-app-url/prometheus"`; return ( -
+
{/* Hero Section */} -
-
-
-
-
- +
+
+
+
+
+
-

+

Custom Fullstack Template

-

+

Custom fullstack template with Cloudbeaver included

-
- +
+ Advanced Level
{/* Template Overview */} -
-
-

Template Overview

-

- Custom Fullstack is a comprehensive application template that includes a Next.js frontend, - custom backend API, Cloudbeaver for database management, Redis for caching, PostgreSQL for - data storage, and Prometheus for monitoring. Perfect for building enterprise-grade applications - with full observability and database management capabilities. +

+
+

+ Template Overview +

+

+ Custom Fullstack is a comprehensive application template that + includes a Next.js frontend, custom backend API, Cloudbeaver for + database management, Redis for caching, PostgreSQL for data + storage, and Prometheus for monitoring. Perfect for building + enterprise-grade applications with full observability and + database management capabilities.

- -
-
-

Features:

-
    -
  • - + +
    +
    +

    Features:

    +
      +
    • + Next.js frontend with TypeScript
    • -
    • - +
    • + Custom backend API
    • -
    • - +
    • + Cloudbeaver database management
    • -
    • - +
    • + Redis caching layer
    • -
    • - +
    • + PostgreSQL database
    • -
    • - +
    • + Prometheus monitoring
    -
    -

    Tech Stack:

    -
      -
    • Frontend: Next.js + TypeScript
    • -
    • Backend: Custom API
    • -
    • Database: PostgreSQL
    • -
    • Cache: Redis
    • -
    • DB Management: Cloudbeaver
    • -
    • Monitoring: Prometheus
    • +
      +

      Tech Stack:

      +
        +
      • + • Frontend:{' '} + Next.js + TypeScript +
      • +
      • + • Backend: Custom + API +
      • +
      • + • Database:{' '} + PostgreSQL +
      • +
      • + • Cache: Redis +
      • +
      • + • DB Management:{' '} + Cloudbeaver +
      • +
      • + • Monitoring:{' '} + Prometheus +
    @@ -235,60 +256,69 @@ jobs:
    {/* YAML Configuration */} -
    -

    +
    +

    YAML Configuration

    - -
    -
    -

    Complete Configuration

    + +
    +
    +

    + Complete Configuration +

    - +
    {/* Deployment Options */} -
    -

    +
    +

    Deploy Options

    - -
    -
    -

    Via Playground

    -

    - Use the Nexlayer Playground for a visual deployment experience with AI assistance. -

    - + - -
    -

    Via Curl

    -

    - Deploy directly using the command line for automated workflows. + +

    +

    Via Curl

    +

    + Deploy directly using the command line for automated + workflows.

    -
    - - curl -X POST https://app.nexlayer.io/startUserDeployment \
    -   -H "Content-Type: text/x-yaml" \
    +
    + + curl -X POST https://app.nexlayer.io/startUserDeployment \ +
    +   -H "Content-Type: text/x-yaml" \
      --data-binary @custom-fullstack.yaml
    @@ -296,22 +326,28 @@ jobs:
    {/* GitHub Actions Workflow */} -
    -
    -

    GitHub Actions Workflow

    +
    +
    +

    + GitHub Actions Workflow +

    -

    - Add this workflow to your repository at .github/workflows/deploy.yml for automatic deployments on push to main. +

    + Add this workflow to your repository at{' '} + + .github/workflows/deploy.yml + {' '} + for automatic deployments on push to main.

    -
    -
    +              
    +
                       {githubActionsWorkflow}
                     
    @@ -319,28 +355,29 @@ jobs:
    {/* CTA Section */} -
    -
    -

    +
    +
    +

    Ready to Deploy?

    -

    - Get your enterprise-grade fullstack application running in minutes with this template. +

    + Get your enterprise-grade fullstack application running in + minutes with this template.

    -
    - + - - + diff --git a/app/learn/templates/nextjs-hello-world/page.tsx b/app/learn/templates/nextjs-hello-world/page.tsx index c28d03f..0d8ab22 100644 --- a/app/learn/templates/nextjs-hello-world/page.tsx +++ b/app/learn/templates/nextjs-hello-world/page.tsx @@ -1,10 +1,16 @@ -"use client"; +'use client'; -import { Button } from "@/components/ui/button"; -import Link from "next/link"; -import { Code, ExternalLink, Play, Copy, CheckCircle, Check } from "lucide-react"; -import { useState } from "react"; -import { YamlCodeBlock } from "@/components/yaml-code-block"; +import { Button } from '@/components/ui/button'; +import Link from 'next/link'; +import { + Code, + Play, + Copy, + CheckCircle, + Check, +} from 'lucide-react'; +import { useState } from 'react'; +import { YamlCodeBlock } from '@/components/yaml-code-block'; export default function HelloWorldNextJSTemplatePage() { const [copied, setCopied] = useState(false); @@ -94,72 +100,90 @@ jobs: echo "Check your deployment status at: https://app.nexlayer.io"`; return ( -
    +
    {/* Hero Section */} -
    -
    -
    -
    -
    - +
    +
    +
    +
    +
    +
    -

    +

    Hello World NextJS Template

    -

    +

    Simple NextJS application with Nginx

    -
    - +
    + Beginner Level
    {/* Template Overview */} -
    -
    -

    Template Overview

    -

    - Hello World NextJS is a simple, production-ready NextJS application that demonstrates basic - deployment patterns. Perfect for getting started with NextJS applications on Nexlayer. +

    +
    +

    + Template Overview +

    +

    + Hello World NextJS is a simple, production-ready NextJS + application that demonstrates basic deployment patterns. Perfect + for getting started with NextJS applications on Nexlayer.

    - -
    -
    -

    Features:

    -
      -
    • - + +
      +
      +

      Features:

      +
        +
      • + NextJS application
      • -
      • - +
      • + Nginx web server
      • -
      • - +
      • + Docker containerization
      • -
      • - +
      • + Production ready
      • -
      • - +
      • + Simple deployment
      -
      -

      Tech Stack:

      -
        -
      • Framework: NextJS
      • -
      • Language: TypeScript
      • -
      • Web Server: Nginx
      • -
      • Container: Docker
      • -
      • Registry: GitHub Container Registry
      • +
        +

        Tech Stack:

        +
          +
        • + • Framework:{' '} + NextJS +
        • +
        • + • Language:{' '} + TypeScript +
        • +
        • + • Web Server:{' '} + Nginx +
        • +
        • + • Container:{' '} + Docker +
        • +
        • + • Registry: GitHub + Container Registry +
      @@ -167,66 +191,79 @@ jobs:
      {/* YAML Configuration */} -
      -

      +
      +

      YAML Configuration

      - -
      -
      -

      Complete Configuration

      + +
      +
      +

      + Complete Configuration +

      - +
      {/* Deployment Options */} -
      -

      +
      +

      Deploy Options

      - -
      -
      -

      Via Playground

      -

      - Use the Nexlayer Playground for a visual deployment experience with AI assistance. -

      - + - -
      -

      Via Curl

      -

      - Deploy directly using the command line for automated workflows. + +

      +

      Via Curl

      +

      + Deploy directly using the command line for automated + workflows.

      -
      +
      - - curl -X POST https://app.nexlayer.io/startUserDeployment \
      -   -H "Content-Type: text/x-yaml" \
      + + curl -X POST https://app.nexlayer.io/startUserDeployment \ +
      +   -H "Content-Type: text/x-yaml" \
        --data-binary @hello-world-nextjs.yaml
      @@ -234,22 +271,28 @@ jobs:
      {/* GitHub Actions Workflow */} -
      -
      -

      GitHub Actions Workflow

      +
      +
      +

      + GitHub Actions Workflow +

      -

      - Add this workflow to your repository at .github/workflows/deploy.yml for automatic deployments on push to main. +

      + Add this workflow to your repository at{' '} + + .github/workflows/deploy.yml + {' '} + for automatic deployments on push to main.

      -
      -
      +              
      +
                         {githubActionsWorkflow}
                       
      @@ -257,28 +300,29 @@ jobs:
      {/* CTA Section */} -
      -
      -

      +
      +
      +

      Ready to Deploy?

      -

      - Get your NextJS application running in minutes with this template. +

      + Get your NextJS application running in minutes with this + template.

      -
      - + - - + diff --git a/app/learn/templates/page.tsx b/app/learn/templates/page.tsx index 03deb9d..2d47de6 100644 --- a/app/learn/templates/page.tsx +++ b/app/learn/templates/page.tsx @@ -96,7 +96,7 @@ export default function TemplatesPage() { key={index} className='flex flex-col justify-between bg-[#0a0a0a] rounded-xl p-6 border border-[#333] hover:border-[#22B4C8] transition-colors' > -
      +
      {template.icon}

      @@ -104,7 +104,7 @@ export default function TemplatesPage() {

      {template.complexity}
      diff --git a/app/page.tsx b/app/page.tsx index c4f87b1..376d25e 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -7,16 +7,9 @@ import { Terminal, Code, Zap, - Play, Settings, FileText, - Rocket, - Globe, - Megaphone, - DollarSign, - HelpCircle, CheckCircle, - Star, } from "lucide-react"; import Link from "next/link"; import { Button } from "@/components/ui/button"; @@ -26,18 +19,38 @@ export default function HomePage() {
      {/* Hero Section */}
      -
      +
      -

      - Deploy in 5 Minutes +

      + Welcome to Nexlayer!

      -

      - Choose your path: AI-powered deployment with MCP or manual YAML configuration +

      + In a few minutes, you'll be set up to deploy production-grade apps from your AI code editor or CLI straight to Nexlayer AI-native Cloud Platform. +

      +
      +
      +
      + + {/* OAuth/SSO Update Notice */} +
      +
      + +
      + + We have updated our MCP to use OAuth/SSO +
      +

      + Authentication is now simpler and more secure. Choose your path below to get started.

      @@ -45,7 +58,7 @@ export default function HomePage() { {/* Choose Your Path Section */}
      -
      +

      Choose Your Path @@ -61,9 +74,9 @@ export default function HomePage() { initial={{ opacity: 0, x: -20 }} animate={{ opacity: 1, x: 0 }} transition={{ duration: 0.6 }} - className="bg-[#0a0a0a] rounded-xl p-8 border-2 border-[#22B4C8] hover:border-[#1DA3B6] transition-colors group cursor-pointer relative" + className="bg-[#0a0a0a] rounded-xl p-4 sm:p-8 border-2 border-[#22B4C8] hover:border-[#1DA3B6] transition-colors group cursor-pointer relative" > -
      +
      Recommended
      diff --git a/components/footer.tsx b/components/footer.tsx index 187c147..9cb6fa3 100644 --- a/components/footer.tsx +++ b/components/footer.tsx @@ -2,9 +2,9 @@ import Link from "next/link" export default function Footer() { return ( -