feat: ajouter la configuration de l'application et les styles principaux, créer les pages mcp et index

This commit is contained in:
2025-12-16 17:28:13 +01:00
parent 3f4a581e51
commit e53412f3b7
5 changed files with 61 additions and 42 deletions

3
app.config.ts Normal file
View File

@@ -0,0 +1,3 @@
export default defineAppConfig({
})

2
app/assets/css/main.css Normal file
View File

@@ -0,0 +1,2 @@
@import "tailwindcss";
@import "@nuxt/ui";

View File

@@ -43,7 +43,7 @@ const resources = [
</script> </script>
<template> <template>
<div class="min-h-screen bg-gradient-to-b from-gray-50 to-white dark:from-gray-950 dark:to-gray-900"> <div class="min-h-screen bg-linear-to-b from-gray-50 to-white dark:from-gray-950 dark:to-gray-900">
<!-- Hero Section --> <!-- Hero Section -->
<UContainer class="py-16 sm:py-24"> <UContainer class="py-16 sm:py-24">
<div class="text-center"> <div class="text-center">
@@ -71,7 +71,7 @@ const resources = [
<div class="flex flex-col sm:flex-row gap-4 justify-center mb-12"> <div class="flex flex-col sm:flex-row gap-4 justify-center mb-12">
<UButton <UButton
to="/docs" to="/mcp"
size="xl" size="xl"
icon="i-heroicons-book-open" icon="i-heroicons-book-open"
class="shadow-lg" class="shadow-lg"
@@ -98,13 +98,13 @@ const resources = [
Nuxt 4 Nuxt 4
</UBadge> </UBadge>
<UBadge <UBadge
color="success" color="error"
variant="subtle" variant="subtle"
> >
MCP Protocol MCP Protocol
</UBadge> </UBadge>
<UBadge <UBadge
color="primary" color="secondary"
variant="subtle" variant="subtle"
> >
TypeScript TypeScript
@@ -135,10 +135,9 @@ const resources = [
v-for="feature in features" v-for="feature in features"
:key="feature.title" :key="feature.title"
:ui="{ :ui="{
body: { padding: 'p-6' }, body: 'p-6',
ring: 'ring-1 ring-gray-200 dark:ring-gray-800',
shadow: 'shadow-lg hover:shadow-xl transition-shadow duration-300'
}" }"
variant="subtle"
> >
<div class="flex flex-col items-start gap-4"> <div class="flex flex-col items-start gap-4">
<div class="p-3 rounded-lg bg-primary/10"> <div class="p-3 rounded-lg bg-primary/10">
@@ -178,11 +177,10 @@ const resources = [
:to="resource.to" :to="resource.to"
target="_blank" target="_blank"
color="neutral" color="neutral"
variant="outline" variant="subtle"
size="lg" size="lg"
block block
:ui="{ :ui="{
padding: { lg: 'px-4 py-6' },
base: 'hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors duration-200' base: 'hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors duration-200'
}" }"
> >
@@ -201,10 +199,9 @@ const resources = [
<UContainer class="py-16"> <UContainer class="py-16">
<UCard <UCard
:ui="{ :ui="{
body: { padding: 'p-8 sm:p-12' }, body: 'p-8 sm:p-12',
ring: 'ring-1 ring-gray-200 dark:ring-gray-800',
background: 'bg-gradient-to-br from-primary/5 to-primary/10 dark:from-primary/10 dark:to-primary/20'
}" }"
variant="outline"
> >
<div class="grid md:grid-cols-2 gap-8"> <div class="grid md:grid-cols-2 gap-8">
<div> <div>
@@ -214,14 +211,18 @@ const resources = [
<p class="text-gray-600 dark:text-gray-400 mb-4"> <p class="text-gray-600 dark:text-gray-400 mb-4">
Configure your MCP client to connect to my server: Configure your MCP client to connect to my server:
</p> </p>
<UCard :ui="{ body: { padding: 'p-4' }, background: 'bg-gray-900 dark:bg-gray-950' }"> <UCard
<pre class="text-sm text-gray-100 overflow-x-auto"><code>{ variant="solid">
<pre class="text-sm text-gray-100 overflow-x-auto">
<code>
{
"mcpServers": { "mcpServers": {
"artmcp": { "artmcp": {
"url": "https://api.arthurdanjou.fr/mcp/mcp" "url": "https://api.arthurdanjou.fr/mcp/mcp"
} }
} }
}</code></pre> }</code>
</pre>
</UCard> </UCard>
</div> </div>
@@ -232,12 +233,14 @@ const resources = [
<p class="text-gray-600 dark:text-gray-400 mb-4"> <p class="text-gray-600 dark:text-gray-400 mb-4">
Use REST API endpoints in your applications: Use REST API endpoints in your applications:
</p> </p>
<UCard :ui="{ body: { padding: 'p-4' }, background: 'bg-gray-900 dark:bg-gray-950' }"> <UCard variant="solid">
<pre class="text-sm text-gray-100 overflow-x-auto"><code># Get profile information <pre class="text-sm text-gray-100 overflow-x-auto">
<code># Get profile information
curl https://api.arthurdanjou.fr/api/profile curl https://api.arthurdanjou.fr/api/profile
# Get technical skills # Get technical skills
curl https://api.arthurdanjou.fr/api/skills</code></pre> curl https://api.arthurdanjou.fr/api/skills</code>
</pre>
</UCard> </UCard>
</div> </div>
</div> </div>
@@ -255,7 +258,7 @@ curl https://api.arthurdanjou.fr/api/skills</code></pre>
</p> </p>
<div class="flex flex-col sm:flex-row gap-4 justify-center"> <div class="flex flex-col sm:flex-row gap-4 justify-center">
<UButton <UButton
to="/docs" to="/mcp"
size="xl" size="xl"
icon="i-heroicons-arrow-right" icon="i-heroicons-arrow-right"
trailing trailing

View File

@@ -78,7 +78,7 @@ const apiEndpoints = [
<template> <template>
<div class="min-h-screen bg-gray-50 dark:bg-gray-900"> <div class="min-h-screen bg-gray-50 dark:bg-gray-900">
<!-- Hero Header --> <!-- Hero Header -->
<div class="bg-gradient-to-br from-primary to-primary-600 dark:from-primary-900 dark:to-primary-800"> <div class="bg-linear-to-br from-primary to-primary-600 dark:from-primary-900 dark:to-primary-800">
<UContainer class="py-16"> <UContainer class="py-16">
<div class="text-center text-white"> <div class="text-center text-white">
<UBadge <UBadge
@@ -125,7 +125,8 @@ const apiEndpoints = [
<!-- Overview --> <!-- Overview -->
<UCard <UCard
class="mb-8" class="mb-8"
:ui="{ body: { padding: 'p-8' } }" :ui="{ body: 'p-8' }"
variant="outline"
> >
<h2 class="text-3xl font-bold mb-4"> <h2 class="text-3xl font-bold mb-4">
What is ArtMCP? What is ArtMCP?
@@ -137,7 +138,7 @@ const apiEndpoints = [
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-check-circle" name="i-heroicons-check-circle"
class="w-6 h-6 text-green-500 flex-shrink-0 mt-0.5" class="w-6 h-6 text-green-500 shrink-0 mt-0.5"
/> />
<div> <div>
<p class="font-medium"> <p class="font-medium">
@@ -148,7 +149,7 @@ const apiEndpoints = [
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-check-circle" name="i-heroicons-check-circle"
class="w-6 h-6 text-green-500 flex-shrink-0 mt-0.5" class="w-6 h-6 text-green-500 shrink-0 mt-0.5"
/> />
<div> <div>
<p class="font-medium"> <p class="font-medium">
@@ -159,7 +160,7 @@ const apiEndpoints = [
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-check-circle" name="i-heroicons-check-circle"
class="w-6 h-6 text-green-500 flex-shrink-0 mt-0.5" class="w-6 h-6 text-green-500 shrink-0 mt-0.5"
/> />
<div> <div>
<p class="font-medium"> <p class="font-medium">
@@ -170,7 +171,7 @@ const apiEndpoints = [
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-check-circle" name="i-heroicons-check-circle"
class="w-6 h-6 text-green-500 flex-shrink-0 mt-0.5" class="w-6 h-6 text-green-500 shrink-0 mt-0.5"
/> />
<div> <div>
<p class="font-medium"> <p class="font-medium">
@@ -181,7 +182,7 @@ const apiEndpoints = [
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-check-circle" name="i-heroicons-check-circle"
class="w-6 h-6 text-green-500 flex-shrink-0 mt-0.5" class="w-6 h-6 text-green-500 shrink-0 mt-0.5"
/> />
<div> <div>
<p class="font-medium"> <p class="font-medium">
@@ -192,7 +193,7 @@ const apiEndpoints = [
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-check-circle" name="i-heroicons-check-circle"
class="w-6 h-6 text-green-500 flex-shrink-0 mt-0.5" class="w-6 h-6 text-green-500 shrink-0 mt-0.5"
/> />
<div> <div>
<p class="font-medium"> <p class="font-medium">
@@ -206,7 +207,8 @@ const apiEndpoints = [
<!-- Quick Start --> <!-- Quick Start -->
<UCard <UCard
class="mb-8" class="mb-8"
:ui="{ body: { padding: 'p-8' } }" :ui="{ body: 'p-8' }"
variant="outline"
> >
<h2 class="text-3xl font-bold mb-6"> <h2 class="text-3xl font-bold mb-6">
Quick Start Quick Start
@@ -220,14 +222,16 @@ const apiEndpoints = [
<h3 class="text-xl font-semibold mb-4"> <h3 class="text-xl font-semibold mb-4">
MCP Configuration MCP Configuration
</h3> </h3>
<UCard :ui="{ body: { padding: 'p-4' }, background: 'bg-gray-900 dark:bg-gray-950' }"> <UCard variant="solid">
<pre class="text-sm text-gray-100 overflow-x-auto"><code>{ <pre class="text-sm text-gray-100 overflow-x-auto">
<code>{
"mcpServers": { "mcpServers": {
"artmcp": { "artmcp": {
"url": "https://api.arthurdanjou.fr/mcp/mcp" "url": "https://api.arthurdanjou.fr/mcp"
} }
} }
}</code></pre> }</code>
</pre>
</UCard> </UCard>
</div> </div>
@@ -235,8 +239,8 @@ const apiEndpoints = [
<h3 class="text-xl font-semibold mb-4"> <h3 class="text-xl font-semibold mb-4">
Direct Connection Direct Connection
</h3> </h3>
<UCard :ui="{ body: { padding: 'p-4' }, background: 'bg-gray-900 dark:bg-gray-950' }"> <UCard variant="solid">
<pre class="text-sm text-gray-100 overflow-x-auto"><code>https://api.arthurdanjou.fr/mcp/mcp</code></pre> <pre class="text-sm text-gray-100 overflow-x-auto"><code>https://api.arthurdanjou.fr/mcp</code></pre>
</UCard> </UCard>
<p class="text-sm text-gray-600 dark:text-gray-400 mt-2"> <p class="text-sm text-gray-600 dark:text-gray-400 mt-2">
Use this URL to connect your MCP client directly Use this URL to connect your MCP client directly
@@ -248,7 +252,8 @@ const apiEndpoints = [
<!-- Tools Section --> <!-- Tools Section -->
<UCard <UCard
class="mb-8" class="mb-8"
:ui="{ body: { padding: 'p-8' } }" :ui="{ body: 'p-8' }"
variant="outline"
> >
<h2 class="text-3xl font-bold mb-4"> <h2 class="text-3xl font-bold mb-4">
Tools Tools
@@ -306,7 +311,8 @@ const apiEndpoints = [
<!-- Prompts Section --> <!-- Prompts Section -->
<UCard <UCard
class="mb-8" class="mb-8"
:ui="{ body: { padding: 'p-8' } }" :ui="{ body: 'p-8' }"
variant="outline"
> >
<h2 class="text-3xl font-bold mb-4"> <h2 class="text-3xl font-bold mb-4">
Prompts Prompts
@@ -319,12 +325,13 @@ const apiEndpoints = [
<UCard <UCard
v-for="prompt in prompts" v-for="prompt in prompts"
:key="prompt.name" :key="prompt.name"
:ui="{ body: { padding: 'p-4' }, ring: 'ring-1 ring-gray-200 dark:ring-gray-800' }" :ui="{ body: 'p-4' }"
variant="outline"
> >
<div class="flex items-start gap-3"> <div class="flex items-start gap-3">
<UIcon <UIcon
name="i-heroicons-chat-bubble-left-right" name="i-heroicons-chat-bubble-left-right"
class="w-5 h-5 text-primary flex-shrink-0 mt-0.5" class="w-5 h-5 text-primary shrink-0 mt-0.5"
/> />
<div> <div>
<h3 class="font-semibold mb-1"> <h3 class="font-semibold mb-1">
@@ -342,7 +349,8 @@ const apiEndpoints = [
<!-- Resources Section --> <!-- Resources Section -->
<UCard <UCard
class="mb-8" class="mb-8"
:ui="{ body: { padding: 'p-8' } }" :ui="{ body: 'p-8' }"
variant="outline"
> >
<h2 class="text-3xl font-bold mb-4"> <h2 class="text-3xl font-bold mb-4">
Resources Resources
@@ -355,7 +363,8 @@ const apiEndpoints = [
<UCard <UCard
v-for="resource in resources" v-for="resource in resources"
:key="resource.uri" :key="resource.uri"
:ui="{ body: { padding: 'p-4' }, ring: 'ring-1 ring-gray-200 dark:ring-gray-800' }" :ui="{ body: 'p-4' }"
variant="outline"
> >
<div class="flex flex-col gap-2"> <div class="flex flex-col gap-2">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
@@ -379,7 +388,7 @@ const apiEndpoints = [
</UCard> </UCard>
<!-- API Endpoints Section --> <!-- API Endpoints Section -->
<UCard :ui="{ body: { padding: 'p-8' } }"> <UCard :ui="{ body: 'p-8'}">
<h2 class="text-3xl font-bold mb-4"> <h2 class="text-3xl font-bold mb-4">
REST API Endpoints REST API Endpoints
</h2> </h2>

View File

@@ -10,6 +10,8 @@ export default defineNuxtConfig({
'@nuxt/ui' '@nuxt/ui'
], ],
css: ['~/assets/css/main.css'],
devtools: { devtools: {
enabled: true, enabled: true,
}, },
@@ -61,7 +63,7 @@ export default defineNuxtConfig({
mcp: { mcp: {
name: 'ArtMCP', name: 'ArtMCP',
version: '1.0.0', version: '1.0.0',
browserRedirect: '/docs' browserRedirect: '/mcp'
}, },
studio: { studio: {