mirror of
https://github.com/arthur-pbty/hub.git
synced 2026-06-03 15:07:28 +02:00
feat: mise à jour du Dockerfile et du docker-compose pour le développement et la production, ajout de la licence et amélioration des pages légales
This commit is contained in:
+16
-24
@@ -1,34 +1,26 @@
|
|||||||
# === Étape 1 : Build ===
|
FROM node:22-alpine AS base
|
||||||
FROM node:20-alpine AS builder
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED=1
|
||||||
|
|
||||||
# Copier les fichiers de dépendances pour profiter du cache Docker
|
FROM base AS deps
|
||||||
COPY package*.json ./
|
COPY package.json package-lock.json ./
|
||||||
|
|
||||||
# Installer uniquement ce qu'il faut pour le build
|
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
# Copier tout le code
|
FROM deps AS dev
|
||||||
COPY . .
|
COPY . .
|
||||||
|
EXPOSE 3000
|
||||||
|
CMD ["npm", "run", "dev", "--", "--hostname", "0.0.0.0", "--port", "3000"]
|
||||||
|
|
||||||
# Build Next.js pour la production
|
FROM deps AS builder
|
||||||
|
COPY . .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# === Étape 2 : Runner léger ===
|
FROM base AS runner
|
||||||
FROM node:20-alpine AS runner
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# Copier uniquement ce qui est nécessaire pour la prod
|
|
||||||
COPY --from=builder /app/package*.json ./
|
|
||||||
COPY --from=builder /app/node_modules ./node_modules
|
|
||||||
COPY --from=builder /app/.next ./.next
|
|
||||||
COPY --from=builder /app/public ./public
|
|
||||||
|
|
||||||
# Mode production
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
ENV HOSTNAME=0.0.0.0
|
||||||
|
ENV PORT=3000
|
||||||
|
COPY --from=builder /app/.next/standalone ./
|
||||||
|
COPY --from=builder /app/.next/static ./.next/static
|
||||||
|
COPY --from=builder /app/public ./public
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
CMD ["node", "server.js"]
|
||||||
# Lancer le serveur Next.js
|
|
||||||
CMD ["npm", "start"]
|
|
||||||
@@ -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.
|
||||||
+25
-5
@@ -1,11 +1,31 @@
|
|||||||
services:
|
services:
|
||||||
web:
|
hub-dev:
|
||||||
build: .
|
profiles: ["dev"]
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
target: dev
|
||||||
|
container_name: hub-dev
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
volumes:
|
volumes:
|
||||||
- ./:/app
|
- .:/app
|
||||||
- /app/node_modules
|
- /app/node_modules
|
||||||
|
- /app/.next
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=development
|
NEXT_TELEMETRY_DISABLED: "1"
|
||||||
command: npm run dev
|
NODE_ENV: development
|
||||||
|
|
||||||
|
hub-prod:
|
||||||
|
profiles: ["prod"]
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
target: runner
|
||||||
|
container_name: hub-prod
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
NEXT_TELEMETRY_DISABLED: "1"
|
||||||
|
NODE_ENV: production
|
||||||
+35
-7
@@ -65,13 +65,41 @@ export default function RootLayout({
|
|||||||
<div className="flex-1">
|
<div className="flex-1">
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
<footer className="w-full border-t border-zinc-200 bg-zinc-50 py-4 text-center text-sm text-zinc-500">
|
<footer className="w-full border-t border-zinc-200 bg-zinc-50">
|
||||||
<nav aria-label="Liens légaux" className="flex flex-wrap justify-center gap-4">
|
<div className="mx-auto grid max-w-6xl grid-cols-1 gap-10 px-6 py-12 text-sm text-zinc-600 md:grid-cols-3">
|
||||||
<Link href="/legal/mentions-legales" className="hover:underline">Mentions légales</Link>
|
<div>
|
||||||
<Link href="/legal/confidentialite" className="hover:underline">Confidentialité</Link>
|
<h2 className="text-base font-semibold text-zinc-900">Navigation</h2>
|
||||||
<Link href="/legal/cgu" className="hover:underline">CGU</Link>
|
<nav aria-label="Navigation principale" className="mt-4 flex flex-col gap-2">
|
||||||
</nav>
|
<Link href="/" className="hover:text-zinc-900 hover:underline">Accueil</Link>
|
||||||
<div className="mt-2">© {new Date().getFullYear()} ArthurP</div>
|
<Link href="/#projets" className="hover:text-zinc-900 hover:underline">Projets</Link>
|
||||||
|
<a href="https://contact.arthurp.fr" target="_blank" rel="noopener noreferrer" className="hover:text-zinc-900 hover:underline">Contact</a>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h2 className="text-base font-semibold text-zinc-900">ArthurP.fr</h2>
|
||||||
|
<div className="mt-4 flex flex-col gap-2">
|
||||||
|
<a href="https://arthurp.fr" target="_blank" rel="noopener noreferrer" className="hover:text-zinc-900 hover:underline">arthurp.fr</a>
|
||||||
|
<a href="https://github.com/arthur-pbty" target="_blank" rel="noopener noreferrer" className="hover:text-zinc-900 hover:underline">GitHub</a>
|
||||||
|
<a href="mailto:contact@arthurp.fr" className="hover:text-zinc-900 hover:underline">contact@arthurp.fr</a>
|
||||||
|
<a href="https://contact.arthurp.fr" target="_blank" rel="noopener noreferrer" className="hover:text-zinc-900 hover:underline">contact.arthurp.fr</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h2 className="text-base font-semibold text-zinc-900">Légal</h2>
|
||||||
|
<nav aria-label="Liens légaux" className="mt-4 flex flex-col gap-2">
|
||||||
|
<Link href="/legal/mentions-legales" className="hover:text-zinc-900 hover:underline">Mentions légales</Link>
|
||||||
|
<Link href="/legal/confidentialite" className="hover:text-zinc-900 hover:underline">Confidentialité</Link>
|
||||||
|
<Link href="/legal/cgu" className="hover:text-zinc-900 hover:underline">CGU</Link>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="border-t border-zinc-200 px-6 py-5 text-center text-sm text-zinc-500">
|
||||||
|
<p>© {new Date().getFullYear()} Arthur P. Tous droits réservés.</p>
|
||||||
|
<p className="mt-1">Fait avec passion et auto-hébergé sur Proxmox.</p>
|
||||||
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export default function CGU() {
|
|||||||
</Link>
|
</Link>
|
||||||
<h1 className="text-2xl font-bold mb-4">Conditions Générales d’Utilisation</h1>
|
<h1 className="text-2xl font-bold mb-4">Conditions Générales d’Utilisation</h1>
|
||||||
<p className="mb-2">L’utilisation des outils proposés sur arthurp.fr est libre et gratuite. L’éditeur ne saurait être tenu responsable d’un usage inapproprié ou des conséquences liées à l’utilisation des outils.</p>
|
<p className="mb-2">L’utilisation des outils proposés sur arthurp.fr est libre et gratuite. L’éditeur ne saurait être tenu responsable d’un usage inapproprié ou des conséquences liées à l’utilisation des outils.</p>
|
||||||
<p className="mb-2">En utilisant ce site, vous acceptez ces conditions. Pour toute question, contactez-moi à contact [at] arthurp.fr.</p>
|
<p className="mb-2">En utilisant ce site, vous acceptez ces conditions. Pour toute question, contactez-moi via contact.arthurp.fr ou par e-mail à contact@arthurp.fr.</p>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export default function Confidentialite() {
|
|||||||
</Link>
|
</Link>
|
||||||
<h1 className="text-2xl font-bold mb-4">Politique de confidentialité</h1>
|
<h1 className="text-2xl font-bold mb-4">Politique de confidentialité</h1>
|
||||||
<p className="mb-2">Aucune donnée personnelle n’est collectée à des fins commerciales. Les outils proposés peuvent utiliser des cookies techniques pour le bon fonctionnement du site.</p>
|
<p className="mb-2">Aucune donnée personnelle n’est collectée à des fins commerciales. Les outils proposés peuvent utiliser des cookies techniques pour le bon fonctionnement du site.</p>
|
||||||
<p className="mb-2">Aucune information n’est transmise à des tiers. Pour toute question, contactez-moi à contact [at] arthurp.fr.</p>
|
<p className="mb-2">Aucune information n’est transmise à des tiers. Pour toute question, contactez-moi via contact.arthurp.fr ou par e-mail à contact@arthurp.fr.</p>
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ export default function MentionsLegales() {
|
|||||||
<h1 className="text-2xl font-bold mb-4">Mentions légales</h1>
|
<h1 className="text-2xl font-bold mb-4">Mentions légales</h1>
|
||||||
<p className="mb-2">Conformément à la loi, voici les informations légales du site arthurp.fr.</p>
|
<p className="mb-2">Conformément à la loi, voici les informations légales du site arthurp.fr.</p>
|
||||||
<ul className="mb-4 list-disc pl-6">
|
<ul className="mb-4 list-disc pl-6">
|
||||||
<li><strong>Éditeur :</strong> Arthur P. (contact via Discord ou formulaire sur le site)</li>
|
<li><strong>Éditeur :</strong> Arthur P.</li>
|
||||||
<li><strong>Contact :</strong> contact [at] arthurp.fr</li>
|
<li><strong>Contact :</strong> contact.arthurp.fr ou contact@arthurp.fr</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p className="text-zinc-500 text-sm">Ce site est un projet personnel, sans but commercial.</p>
|
<p className="text-zinc-500 text-sm">Ce site est un projet personnel, sans but commercial.</p>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
+1
-1
@@ -141,7 +141,7 @@ export default function Home() {
|
|||||||
<p className="mb-10 max-w-2xl text-center text-lg text-zinc-600">
|
<p className="mb-10 max-w-2xl text-center text-lg text-zinc-600">
|
||||||
Découvre tous mes outils, projets et ressources en ligne : bots Discord, générateurs, QCM, linktree et plus encore. Un point d’accès unique pour tout ce que je développe et partage.
|
Découvre tous mes outils, projets et ressources en ligne : bots Discord, générateurs, QCM, linktree et plus encore. Un point d’accès unique pour tout ce que je développe et partage.
|
||||||
</p>
|
</p>
|
||||||
<div className="grid w-full grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
|
<div id="projets" className="grid w-full scroll-mt-24 grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
|
||||||
{projects.map((project) => (
|
{projects.map((project) => (
|
||||||
<div key={project.title} className="flex flex-col rounded-2xl border border-zinc-200 bg-zinc-50 shadow-sm hover:shadow-lg transition-shadow overflow-hidden">
|
<div key={project.title} className="flex flex-col rounded-2xl border border-zinc-200 bg-zinc-50 shadow-sm hover:shadow-lg transition-shadow overflow-hidden">
|
||||||
<Image
|
<Image
|
||||||
|
|||||||
Reference in New Issue
Block a user