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:20-alpine AS builder
|
||||
|
||||
FROM node:22-alpine AS base
|
||||
WORKDIR /app
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
# Copier les fichiers de dépendances pour profiter du cache Docker
|
||||
COPY package*.json ./
|
||||
|
||||
# Installer uniquement ce qu'il faut pour le build
|
||||
FROM base AS deps
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
# Copier tout le code
|
||||
FROM deps AS dev
|
||||
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
|
||||
|
||||
# === Étape 2 : Runner léger ===
|
||||
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
|
||||
FROM base AS runner
|
||||
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
|
||||
|
||||
# Lancer le serveur Next.js
|
||||
CMD ["npm", "start"]
|
||||
CMD ["node", "server.js"]
|
||||
@@ -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:
|
||||
web:
|
||||
build: .
|
||||
hub-dev:
|
||||
profiles: ["dev"]
|
||||
build:
|
||||
context: .
|
||||
target: dev
|
||||
container_name: hub-dev
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- ./:/app
|
||||
- .:/app
|
||||
- /app/node_modules
|
||||
- /app/.next
|
||||
environment:
|
||||
- NODE_ENV=development
|
||||
command: npm run dev
|
||||
NEXT_TELEMETRY_DISABLED: "1"
|
||||
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">
|
||||
{children}
|
||||
</div>
|
||||
<footer className="w-full border-t border-zinc-200 bg-zinc-50 py-4 text-center text-sm text-zinc-500">
|
||||
<nav aria-label="Liens légaux" className="flex flex-wrap justify-center gap-4">
|
||||
<Link href="/legal/mentions-legales" className="hover:underline">Mentions légales</Link>
|
||||
<Link href="/legal/confidentialite" className="hover:underline">Confidentialité</Link>
|
||||
<Link href="/legal/cgu" className="hover:underline">CGU</Link>
|
||||
</nav>
|
||||
<div className="mt-2">© {new Date().getFullYear()} ArthurP</div>
|
||||
<footer className="w-full border-t border-zinc-200 bg-zinc-50">
|
||||
<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">
|
||||
<div>
|
||||
<h2 className="text-base font-semibold text-zinc-900">Navigation</h2>
|
||||
<nav aria-label="Navigation principale" className="mt-4 flex flex-col gap-2">
|
||||
<Link href="/" className="hover:text-zinc-900 hover:underline">Accueil</Link>
|
||||
<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>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -9,7 +9,7 @@ export default function CGU() {
|
||||
</Link>
|
||||
<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">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>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@ export default function Confidentialite() {
|
||||
</Link>
|
||||
<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 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>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -10,8 +10,8 @@ export default function MentionsLegales() {
|
||||
<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>
|
||||
<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>Contact :</strong> contact [at] arthurp.fr</li>
|
||||
<li><strong>Éditeur :</strong> Arthur P.</li>
|
||||
<li><strong>Contact :</strong> contact.arthurp.fr ou contact@arthurp.fr</li>
|
||||
</ul>
|
||||
<p className="text-zinc-500 text-sm">Ce site est un projet personnel, sans but commercial.</p>
|
||||
</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">
|
||||
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>
|
||||
<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) => (
|
||||
<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
|
||||
|
||||
Reference in New Issue
Block a user