mirror of
https://github.com/arthur-pbty/arthurp.git
synced 2026-06-16 08:12:28 +02:00
Initial commit: monorepo setup with apps, packages, services
This commit is contained in:
+82
@@ -0,0 +1,82 @@
|
|||||||
|
# --------------------------
|
||||||
|
# Node / Dependencies
|
||||||
|
# --------------------------
|
||||||
|
node_modules/
|
||||||
|
**/node_modules/
|
||||||
|
.npm/
|
||||||
|
.pnpm-store/
|
||||||
|
.pnp
|
||||||
|
.pnp.*
|
||||||
|
.yarn/
|
||||||
|
!.yarn/patches/
|
||||||
|
!.yarn/plugins/
|
||||||
|
!.yarn/releases/
|
||||||
|
!.yarn/versions/
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Turborepo / Caches
|
||||||
|
# --------------------------
|
||||||
|
.turbo/
|
||||||
|
.cache/
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Testing
|
||||||
|
# --------------------------
|
||||||
|
coverage/
|
||||||
|
**/coverage/
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Next.js / Frontend builds
|
||||||
|
# --------------------------
|
||||||
|
.next/
|
||||||
|
**/.next/
|
||||||
|
out/
|
||||||
|
**/out/
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Production / Builds
|
||||||
|
# --------------------------
|
||||||
|
build/
|
||||||
|
**/build/
|
||||||
|
dist/
|
||||||
|
**/dist/
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Env files / secrets
|
||||||
|
# --------------------------
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
*.pem
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Debug logs
|
||||||
|
# --------------------------
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Vercel
|
||||||
|
# --------------------------
|
||||||
|
.vercel/
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# TypeScript
|
||||||
|
# --------------------------
|
||||||
|
*.tsbuildinfo
|
||||||
|
next-env.d.ts
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# IDE / Editor
|
||||||
|
# --------------------------
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.sublime-workspace
|
||||||
|
*.sublime-project
|
||||||
|
|
||||||
|
# --------------------------
|
||||||
|
# Mac / OS
|
||||||
|
# --------------------------
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
Copyright (c) 2026 Arthur
|
||||||
|
|
||||||
|
Licence pour tous les projets Arthur
|
||||||
|
|
||||||
|
1. Définition
|
||||||
|
Cette licence définit les droits et obligations concernant l'utilisation, la modification et la redistribution du code fourni par l'auteur.
|
||||||
|
|
||||||
|
2. Autorisation d'utilisation
|
||||||
|
Vous êtes libre d'utiliser ce code pour vos projets personnels ou commerciaux. L'utilisation doit inclure une mention de l'auteur d’une manière libre (ex: "inspiré de ArthurP").
|
||||||
|
|
||||||
|
3. Modification
|
||||||
|
Vous pouvez modifier, adapter ou améliorer le code pour vos besoins. Les modifications doivent être identifiées comme telles et ne doivent pas être présentées comme l'original.
|
||||||
|
|
||||||
|
4. Redistribution
|
||||||
|
- Le code original **ne peut pas être redistribué tel quel**.
|
||||||
|
- Les versions modifiées peuvent être partagées, sous réserve de mentionner l'auteur original.
|
||||||
|
|
||||||
|
5. Usage commercial
|
||||||
|
L’usage commercial des versions modifiées est autorisé. Vous pouvez générer des revenus avec votre version modifiée.
|
||||||
|
|
||||||
|
6. Attribution
|
||||||
|
L'auteur original doit être cité d’une manière libre, mais visible, sur tout projet utilisant ce code ou ses dérivés.
|
||||||
|
|
||||||
|
7. Responsabilité
|
||||||
|
Le code est fourni "tel quel", sans garantie d’aucune sorte. L’auteur décline toute responsabilité pour tout dommage direct ou indirect résultant de l’utilisation du code.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Arthurp
|
||||||
|
|
||||||
|
Monorepo simple avec Next.js.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
- `apps/web` : application web Next.js
|
||||||
|
- `packages` : packages partagés
|
||||||
|
- `services` : services annexes
|
||||||
|
|
||||||
|
## Commandes
|
||||||
|
|
||||||
|
- `npm install`
|
||||||
|
- `npm run dev`
|
||||||
|
- `npm run build`
|
||||||
@@ -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 -->
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
@AGENTS.md
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 361 KiB |
@@ -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;
|
||||||
|
}
|
||||||
@@ -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 d’accueil 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -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 d’accueil
|
||||||
|
</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 d’accueil 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import type { NextConfig } from "next";
|
||||||
|
|
||||||
|
const nextConfig: NextConfig = {
|
||||||
|
turbopack: {
|
||||||
|
root: '../../', // chemin vers la racine du monorepo
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default nextConfig;
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
const config = {
|
||||||
|
plugins: {
|
||||||
|
"@tailwindcss/postcss": {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
||||||
@@ -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"]
|
||||||
|
}
|
||||||
Generated
+6700
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "arthurp",
|
||||||
|
"private": true,
|
||||||
|
"packageManager": "npm@11.6.2",
|
||||||
|
"workspaces": [
|
||||||
|
"apps/*",
|
||||||
|
"packages/*",
|
||||||
|
"services/*"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"dev": "turbo run dev",
|
||||||
|
"build": "turbo run build"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"turbo": "^2.9.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"tasks": {
|
||||||
|
"build": {
|
||||||
|
"dependsOn": ["^build"],
|
||||||
|
"outputs": [".next/**"]
|
||||||
|
},
|
||||||
|
"dev": {
|
||||||
|
"cache": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user