From 70ccf24c6bf08c4de2fe2ba2fa1e21053c82706b Mon Sep 17 00:00:00 2001 From: Antonio De Lucreziis Date: Thu, 29 Feb 2024 11:07:07 +0100 Subject: [PATCH] add: folder structure for markdown content pages --- astro.config.mjs | 30 ++++++---- package.json | 63 ++++++++++---------- src/content/config.ts | 45 ++++++++++++++ src/content/guides/2024-02-29-git-101.md | 75 ++++++++++++++++++++++++ src/content/posts/.keep | 0 src/content/seminarietti/.keep | 0 src/env.d.ts | 1 + src/layouts/BaseLayout.astro | 4 +- src/pages/guides/[...slug].astro | 23 ++++++++ tsconfig.json | 4 +- 10 files changed, 198 insertions(+), 47 deletions(-) create mode 100644 src/content/config.ts create mode 100644 src/content/guides/2024-02-29-git-101.md create mode 100644 src/content/posts/.keep create mode 100644 src/content/seminarietti/.keep create mode 100644 src/pages/guides/[...slug].astro diff --git a/astro.config.mjs b/astro.config.mjs index 200fb4c..8bdd4bf 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,17 +1,21 @@ -import { defineConfig } from 'astro/config'; -import preact from "@astrojs/preact"; +import { defineConfig } from 'astro/config' +import preact from '@astrojs/preact' -import node from "@astrojs/node"; +import node from '@astrojs/node' // https://astro.build/config export default defineConfig({ - output: "hybrid", - outDir: "out/astro", - server: { - port: 3000 - }, - integrations: [preact()], - adapter: node({ - mode: "standalone" - }) -}); \ No newline at end of file + output: 'hybrid', + outDir: './out/astro', + build: { + client: './out/astro/client', + server: './out/astro/server', + }, + server: { + port: 3000, + }, + integrations: [preact()], + adapter: node({ + mode: 'standalone', + }), +}) diff --git a/package.json b/package.json index df0b4f6..0efb553 100644 --- a/package.json +++ b/package.json @@ -1,33 +1,34 @@ { - "name": "website", - "type": "module", - "version": "0.0.1", - "scripts": { - "dev": "run-s drizzle:* astro:dev", - "build": "run-s drizzle:generate astro:build", - "astro:dev": "astro dev", - "astro:build": "astro check && astro build", - "drizzle:generate": "drizzle-kit generate:sqlite", - "drizzle:migrate": "tsx src/db/migrate.ts" - }, - "dependencies": { - "@astrojs/check": "^0.5.6", - "@astrojs/node": "^8.2.1", - "@astrojs/preact": "^3.1.1", - "@fontsource/open-sans": "^5.0.24", - "@fontsource/source-code-pro": "^5.0.16", - "@fontsource/source-sans-pro": "^5.0.8", - "astro": "^4.4.6", - "better-sqlite3": "^9.4.3", - "drizzle-orm": "^0.29.4", - "preact": "^10.19.6", - "typescript": "^5.3.3" - }, - "devDependencies": { - "@types/better-sqlite3": "^7.6.9", - "drizzle-kit": "^0.20.14", - "npm-run-all": "^4.1.5", - "sass": "^1.71.1", - "tsx": "^4.7.1" - } + "name": "website", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "run-s astro:sync drizzle:* astro:dev", + "build": "run-s drizzle:generate astro:build", + "astro:sync": "astro sync", + "astro:dev": "astro dev", + "astro:build": "astro check && astro build", + "drizzle:generate": "drizzle-kit generate:sqlite", + "drizzle:migrate": "tsx src/db/migrate.ts" + }, + "dependencies": { + "@astrojs/check": "^0.5.6", + "@astrojs/node": "^8.2.1", + "@astrojs/preact": "^3.1.1", + "@fontsource/open-sans": "^5.0.24", + "@fontsource/source-code-pro": "^5.0.16", + "@fontsource/source-sans-pro": "^5.0.8", + "astro": "^4.4.6", + "better-sqlite3": "^9.4.3", + "drizzle-orm": "^0.29.4", + "preact": "^10.19.6", + "typescript": "^5.3.3" + }, + "devDependencies": { + "@types/better-sqlite3": "^7.6.9", + "drizzle-kit": "^0.20.14", + "npm-run-all": "^4.1.5", + "sass": "^1.71.1", + "tsx": "^4.7.1" + } } diff --git a/src/content/config.ts b/src/content/config.ts new file mode 100644 index 0000000..bd61ade --- /dev/null +++ b/src/content/config.ts @@ -0,0 +1,45 @@ +import { z, defineCollection } from 'astro:content' + +const postsCollection = defineCollection({ + type: 'content', + schema: z.object({ + title: z.string(), + description: z.string(), + author: z.string(), + publishDate: z.date(), + image: z + .object({ + url: z.string(), + alt: z.string(), + }) + .optional(), + tags: z.array(z.string()), + }), +}) + +const guidesCollection = defineCollection({ + type: 'content', + schema: z.object({ + title: z.string(), + description: z.string(), + series: z.string().optional(), + }), +}) + +const seminariettiCollection = defineCollection({ + type: 'content', + schema: z.object({ + title: z.string(), + description: z.string(), + author: z.string(), + publishDate: z.date(), + eventDate: z.date(), + }), +}) + +// Export a single `collections` object to register your collection(s) +export const collections = { + posts: postsCollection, + guides: guidesCollection, + seminarietti: seminariettiCollection, +} diff --git a/src/content/guides/2024-02-29-git-101.md b/src/content/guides/2024-02-29-git-101.md new file mode 100644 index 0000000..4cb961c --- /dev/null +++ b/src/content/guides/2024-02-29-git-101.md @@ -0,0 +1,75 @@ +--- +title: Git 101 +description: Una guida introduttiva alle basi di Git +author: Copilot +series: git +--- + +# Git 101 (Guida di esempio) + +Benvenuto alla guida introduttiva alle basi di Git. In questa guida imparerai come iniziare a usare Git per il controllo di versione dei tuoi progetti. + +## Cos'è Git? + +Git è un sistema di controllo di versione distribuito. Questo significa che puoi tenere traccia delle modifiche ai tuoi file e sincronizzarle con altri membri del tuo team. + +## Installazione + +Per iniziare ad usare Git, devi prima installarlo sul tuo computer. Puoi scaricare l'ultima versione di Git dal [sito ufficiale](https://git-scm.com/). + +## Inizializzazione di un repository + +Una volta installato Git, puoi inizializzare un nuovo repository in una cartella esistente. Apri il terminale e spostati nella cartella del tuo progetto. Quindi esegui il seguente comando: + +```bash +git init +``` + +Questo creerà un nuovo repository Git nella cartella del tuo progetto. + +## Aggiunta di file + +Ora che hai inizializzato il repository, puoi iniziare ad aggiungere file ad esso. Per aggiungere un file, esegui il seguente comando: + +```bash +git add +``` + +Sostituisci `` con il nome del file che vuoi aggiungere. + +## Commit delle modifiche + +Una volta aggiunti i file, puoi fare un commit delle modifiche. Questo salverà le modifiche nel repository. Per fare un commit, esegui il seguente comando: + +```bash +git commit -m "Messaggio del commit" +``` + +Sostituisci `"Messaggio del commit"` con un messaggio che descrive le modifiche che hai fatto. + +## Sincronizzazione con un repository remoto + +Ora che hai fatto un commit delle modifiche, puoi sincronizzare il repository con un repository remoto. Questo ti permetterà di condividere le tue modifiche con altri membri del tuo team. Per sincronizzare il repository con un repository remoto, esegui il seguente comando: + +```bash +git remote add origin +git push -u origin main +``` + +L'opzione `-u` imposta il repository remoto come repository predefinito per il ramo main, in modo che tu possa semplicemente eseguire `git push` in futuro per sincronizzare le tue modifiche con il repository remoto. + +Sostituisci `` con l'URL del repository remoto. Questo ti chiederà di inserire le tue credenziali per il repository remoto. Una volta fatto, le tue modifiche saranno sincronizzate con il repository remoto. + +## Aggiornamento del repository + +Una volta che il repository è sincronizzato con un repository remoto, puoi aggiornare il repository con le modifiche degli altri membri del tuo team. Per aggiornare il repository, esegui il seguente comando: + +```bash +git pull +``` + +Questo aggiornerà il repository con le modifiche degli altri membri del tuo team. + +## Conclusioni + +Questo è solo un'introduzione alle basi di Git. Ci sono molte altre funzionalità che puoi esplorare, ma queste sono le basi per iniziare. Buon divertimento! diff --git a/src/content/posts/.keep b/src/content/posts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/src/content/seminarietti/.keep b/src/content/seminarietti/.keep new file mode 100644 index 0000000..e69de29 diff --git a/src/env.d.ts b/src/env.d.ts index f964fe0..acef35f 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -1 +1,2 @@ +/// /// diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index 4286302..618fbcf 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -8,7 +8,7 @@ import '../styles/main.scss' const { title, description, thumbnail, pageName } = Astro.props --- - + @@ -22,7 +22,7 @@ const { title, description, thumbnail, pageName } = Astro.props {title} - + diff --git a/src/pages/guides/[...slug].astro b/src/pages/guides/[...slug].astro new file mode 100644 index 0000000..85cff4b --- /dev/null +++ b/src/pages/guides/[...slug].astro @@ -0,0 +1,23 @@ +--- +import { getCollection } from 'astro:content' + +import PageLayout from '../../layouts/PageLayout.astro' + +export async function getStaticPaths() { + const blogEntries = await getCollection('guides') + return blogEntries.map(entry => ({ + params: { slug: entry.slug }, + props: { entry }, + })) +} + +const { entry } = Astro.props +const { Content } = await entry.render() +--- + +

{entry.data.title}

+{entry.data.series &&

{entry.data.series}

} + + + + diff --git a/tsconfig.json b/tsconfig.json index 560c357..e0d8fe0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,8 @@ "extends": "astro/tsconfigs/strict", "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "preact" + "jsxImportSource": "preact", + "strictNullChecks": true, + "allowJs": true } }