initial commit
This commit is contained in:
parent
9c5f9a3c17
commit
3163cb1b96
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
.idea/
|
||||
|
||||
# build output
|
||||
dist/
|
||||
# generated types
|
||||
|
21
Dockerfile
Normal file
21
Dockerfile
Normal file
@ -0,0 +1,21 @@
|
||||
FROM node:22-alpine AS build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN yarn
|
||||
|
||||
RUN yarn build
|
||||
|
||||
FROM nginx:alpine AS runtime
|
||||
|
||||
RUN rm /etc/nginx/conf.d/default.conf
|
||||
|
||||
COPY nginx.conf /etc/nginx/conf.d
|
||||
COPY --from=build /app/dist /usr/share/nginx/html
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
# Start Nginx
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
@ -1,28 +1,30 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from 'astro/config';
|
||||
import starlight from '@astrojs/starlight';
|
||||
import sidebarFr from './src/sidebars/fr/sidebar';
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
trailingSlash: 'always',
|
||||
integrations: [
|
||||
starlight({
|
||||
title: 'My Docs',
|
||||
social: {
|
||||
github: 'https://github.com/withastro/starlight',
|
||||
title: 'Open Source Québec',
|
||||
defaultLocale: 'fr',
|
||||
locales: {
|
||||
fr: {
|
||||
label: 'Français'
|
||||
}
|
||||
},
|
||||
sidebar: [
|
||||
{
|
||||
label: 'Guides',
|
||||
items: [
|
||||
// Each item here is one entry in the navigation menu.
|
||||
{ label: 'Example Guide', slug: 'guides/example' },
|
||||
],
|
||||
social: { // todo: implement gitea social
|
||||
github: 'https://git.quebec',
|
||||
},
|
||||
{
|
||||
label: 'Reference',
|
||||
autogenerate: { directory: 'reference' },
|
||||
},
|
||||
],
|
||||
sidebar: sidebarFr
|
||||
}),
|
||||
],
|
||||
redirects: {
|
||||
'/': {
|
||||
status: 302, // Temporary redirect
|
||||
destination: '/fr/',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
15
nginx.conf
Normal file
15
nginx.conf
Normal file
@ -0,0 +1,15 @@
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
server_name _;
|
||||
|
||||
root /usr/share/nginx/html;
|
||||
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
error_page 404 /index.html;
|
||||
}
|
@ -13,5 +13,6 @@
|
||||
"@astrojs/starlight": "^0.30.3",
|
||||
"astro": "^5.0.2",
|
||||
"sharp": "^0.32.5"
|
||||
}
|
||||
},
|
||||
"packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
|
||||
}
|
148
src/content/components/KeywordDoc.astro
Normal file
148
src/content/components/KeywordDoc.astro
Normal file
@ -0,0 +1,148 @@
|
||||
---
|
||||
const { keyword } = Astro.props;
|
||||
---
|
||||
|
||||
<keyword-doc class="keyword">
|
||||
{keyword}
|
||||
</keyword-doc>
|
||||
|
||||
<keyword-doc-popup class="keyword-doc">
|
||||
<slot />
|
||||
</keyword-doc-popup>
|
||||
|
||||
<style>
|
||||
.keyword-doc {
|
||||
display: none;
|
||||
background: white;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.keyword {
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
text-decoration-style: dotted;
|
||||
}
|
||||
|
||||
.keyword:hover {
|
||||
font-style: italic;
|
||||
color: hsla(0, 100%, 100%, 0.8);
|
||||
text-decoration-color: hsla(0, 100%, 100%, 0.8);
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
class KeywordDoc extends HTMLElement {
|
||||
tooltip: KeywordDocPopup | null = null;
|
||||
shortcutPressed: boolean = false;
|
||||
mouseLeft: boolean = false;
|
||||
|
||||
connectedCallback() {
|
||||
this.addEventListener('mouseenter', this.onMouseEnter);
|
||||
this.addEventListener('mouseleave', this.onMouseLeave);
|
||||
|
||||
document.addEventListener('keydown', this.onKeyDown.bind(this));
|
||||
document.addEventListener('keyup', this.onKeyUp.bind(this));
|
||||
|
||||
this.tooltip = this.nextElementSibling as any;
|
||||
}
|
||||
|
||||
disconnectedCallback() {
|
||||
this.removeEventListener('mouseenter', this.onMouseEnter);
|
||||
this.removeEventListener('mouseleave', this.onMouseLeave);
|
||||
|
||||
document.removeEventListener('keydown', this.onKeyDown.bind(this));
|
||||
document.removeEventListener('keyup', this.onKeyUp.bind(this));
|
||||
}
|
||||
|
||||
onKeyDown(event: KeyboardEvent) {
|
||||
this.shortcutPressed = event.altKey;
|
||||
}
|
||||
|
||||
onKeyUp(event: KeyboardEvent) {
|
||||
if (event.key === 'Alt') {
|
||||
this.shortcutPressed = false;
|
||||
|
||||
if (null !== this.tooltip && this.mouseLeft)
|
||||
this.tooltip.hide();
|
||||
}
|
||||
}
|
||||
|
||||
onMouseLeave() {
|
||||
console.log('mouse leave!');
|
||||
if (null === this.tooltip)
|
||||
return;
|
||||
|
||||
this.mouseLeft = true;
|
||||
|
||||
if (this.shortcutPressed)
|
||||
return;
|
||||
|
||||
this.tooltip.hide();
|
||||
}
|
||||
|
||||
onMouseEnter(ev: any) {
|
||||
if (null === this.tooltip)
|
||||
return;
|
||||
|
||||
this.mouseLeft = false;
|
||||
|
||||
|
||||
const rect = this.getBoundingClientRect();
|
||||
const tooltipRect = this.tooltip.getBoundingClientRect();
|
||||
const viewportWidth = window.innerWidth;
|
||||
const viewportHeight = window.innerHeight;
|
||||
|
||||
// Position the tooltip
|
||||
const offset = 5;
|
||||
let top = rect.bottom + offset; // Default: below the element
|
||||
let left = rect.left + (rect.width - tooltipRect.width) / 2;
|
||||
|
||||
if (top + tooltipRect.height > viewportHeight) {
|
||||
top = rect.top - tooltipRect.height - offset; // Move above if space below is insufficient
|
||||
}
|
||||
if (left < 0) {
|
||||
left = offset; // Prevent overflow on the left
|
||||
}
|
||||
if (left + tooltipRect.width > viewportWidth) {
|
||||
left = viewportWidth - tooltipRect.width + offset; // Prevent overflow on the right
|
||||
}
|
||||
|
||||
this.tooltip.style.top = `${top}px`;
|
||||
this.tooltip.style.left = `${left}px`;
|
||||
|
||||
this.tooltip.show();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class KeywordDocPopup extends HTMLElement {
|
||||
visible = false;
|
||||
|
||||
connectedCallback() {
|
||||
}
|
||||
|
||||
disconnectedCallback() {
|
||||
}
|
||||
|
||||
show() {
|
||||
if (this.visible)
|
||||
return;
|
||||
|
||||
this.visible = true;
|
||||
|
||||
this.style.display = 'block';
|
||||
}
|
||||
|
||||
hide() {
|
||||
if (false === this.visible)
|
||||
return;
|
||||
|
||||
this.visible = false;
|
||||
|
||||
this.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define('keyword-doc', KeywordDoc);
|
||||
customElements.define('keyword-doc-popup', KeywordDocPopup);
|
||||
</script>
|
12
src/content/docs/404.mdx
Normal file
12
src/content/docs/404.mdx
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
title: Oh Oh!
|
||||
template: splash
|
||||
editUrl: false
|
||||
hero:
|
||||
title: 'Oh Oh!'
|
||||
tagline: Cette documentation n'est pas disponible en français.
|
||||
actions:
|
||||
- text: Retourner à l'index
|
||||
link: /fr/welcome/
|
||||
icon: right-arrow
|
||||
---
|
15
src/content/docs/fr/git/accessing-the-service.mdx
Normal file
15
src/content/docs/fr/git/accessing-the-service.mdx
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Accéder au service
|
||||
description: Git - Accéder au service Git Québec
|
||||
tableOfContents: false
|
||||
lastUpdated: 2024-12-26
|
||||
draft: false
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
## Enregistrement sur demande
|
||||
|
||||
Les services de Git Québec sont gratuits pour les projets open source. La plateforme est actuellement en phase préliminaire de développement, et vous devrez remplir un formulaire d'accès pour demander l'accès à la plateforme. Cette décision a été prise en raison des problèmes croissants observés sur GitHub et d'autres grandes plateformes Git-as-a-Service, qui sont souvent ciblées par des bots pour de la publicité ou des actes malveillants. En utilisant notre plateforme, vous acceptez de ne pas causer de préjudices et de travailler avec respect envers les autres membres. Votre compte peut être résilié si vous abusez de notre plateforme ou de ses utilisateurs.
|
||||
|
||||
<Aside type="danger">La plateforme n’est pas encore officiellement ouverte. Le formulaire d’inscription ne sera pas disponible pour le moment. Veuillez vous inscrire à la lettre d’information pour recevoir les dernières nouvelles.</Aside>
|
44
src/content/docs/fr/git/what-is-git.mdx
Normal file
44
src/content/docs/fr/git/what-is-git.mdx
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Qu'est-ce que Git ?
|
||||
description: Git - Qu'est-ce que Git ?
|
||||
lastUpdated: 2024-12-26
|
||||
draft: false
|
||||
---
|
||||
|
||||
import KeywordDoc from '../../../components/KeywordDoc.astro';
|
||||
|
||||
**Git** est un système de gestion de versions distribué (DVCS) qui permet de suivre les modifications apportées à des fichiers et de coordonner le travail entre plusieurs personnes. Il est largement utilisé dans le développement logiciel pour gérer le code source, mais il peut également être utilisé pour tout type de projet nécessitant un suivi de version.
|
||||
|
||||
## Principales fonctionnalités de Git
|
||||
|
||||
1. **Gestion de versions** :
|
||||
Git enregistre chaque modification apportée aux fichiers sous forme de *commit*. Cela permet de revenir à une version précédente en cas de besoin.
|
||||
|
||||
2. **Système distribué** :
|
||||
Contrairement aux systèmes centralisés, chaque utilisateur possède une copie complète du dépôt (repository). Cela permet de travailler hors ligne et de synchroniser les modifications ultérieurement.
|
||||
|
||||
3. **Branches** :
|
||||
Git facilite la création et la gestion de branches, qui permettent de travailler sur des fonctionnalités ou des correctifs en parallèle sans affecter la branche principale (souvent appelée `main` ou `master`).
|
||||
|
||||
4. **Fusion (Merge)** :
|
||||
Une fois qu'une branche est prête, elle peut être fusionnée avec une autre branche pour intégrer les modifications.
|
||||
|
||||
5. **Collaboration** :
|
||||
Git permet à plusieurs développeurs de collaborer sur le même projet, quelle que soit sa taille ou sa complexité.
|
||||
|
||||
## Pourquoi utiliser Git ?
|
||||
|
||||
- **Historique des modifications** :
|
||||
Git conserve un enregistrement complet de chaque modification, avec des métadonnées telles que l'auteur, la date et le message associé.
|
||||
|
||||
- **Travail collaboratif** :
|
||||
Grâce aux branches les équipes peuvent travailler de manière organisée.
|
||||
|
||||
- **Résolution des conflits** :
|
||||
L’outil vous permet de résoudre des conflits entre plusieurs versions du même fichier afin d’arriver à une résolution finale.
|
||||
|
||||
- **Performance** :
|
||||
Git est conçu pour être rapide, même pour de très grands projets.
|
||||
|
||||
- **Sécurité** :
|
||||
Profitez d'une tranquillité d'esprit grâce à la validation de la provenance du code avec les signatures des commits. Lorsque ces techniques sont bien appliquées, un compte d’utilisateur compromis sur la plateforme ne pourra pas prouver que le code soumis appartient au propriétaire du compte.
|
40
src/content/docs/fr/index.mdx
Normal file
40
src/content/docs/fr/index.mdx
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
title: Bienvenue sur Open Source Québec
|
||||
description: Open Source Québec
|
||||
template: splash
|
||||
hero:
|
||||
image:
|
||||
file: ../../../assets/houston.webp
|
||||
actions:
|
||||
- text: Documentation Publique
|
||||
link: welcome/
|
||||
icon: right-arrow
|
||||
- text: Service Git
|
||||
variant: secondary
|
||||
link: https://git.quebec
|
||||
icon: external
|
||||
---
|
||||
|
||||
import { Card, CardGrid, LinkButton } from '@astrojs/starlight/components';
|
||||
|
||||
<CardGrid stagger>
|
||||
<Card title="Open Source" icon="github">
|
||||
Un projet québécois, mais ouvert à l’international, axé sur la documentation, les projets et les déploiements, incluant notre infrastructure open source!
|
||||
</Card>
|
||||
<Card title="Documentation" icon="open-book">
|
||||
Vous souhaitez apprendre et utiliser les bonnes pratiques modernes en développement informatique? Tout est disponible en quelques clics!
|
||||
</Card>
|
||||
<Card title="Communauté" icon="comment">
|
||||
La communication est la clé pour l’avancement communautaire. Vous pouvez participer gratuitement en demandant de l'aide, en contribuant à la documentation ou en partageant votre code de manière ouverte!
|
||||
</Card>
|
||||
<Card title="Git" icon="github">
|
||||
Un service Git gratuit pour les projets open source avec des services payants optionnels pour soutenir l'infrastructure.
|
||||
<LinkButton
|
||||
href="https://git.quebec"
|
||||
variant="secondary"
|
||||
icon="external"
|
||||
iconPlacement="end">
|
||||
Service Git
|
||||
</LinkButton>
|
||||
</Card>
|
||||
</CardGrid>
|
39
src/content/docs/fr/welcome.mdx
Normal file
39
src/content/docs/fr/welcome.mdx
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
title: Bienvenue!
|
||||
description: Bienvenue!
|
||||
lastUpdated: 2024-12-26
|
||||
draft: false
|
||||
sidebar:
|
||||
label: Bienvenue
|
||||
---
|
||||
|
||||
import { Aside } from '@astrojs/starlight/components';
|
||||
|
||||
**Open Source Quebec** est une plateforme conçue par des Québécois, mais pensée pour un public international. Nous croyons en la puissance de l'open source pour transformer la manière dont les projets modernes et sécurisés sont développés. Notre mission est de créer une communauté dynamique et collaborative pour partager les ressources, les connaissances et les meilleures pratiques.
|
||||
|
||||
## Ce que nous offrons
|
||||
|
||||
### Guides et Ressources
|
||||
Nous proposons des **guides pratiques** créés par l'équipe d'Open Source Quebec et enrichis par notre communauté. Ces guides couvrent une variété de sujets essentiels pour les développeurs, les gestionnaires de projets et les entreprises.
|
||||
|
||||
### Plateforme de Discussion
|
||||
Notre plateforme favorise l'échange et la collaboration. Les membres peuvent poser des questions, partager leurs idées et apprendre les uns des autres, tout en participant à une communauté active et engagée.
|
||||
|
||||
### Git-as-a-Service
|
||||
Nous offrons une **plateforme Git gratuite** dédiée aux projets open source. Les utilisateurs peuvent héberger leurs dépôts, collaborer sur des projets et contribuer au développement de logiciels ouverts.
|
||||
|
||||
### Services Premium
|
||||
Pour garantir la pérennité de la plateforme et répondre aux besoins avancés, nous proposerons prochainement des services payants, tels que :
|
||||
- **Dépôts privés** pour vos projets confidentiels.
|
||||
- **Sauvegardes personnalisées et chiffrées** pour protéger vos données.
|
||||
- **Agents de pipelines gérés** pour simplifier l'automatisation et la livraison continue.
|
||||
|
||||
## Notre vision
|
||||
|
||||
Open Source Quebec n'est pas seulement une plateforme technique. C'est une **initiative communautaire** visant à renforcer les ressources et les outils disponibles pour les développeurs, qu'ils soient débutants ou experts. Nous voulons aider les individus et les entreprises à développer des projets **modernes, sécurisés et durables**.
|
||||
|
||||
En participant à Open Source Quebec, vous rejoignez un mouvement mondial où l'innovation, le partage et la collaboration sont au cœur du succès.
|
||||
|
||||
<Aside type="note">
|
||||
Découvrez nos guides, engagez la discussion et explorez les possibilités de Git-as-a-Service dès aujourd'hui. Ensemble, construisons un futur technologique meilleur.
|
||||
</Aside>
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
title: Example Guide
|
||||
description: A guide in my new Starlight docs site.
|
||||
---
|
||||
|
||||
Guides lead a user through a specific task they want to accomplish, often with a sequence of steps.
|
||||
Writing a good guide requires thinking about what your users are trying to do.
|
||||
|
||||
## Further reading
|
||||
|
||||
- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework
|
@ -1,36 +0,0 @@
|
||||
---
|
||||
title: Welcome to Starlight
|
||||
description: Get started building your docs site with Starlight.
|
||||
template: splash
|
||||
hero:
|
||||
tagline: Congrats on setting up a new Starlight project!
|
||||
image:
|
||||
file: ../../assets/houston.webp
|
||||
actions:
|
||||
- text: Example Guide
|
||||
link: /guides/example/
|
||||
icon: right-arrow
|
||||
- text: Read the Starlight docs
|
||||
link: https://starlight.astro.build
|
||||
icon: external
|
||||
variant: minimal
|
||||
---
|
||||
|
||||
import { Card, CardGrid } from '@astrojs/starlight/components';
|
||||
|
||||
## Next steps
|
||||
|
||||
<CardGrid stagger>
|
||||
<Card title="Update content" icon="pencil">
|
||||
Edit `src/content/docs/index.mdx` to see this page change.
|
||||
</Card>
|
||||
<Card title="Add new content" icon="add-document">
|
||||
Add Markdown or MDX files to `src/content/docs` to create new pages.
|
||||
</Card>
|
||||
<Card title="Configure your site" icon="setting">
|
||||
Edit your `sidebar` and other config in `astro.config.mjs`.
|
||||
</Card>
|
||||
<Card title="Read the docs" icon="open-book">
|
||||
Learn more in [the Starlight Docs](https://starlight.astro.build/).
|
||||
</Card>
|
||||
</CardGrid>
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
title: Example Reference
|
||||
description: A reference page in my new Starlight docs site.
|
||||
---
|
||||
|
||||
Reference pages are ideal for outlining how things work in terse and clear terms.
|
||||
Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what you're documenting.
|
||||
|
||||
## Further reading
|
||||
|
||||
- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework
|
23
src/sidebars/fr/sidebar.ts
Normal file
23
src/sidebars/fr/sidebar.ts
Normal file
@ -0,0 +1,23 @@
|
||||
const sidebarFr = [
|
||||
{
|
||||
slug: 'welcome'
|
||||
},
|
||||
{
|
||||
label: 'Guides',
|
||||
items: [
|
||||
{
|
||||
label: 'Git',
|
||||
items: [
|
||||
{
|
||||
slug: 'git/what-is-git',
|
||||
},
|
||||
{
|
||||
slug: 'git/accessing-the-service'
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default sidebarFr;
|
Loading…
Reference in New Issue
Block a user