Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
24 changes: 24 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# .github/release.yml
---

changelog:
exclude:
labels:
- ignore-for-release
categories:
- title: 🚀 Nouveautés
labels:
- feature
- enhancement
- title: 🐛 Correctifs
labels:
- bug
- fix
- title: 🔧 Infrastructure & Dépendances
labels:
- ops
- chore
- dependencies
- title: 📚 Documentation
labels:
- documentation
66 changes: 66 additions & 0 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: 🐋 Dockline

on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push:
runs-on: ubuntu-latest

permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #v7
with:
node-version: '26'
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Build static site
run: npm run build

- name: Log in to the Container registry
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f #v4.6.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 #v6.2.0
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
# Tag semver complet : v1.2.3
type=semver,pattern={{version}}
# Majeur.mineur : v1.2 (reçoit automatiquement les patchs)
type=semver,pattern={{major}}.{{minor}}
# Majeur seul : v1 (point d'entrée stable pour FluxCD)
type=semver,pattern={{major}}
# Latest : toujours sur le dernier tag
type=raw,value=latest

- name: Build and push Docker image
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a #v7.3.0
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store
4 changes: 4 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
11 changes: 11 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
22 changes: 22 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Development

When starting the dev server, use background mode:

```
astro dev --background
```

Manage the background server with `astro dev stop`, `astro dev status`, and `astro dev logs`.

## Documentation

Full documentation: https://docs.astro.build

Consult these guides before working on related tasks:

- [Adding pages, dynamic routes, or middleware](https://docs.astro.build/en/guides/routing/)
- [Working with Astro components](https://docs.astro.build/en/basics/astro-components/)
- [Using React, Vue, Svelte, or other framework components](https://docs.astro.build/en/guides/framework-components/)
- [Adding or managing content](https://docs.astro.build/en/guides/content-collections/)
- [Adding styles or using Tailwind](https://docs.astro.build/en/guides/styling/)
- [Supporting multiple languages](https://docs.astro.build/en/guides/internationalization/)
1 change: 1 addition & 0 deletions CLAUDE.md
11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM nginx:1.30.4-alpine-slim

COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY dist/ /usr/share/nginx/html/

RUN touch /var/run/nginx.pid && \
chown -R 101:101 /var/cache/nginx /var/log/nginx /var/run/nginx.pid /usr/share/nginx/html

USER 101

EXPOSE 8080
49 changes: 49 additions & 0 deletions README-astro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Starlight Starter Kit: Basics

[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)

```
npm create astro@latest -- --template starlight
```

> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!

## 🚀 Project Structure

Inside of your Astro + Starlight project, you'll see the following folders and files:

```
.
├── public/
├── src/
│ ├── assets/
│ ├── content/
│ │ └── docs/
│ └── content.config.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json
```

Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.

Images can be added to `src/assets/` and embedded in Markdown with a relative link.

Static assets, like favicons, can be placed in the `public/` directory.

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |

## 👀 Want to learn more?

Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
111 changes: 76 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,12 @@
# Template `README.md` pour les dépôts d’infrastructure
# Développement - Loutik Docs

## Prompt IA

Tu es un ingénieur SRE senior garant du respect des bonnes pratiques de l’industrie. Ta mission est de rédiger le fichier README.md du projet en restant concis, clair et professionnel dans tes explications pour un dépôt de développement (application, bot, API...).

Ci-dessous se trouve un template Markdown du README.md. Les commentaires entre crochets [] sont des instructions destinées à ton persona et ne doivent jamais apparaître dans le résultat final.

Ta réponse doit contenir uniquement le résultat final, sans texte supplémentaire ni explication.

Informations à prendre en compte :

* [INSÉRER LES INFORMATIONS]

````markdown
# Développement - <nom>

![Bannière Loutik](https://raw.githubusercontent.com/loutik/design-assets/main/banniere_loutik.png)
![Bannière Loutik](https://raw.githubusercontent.com/loutik/design-assets/main/loutikdocs/banniere_loutikdocs.png)

## Contexte

[Présenter le contexte du dépôt, les objectifs du projet ainsi que l'objectif de l'outil développer.]
Ce dépôt contient le site de documentation Loutik, conçu pour partager mon infrastructure homelab, les composants techniques mis en place, les notions apprises au fil de mes expériences, ainsi que les projets réalisés dans le cadre du BTS SIO.

L’objectif est de centraliser la documentation technique sous une interface claire et facilement navigable, afin de présenter les architectures, les choix de conception, les bonnes pratiques et les retours d’expérience liés au système d’information et à l’automatisation.

---

Expand All @@ -28,44 +15,99 @@ Informations à prendre en compte :
L’organisation du dépôt suit la logique suivante :

```text
[Génération de l’arborescence du projet avec les dossiers et fichiers importants]
.
├── public/ # Fichiers statiques servis par le site
├── src/
│ ├── assets/ # Ressources visuelles et médias
│ ├── components/ # Composants Astro réutilisables
│ ├── content/
│ │ ├── docs/ # Contenu documentaire du site
│ │ └── config.ts # Configuration des collections de contenu
│ └── ...
├── templates/ # Modèles de rédaction pour les contenus
├── .github/ # Configuration GitHub et workflows
├── astro.config.mjs # Configuration principal du projet Astro
├── docker-compose.yml # Services Docker du projet
├── Dockerfile # Image de conteneur du site
├── nginx.conf # Configuration NGINX pour la publication
├── package.json # Dépendances et scripts npm
├── package-lock.json # Verrouillage des dépendances
├── tsconfig.json # Configuration TypeScript
├── README.md # Documentation du dépôt
├── README-astro.md # Documentation Astro de référence
├── LICENSE.md # Licence du projet
└── public/ # Fichiers publics du site
```

- **`[<chemin>/]`** : [Description de l’utilité du dossier]
- **`[<chemin>/<nom.extension>]`** : [Description de l’utilité du fichier]
- **`src/content/docs/`** : Contient la documentation, les articles, les pages et les ressources associées au site.
- **`src/components/`** : Regroupe les composants Astro utilisés pour la structure et le design du site.
- **`public/`** : Contient les assets statiques exposés directement par le serveur web.
- **`templates/`** : Fournit des modèles pour la rédaction de nouveaux contenus et de pages structurées.
- **`astro.config.mjs`** : Paramètre le moteur Astro ainsi que ses intégrations et plugins.
- **`package.json`** : Déclare les scripts et les dépendances du projet.

---

## Utilisation de [nom]
## Utilisation du projet

### 1. Cloner le dépôt localement

```bash
git clone [URL du dépôt]
cd [Nom du dépôt]
git clone https://github.com/loutik/website-docs.git
cd loutik_website-docs
```

### 2. Installer les dépendances

```bash
npm install
```

### 2. [Action à réaliser]
### 3. Lancer le site en mode développement

[Description de l’action]
```bash
npm run dev
```

Le site est ensuite accessible par défaut sur l’URL suivante :

```text
http://localhost:4321
```

### 4. Vérifier le rendu du projet

Pour générer la version de production et valider le site avant publication :

```bash
[Exemple de commande]
npm run build
npm run preview
```

### 3. [Action suivante]
Cette commande permet de vérifier le rendu final produit par Astro avant un déploiement ou une publication.

### 5. Publier des modifications via une branche et une pull request

```bash
git checkout -b feature/mon-correctif
git add .
git commit -m "Ajout de la documentation ou correction"
git push -u origin feature/mon-correctif
```

[Ajouter autant d’étapes que nécessaire]
Ensuite, ouvrez une pull request sur GitHub pour valider les changements, demander une revue et fusionner la branche dans la branche principale lorsqu’elle est prête.

---

## Bonnes pratiques

1. **[Nom de la bonne pratique]** : [Description]
2. **[Nom de la bonne pratique]** : [Description]
1. **Valider le build avant merge** : Exécuter `npm run build` pour s’assurer que le site compile correctement et que les pages sont générées sans erreur.
2. **Conserver une structure documentaire claire** : Organiser les pages par thématiques de manière cohérente (homelab, notions, projets, blog, etc.).
3. **Séparer contenu et composants** : Conserver les fichiers de contenu dans `src/content/docs/` et les éléments réutilisables dans `src/components/`.
4. **Optimiser les assets** : Utiliser les ressources statiques et les images dans des dossiers dédiés pour éviter la confusion et faciliter la maintenance.

```bash
[Commande à exécuter si nécessaire]
npm run build
```

---
Expand All @@ -78,6 +120,5 @@ cd [Nom du dépôt]

<div align="center">
<br>
<small><i>Dernière mise à jour : [jour mois année — Exemple : 15 avril 2026]</i></small>
</div>
````
<small><i>Dernière mise à jour : 16 août 2026</i></small>
</div>
Loading