Initial commit: monorepo setup with apps, packages, services

This commit is contained in:
Puechberty Arthur
2026-04-02 19:59:08 +02:00
commit a37299df19
17 changed files with 7077 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
<!-- BEGIN:nextjs-agent-rules -->
# This is NOT the Next.js you know
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
<!-- END:nextjs-agent-rules -->
+1
View File
@@ -0,0 +1 @@
@AGENTS.md
Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

+26
View File
@@ -0,0 +1,26 @@
@import "tailwindcss";
:root {
--background: #ffffff;
--foreground: #171717;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
background: var(--background);
color: var(--foreground);
font-family: var(--font-geist-sans), Arial, Helvetica, sans-serif;
}
+33
View File
@@ -0,0 +1,33 @@
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "Arthurp",
description: "Site daccueil simple pour le monorepo Arthurp.",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html
lang="fr"
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
>
<body className="min-h-full flex flex-col">{children}</body>
</html>
);
}
+68
View File
@@ -0,0 +1,68 @@
export default function Home() {
return (
<main className="min-h-screen bg-[linear-gradient(180deg,#f8fafc_0%,#eef2ff_100%)] px-6 py-10 text-slate-900">
<div className="mx-auto flex min-h-[calc(100vh-5rem)] w-full max-w-5xl flex-col justify-center gap-10">
<div className="max-w-2xl space-y-6">
<span className="inline-flex rounded-full border border-slate-200 bg-white px-4 py-1 text-sm font-medium text-slate-600 shadow-sm">
Site daccueil
</span>
<div className="space-y-4">
<h1 className="text-4xl font-semibold tracking-tight sm:text-6xl">
Un départ propre pour ton monorepo.
</h1>
<p className="max-w-xl text-lg leading-8 text-slate-600">
Une page daccueil claire, rapide à lire, et facile à faire évoluer pour
présenter ton projet dès le premier écran.
</p>
</div>
<div className="flex flex-col gap-3 sm:flex-row">
<a
href="#contact"
className="inline-flex h-12 items-center justify-center rounded-full bg-slate-900 px-6 text-sm font-semibold text-white transition hover:bg-slate-700"
>
Me contacter
</a>
<a
href="#services"
className="inline-flex h-12 items-center justify-center rounded-full border border-slate-300 bg-white px-6 text-sm font-semibold text-slate-900 transition hover:border-slate-400"
>
Voir les services
</a>
</div>
</div>
<section id="services" className="grid gap-4 md:grid-cols-3">
<article className="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
<p className="text-sm font-semibold text-slate-500">01</p>
<h2 className="mt-3 text-xl font-semibold">Simple</h2>
<p className="mt-2 text-sm leading-6 text-slate-600">
Une structure minimale, sans surcharge visuelle.
</p>
</article>
<article className="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
<p className="text-sm font-semibold text-slate-500">02</p>
<h2 className="mt-3 text-xl font-semibold">Rapide</h2>
<p className="mt-2 text-sm leading-6 text-slate-600">
Pensée pour être modifiée vite quand tu ajoutes du contenu.
</p>
</article>
<article className="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
<p className="text-sm font-semibold text-slate-500">03</p>
<h2 className="mt-3 text-xl font-semibold">Propre</h2>
<p className="mt-2 text-sm leading-6 text-slate-600">
Une base saine pour un monorepo Next.js clair et organisé.
</p>
</article>
</section>
<footer
id="contact"
className="flex flex-col gap-2 border-t border-slate-200 pt-6 text-sm text-slate-500 sm:flex-row sm:items-center sm:justify-between"
>
<span>Projet monorepo Next.js</span>
<span>Contact: contact@arthurp.fr</span>
</footer>
</div>
</main>
);
}
+18
View File
@@ -0,0 +1,18 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";
const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
]),
]);
export default eslintConfig;
+9
View File
@@ -0,0 +1,9 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
turbopack: {
root: '../../', // chemin vers la racine du monorepo
},
};
export default nextConfig;
+26
View File
@@ -0,0 +1,26 @@
{
"name": "web",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint"
},
"dependencies": {
"next": "16.2.2",
"react": "19.2.4",
"react-dom": "19.2.4"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.2.2",
"tailwindcss": "^4",
"typescript": "^5"
}
}
+7
View File
@@ -0,0 +1,7 @@
const config = {
plugins: {
"@tailwindcss/postcss": {},
},
};
export default config;
+34
View File
@@ -0,0 +1,34 @@
{
"compilerOptions": {
"target": "ES2017",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
"plugins": [
{
"name": "next"
}
],
"paths": {
"@/*": ["./*"]
}
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
".next/dev/types/**/*.ts",
"**/*.mts"
],
"exclude": ["node_modules"]
}