initial commit

This commit is contained in:
Mathias Beaulieu-Duncan 2024-12-27 02:06:36 -05:00
parent 9c5f9a3c17
commit 3163cb1b96
Signed by: mathias
GPG Key ID: 8C3667DADE3B6303
15 changed files with 380 additions and 76 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
.idea/
# build output
dist/
# generated types

21
Dockerfile Normal file
View 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;"]

View File

@ -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' },
],
},
{
label: 'Reference',
autogenerate: { directory: 'reference' },
},
],
social: { // todo: implement gitea social
github: 'https://git.quebec',
},
sidebar: sidebarFr
}),
],
redirects: {
'/': {
status: 302, // Temporary redirect
destination: '/fr/',
},
},
});

15
nginx.conf Normal file
View 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;
}

View File

@ -13,5 +13,6 @@
"@astrojs/starlight": "^0.30.3",
"astro": "^5.0.2",
"sharp": "^0.32.5"
}
},
"packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
}

View 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
View 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
---

View 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 nest pas encore officiellement ouverte. Le formulaire dinscription ne sera pas disponible pour le moment. Veuillez vous inscrire à la lettre dinformation pour recevoir les dernières nouvelles.</Aside>

View 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** :
Loutil vous permet de résoudre des conflits entre plusieurs versions du même fichier afin darriver à 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 dutilisateur compromis sur la plateforme ne pourra pas prouver que le code soumis appartient au propriétaire du compte.

View 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 à linternational, 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 lavancement 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>

View 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>

View File

@ -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

View File

@ -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>

View File

@ -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

View 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;