diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..eace55ce
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,26 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ ci:
+ timeout-minutes: 10
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ - name: Install
+ run: npm ci
+ - name: Check
+ run: npm run check
+ - name: Build
+ if: (${{ success() }} || ${{ failure() }})
+ run: npm run build
diff --git a/astro.config.mjs b/astro.config.mjs
index 50fcb0da..38edbe57 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -4,22 +4,14 @@ import starlight from "@astrojs/starlight";
import remarkHeadingId from "remark-heading-id";
import tailwind from "@astrojs/tailwind";
import liveCode from "astro-live-code";
-import rehypeAstroRelativeMarkdownLinks from "astro-rehype-relative-markdown-links";
import react from "@astrojs/react";
+import starlightLinksValidator from "starlight-links-validator";
// https://astro.build/config
export default defineConfig({
markdown: {
// @ts-expect-error ??????
remarkPlugins: [remarkHeadingId],
- rehypePlugins: [
- [
- rehypeAstroRelativeMarkdownLinks,
- {
- contentPath: "src/content/docs",
- },
- ],
- ],
},
site: "https://docs.solvro.pl",
integrations: [
@@ -29,6 +21,11 @@ export default defineConfig({
},
}),
starlight({
+ plugins: [
+ starlightLinksValidator({
+ exclude: ["http://localhost:4321"],
+ }),
+ ],
defaultLocale: "pl",
locales: {
root: {
diff --git a/package-lock.json b/package-lock.json
index ff8de30c..941c223e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,7 +18,6 @@
"astro": "^4.16.16",
"astro-live-code": "^0.0.4",
"astro-og-canvas": "^0.5.4",
- "astro-rehype-relative-markdown-links": "^0.16.0",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
"react": "^18.3.1",
@@ -26,6 +25,7 @@
"rehype-slug-custom-id": "^2.0.0",
"remark-heading-id": "^1.0.1",
"sharp": "^0.32.5",
+ "starlight-links-validator": "^0.14.1",
"tailwindcss": "^3.4.15",
"typescript": "^5.7.2"
},
@@ -2229,6 +2229,12 @@
"undici-types": "~6.19.8"
}
},
+ "node_modules/@types/picomatch": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-3.0.1.tgz",
+ "integrity": "sha512-1MRgzpzY0hOp9pW/kLRxeQhUWwil6gnrUYd3oEpeYBqp/FexhaCPv3F8LsYr47gtUU45fO2cm1dbwkSrHEo8Uw==",
+ "license": "MIT"
+ },
"node_modules/@types/prop-types": {
"version": "15.7.13",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
@@ -2725,25 +2731,6 @@
"astro": "^3.0.0 || ^4.0.0"
}
},
- "node_modules/astro-rehype-relative-markdown-links": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/astro-rehype-relative-markdown-links/-/astro-rehype-relative-markdown-links-0.16.0.tgz",
- "integrity": "sha512-J6y4LV//jBe+o7IREWpz3r3uljLreWvaFi0WlhW3erLfUVpx3jGhQTYnU54LZDZMHNs234n+1C8wmiEaeHDBaw==",
- "license": "MIT",
- "dependencies": {
- "catch-unknown": "^2.0.0",
- "debug": "^4.3.4",
- "github-slugger": "^2.0.0",
- "gray-matter": "^4.0.3",
- "is-absolute-url": "^4.0.1",
- "unified": "^11.0.4",
- "unist-util-visit": "^5.0.0",
- "zod": "^3.22.4"
- },
- "peerDependencies": {
- "astro": ">=2.x <5"
- }
- },
"node_modules/astro/node_modules/sharp": {
"version": "0.33.5",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
@@ -3135,12 +3122,6 @@
"@webgpu/types": "0.1.21"
}
},
- "node_modules/catch-unknown": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/catch-unknown/-/catch-unknown-2.0.0.tgz",
- "integrity": "sha512-4ELowf+Fp6Qwv77ZvRDto9oJMsOalEk8IYvS5KsmIhRZQWbfArlIhIOONJtmCzOeeqpip6JzYqAYaNR9sIyLVQ==",
- "license": "ISC"
- },
"node_modules/ccount": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
@@ -8531,6 +8512,29 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"license": "BSD-3-Clause"
},
+ "node_modules/starlight-links-validator": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.14.1.tgz",
+ "integrity": "sha512-qd5zMBezFhE3R/RBW2am58jVMK3ydcHs8TqOOBLimjn+iXqWV/ZkLlpcavoIOd//w72cX3L//lN4TA+a7vdaZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/picomatch": "^3.0.1",
+ "github-slugger": "^2.0.0",
+ "hast-util-from-html": "^2.0.3",
+ "hast-util-has-property": "^3.0.0",
+ "is-absolute-url": "^4.0.1",
+ "kleur": "^4.1.5",
+ "mdast-util-to-string": "^4.0.0",
+ "picomatch": "^4.0.2",
+ "unist-util-visit": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18.17.1"
+ },
+ "peerDependencies": {
+ "@astrojs/starlight": ">=0.15.0"
+ }
+ },
"node_modules/stdin-discarder": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
diff --git a/package.json b/package.json
index 543dcaa6..c2ecd559 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,8 @@
"scripts": {
"dev": "astro dev",
"start": "astro dev",
- "build": "astro check && astro build",
+ "check": "astro check",
+ "build": "astro build",
"preview": "astro preview",
"astro": "astro",
"format": "prettier --write .",
@@ -22,7 +23,6 @@
"astro": "^4.16.16",
"astro-live-code": "^0.0.4",
"astro-og-canvas": "^0.5.4",
- "astro-rehype-relative-markdown-links": "^0.16.0",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
"react": "^18.3.1",
@@ -30,6 +30,7 @@
"rehype-slug-custom-id": "^2.0.0",
"remark-heading-id": "^1.0.1",
"sharp": "^0.32.5",
+ "starlight-links-validator": "^0.14.1",
"tailwindcss": "^3.4.15",
"typescript": "^5.7.2"
},
diff --git a/src/content/docs/guides/Adonis.md b/src/content/docs/guides/Adonis.md
index d52de106..763f6e9c 100644
--- a/src/content/docs/guides/Adonis.md
+++ b/src/content/docs/guides/Adonis.md
@@ -18,14 +18,14 @@ description: Szybki start dla tych, którzy chcą poznać Adonisa i tworzyć św
Oto lista najważniejszych rzeczy, które warto w mniejszym lub większym stopniu ogarniać biorąc się za naukę korzystania z Adonisa:
-- **Git i GitHub** - podstawowe narzędzia pracy każdego developera. Z zasadami korzystania stosowanymi w Solvro można zapoznać się w [Handbook GitHub](./Github.md)
+- **Git i GitHub** - podstawowe narzędzia pracy każdego developera. Z zasadami korzystania stosowanymi w Solvro można zapoznać się w [Handbook GitHub](/guides/github)
- **IDE** - środowisko do pracy z kodem. Do najpopularniejszych opcji należy Visual Studio Code i Webstorm od Jetbrains.
- **TypeScript** - jest to podstawowy język wykorzystywany przez Adonisa. Bez jego znajomości ciężko cokolwiek zrobić.
- **NodeJS** - technologia pozwalająca na uruchamianie JS poza przeglądarką. Wykorzystywana do budowania backendu. Zrozumienie działania importów i menadżera pakietów NPM jest potrzebne do sprawnego poruszania się po frameworku.
## Instalacja
-Proces instalacji został szczegółowo przedstawiony [tutaj](https://docs.adonisjs.com/guides/getting-started/installation).
+Proces instalacji został szczegółowo przedstawiony [w dokumentacji adonisa](https://docs.adonisjs.com/guides/getting-started/installation).
### NodeJs
@@ -72,7 +72,7 @@ npm run format
## Deployment
-[Poradnik jak zdeployować apkę Adonisową](./Deployment.mdx)
+[Poradnik jak zdeployować apkę Adonisową](/guides/deployment)
## Rozszerzenia
diff --git "a/src/content/docs/guides/Prowadzenie projekt\303\263w.md" "b/src/content/docs/guides/Prowadzenie projekt\303\263w.md"
index 94fabdc7..4a5748d7 100644
--- "a/src/content/docs/guides/Prowadzenie projekt\303\263w.md"
+++ "b/src/content/docs/guides/Prowadzenie projekt\303\263w.md"
@@ -91,7 +91,7 @@ Lead jest odpowiedzialny za jego utworzenie, odpowiednie skonfigurowanie pól i
Pamiętajmy o jak najbardziej pomocnych opisach zadań najlepiej od razu z linkami/screenami do makiety UI/UX.
-Więcej informacji można znaleźć w [Handbooku Githuba](./Github.md)
+Więcej informacji można znaleźć w [Handbooku Githuba](/guides/github)
### Makiety UI/UX
@@ -150,7 +150,7 @@ Od tego momentu przechodzimy na tzw. produkcję, gdzie reliability musi być zac
Infrastrukturą wdrożenia będzie zajmował się devops i końcowo produkcyjna aplikacja będzie hostowana na innym serwerze niż developerska. Domena aplikacji produkcyjnej jest subdomeną solvro.pl
-Więcej info z deploymentu znajdziesz w [Handbooku Deploymentu](./Deployment.mdx).
+Więcej info z deploymentu znajdziesz w [Handbooku Deploymentu](/guides/deployment).
## Zamknięcie lub dalsza praca
diff --git a/src/content/docs/hello-there.md b/src/content/docs/hello-there.md
index bdf84ea3..c8081aa4 100644
--- a/src/content/docs/hello-there.md
+++ b/src/content/docs/hello-there.md
@@ -45,23 +45,23 @@ Znając [wstępne informacje](#na-początek) o naszej dokumentacji, chcielibyśm
Ogólne informacje:
-- [Zapoznaj się z naszą strategią](./solvro/strategy/)
-- [Kanały komunikacji](./guides/Communication%20Channels.md)
-- [Jak używać GitHuba?](./guides/Github.md)
-- [Jak prowadzimy projekty? Czego się spodziewać?](./guides/Prowadzenie%20projektów.md)
+- [Zapoznaj się z naszą strategią](/solvro/strategy)
+- [Kanały komunikacji](/guides/communication-channels)
+- [Jak używać GitHuba?](/guides/github/)
+- [Jak prowadzimy projekty? Czego się spodziewać?](/guides/prowadzenie-projektów)
- [Poznaj nasz zarząd](/solvro/vii_board)
Poradniki technologiczne:
-- [Web](./guides/Web%20Development/index.mdx)
-- [Mobile](./guides/Flutter%20(Mobile)/index.md)
+- [Web](/guides/web-development/)
+- [Mobile](/guides/flutter-mobile/)
### Dla starych wyjadaczy
Oprócz materiałów dla nowych członków, warto zapoznać się z:
-- [Jak prowadzić projekt?](./guides/Prowadzenie%20projektów.md)
-- [Deploy Guide](./guides/Deployment.mdx)
+- [Jak prowadzić projekt?](/guides/prowadzenie-projektów/)
+- [Deploy Guide](/guides/deployment/)
---
diff --git a/src/content/docs/how-to-write-docs.mdx b/src/content/docs/how-to-write-docs.mdx
index cd794f91..d50013d3 100644
--- a/src/content/docs/how-to-write-docs.mdx
+++ b/src/content/docs/how-to-write-docs.mdx
@@ -114,7 +114,7 @@ Ewentualnie można użyć jakiegoś onlineowego edytora markdowna, np. https://s
Tutaj są wszystkie tricki, które można tutaj robić: https://starlight.astro.build/guides/authoring-content/
:::tip
-Można coś takiego!
+Można coś takiego!
:::
> Albo coś takiego
diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx
index 20a85f59..86ff1616 100644
--- a/src/content/docs/index.mdx
+++ b/src/content/docs/index.mdx
@@ -28,7 +28,7 @@ _A więc zawitałeś do naszych skromnych progów i nie wiesz, co dalej? W tym d
[Ważne zmiany 4](#ważne-zmiany)
-[Jak jest obecnie 4](#jak-jest-obecnie?)
+[Jak jest obecnie 4](#jak-jest-obecnie)
[**Pierwsze kroki 5**](#pierwsze-kroki)
@@ -153,7 +153,7 @@ Oprócz spotkań weekly całego koła odbywają się cykliczne spotkania projekt
Po restrukturyzacji kierujemy się w stronę GiTHuba. Chcemy, aby był on sercem naszej organizacji, gdzie przepływa cała praca operacyjna i kod. Tam również prowadzone są projekty od strony operacyjnej, rozpisywane zadania itd. Końcowo będąc studenckim kołem chcemy chwalić się naszymi projektami i w tym właśnie celu projekty koła, które na to pozwalają będą realizowane jako open-source. Pozwoli to uhonorować członków projektu i potwierdzić swoje doświadczenie przy szukaniu pracy. Z tego również powodu dbamy o dobre praktyki pisania kodu i pracowania z githubem (PR, jednolite commity, readme itd.). Dla początkujących na naszym blogu znajduje się post [Podstawy GITa](https://solvro.pwr.edu.pl/blog/solvro-talks-1-podstawy-gita).
-Must-have lekturą jest również [Handbook Githuba](./guides/Github.md)
+Must-have lekturą jest również [Handbook Githuba](/guides/github)
# Projekty
@@ -161,7 +161,7 @@ Must-have lekturą jest również [Handbook Githuba](./guides/Github.md)
KN Solvro łączy w sobie zwinne techniki startupowe oraz solidne podejście naukowe. Oznacza to, że chcemy sprawnie realizować projekty i dążymy do jak najszybszego wypuszczenia MVP (Minimal Viable Product), ale z zachowaniem dobrych praktyk i dokumentacji projektowej.
-Dokładnie jak przeprowadzić projekt w Solvro można się dowiedzieć z pomocą[Handbook prowadzenia projektów](./guides/Prowadzenie%20projektów.md)
+Dokładnie jak przeprowadzić projekt w Solvro można się dowiedzieć z pomocą[Handbook prowadzenia projektów](/guides/prowadzenie-projektów/)
## Czas wskoczyć w projekt
diff --git a/src/content/docs/solvro/VII_Board.mdx b/src/content/docs/solvro/VII_Board.mdx
index ff0242dc..94442b21 100644
--- a/src/content/docs/solvro/VII_Board.mdx
+++ b/src/content/docs/solvro/VII_Board.mdx
@@ -19,12 +19,12 @@ import {
Łącząc w sobie pasję do informatyki i zarządzania podczas wiosennych wyborów został wybrany Prezesem VII Zarządu. Fan Laravela, ale jest również obyty z innymi technologiami. Lubi gotowanie, narty i dokumentację :)
- 
+ 
Wiceprezes VII Zarządu. W Solvro przewodzi sekcją Mobile i zaraża innych pasją do Fluttera, choć nie jest to jedyna technologia na jego tech stacku. Trenuje wioślarstwo i robienie code review na czas.
- 
+ 
Przed objęciem funkcji Wiceprezeski VII Zarządu pełniła rolę Przewodniczącej Młodzieżowej Rady Miejskiej, a także uzyskała stypendium dla Dziewczyn w STEM. Obecnie rozwija się w obszarze Machine Learning. Lubi quizy i teleturniej Jeden z Dziesięciu.
- 
+ 
@@ -32,7 +32,7 @@ import {
Ze strategii KN Solvro wyznaczyliśmy następujące cele taktyczne: