adding info from telegram group

This commit is contained in:
Davide Scaini
2026-05-06 14:27:49 +02:00
parent d3423be6a7
commit f8a624f253
3 changed files with 105 additions and 47 deletions
+27 -16
View File
@@ -3,28 +3,39 @@ title: Bincio Wiki
--- ---
- [[BincioTech]] - [[BincioTech]]
- Gear e accessori - [[scelta-bici]]
- Componenti e upgrade - [[carbonio-vs-alluminio]]
- Tecnologia e elettronica - [[marchi-e-brand]]
- [[ruote-e-cerchi]]
- [[trasmissione-e-catena]]
- [[copertoni-tubeless]]
- [[attrezzatura-gravel]]
- [[accessori-gadget]]
- [[gps-e-ciclocomputer]]
- [[app-e-servizi]]
- [[trasmissioni-tv]]
- [[film-podcast]]
- [[BincioActivity]] - [[BincioActivity]]
- [[BincioOfficina]] - [[BincioOfficina]]
- Manutenzione - [[freni-a-disco]]
- Riparazioni - [[manutenzione-cambio]]
- Fai da te - [[meccanica-base]]
- [[BincioTour]] - [[BincioTour]]
- Tour report - [[strade-e-percorsi]]
- Bike packing - [[bikepacking]]
- Rotte e itinerari - [[commuting]]
- Logistica - [[uscite-bincio]]
- [[regolamentazioni]]
- [[mercato-usato]]
- [[BincioCorsa]] - [[BincioCorsa]]
- Allenamento
- Gare e competizioni
- Performance
- [[BincioAbbigliamento]] - [[BincioAbbigliamento]]
- Abbigliamento tecnico
- Comfort e protezione - Documentazione
- Stagionalità - [[come-funziona-il-giardino]]
- [[come-usare-le-categorie]]
- [[markdown]]
- [[wikirefs]]
+49 -12
View File
@@ -3,34 +3,71 @@ import Base from '../../layouts/Base.astro';
import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts'; import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts';
import { getCollection } from 'astro:content'; import { getCollection } from 'astro:content';
const SECTIONS = [
{ slug: 'bincio-tech', label: 'BincioTech', desc: 'Tecnologia, gadget e componenti' },
{ slug: 'bincio-officina', label: 'BincioOfficina', desc: 'Manutenzione e riparazioni' },
{ slug: 'bincio-tour', label: 'BincioTour', desc: 'Tour, bike packing e rotte' },
{ slug: 'bincio-corsa', label: 'BincioCorsa', desc: 'Allenamento e gare' },
{ slug: 'bincio-abbigliamento', label: 'BincioAbbigliamento', desc: 'Abbigliamento tecnico' },
];
const allEntries = await getCollection('entries'); const allEntries = await getCollection('entries');
const wikiEntries = allEntries const bySection: Record<string, typeof allEntries> = Object.fromEntries(SECTIONS.map(s => [s.slug, []]));
.filter(e => !e.id.startsWith('_')) const uncategorized: typeof allEntries = [];
.sort((a, b) => (b.data.updatedDate ?? b.data.pubDate ?? new Date(0)).valueOf()
- (a.data.updatedDate ?? a.data.pubDate ?? new Date(0)).valueOf());
const docEntries = allEntries const docEntries = allEntries
.filter(e => e.id.startsWith('_docs/')) .filter(e => e.id.startsWith('_docs/'))
.sort((a, b) => a.data.title.localeCompare(b.data.title)); .sort((a, b) => a.data.title.localeCompare(b.data.title));
for (const entry of allEntries) {
if (entry.id.startsWith('_')) continue;
const sec = SECTIONS.find(s => entry.id.startsWith(s.slug + '/'));
if (sec) bySection[sec.slug].push(entry);
else uncategorized.push(entry);
}
for (const key of Object.keys(bySection)) {
bySection[key].sort((a, b) => a.data.title.localeCompare(b.data.title));
}
--- ---
<Base title={`Pagine — ${SITE_TITLE}`} description={SITE_DESCRIPTION}> <Base title={`Pagine — ${SITE_TITLE}`} description={SITE_DESCRIPTION}>
<div class="max-w-3xl mx-auto"> <div class="max-w-3xl mx-auto">
<div class="flex items-center justify-between mb-8"> <div class="flex items-center justify-between mb-8">
<h1 class="text-3xl font-bold" style="color: var(--text-primary)">Tutte le pagine</h1> <h1 class="text-3xl font-bold" style="color: var(--text-primary)">Pagine</h1>
<button <button
id="new-page-btn" id="new-page-btn"
class="text-xs text-zinc-400 hover:text-white transition-colors px-2 py-1 rounded border border-zinc-700 hover:border-zinc-500" class="text-xs text-zinc-400 hover:text-white transition-colors px-2 py-1 rounded border border-zinc-700 hover:border-zinc-500"
>+ Nuova pagina</button> >+ Nuova pagina</button>
</div> </div>
{wikiEntries.length === 0 ? ( {SECTIONS.map(sec => bySection[sec.slug].length > 0 && (
<p style="color: var(--text-4)" class="text-sm italic mb-10">Nessuna pagina ancora.</p> <section class="mb-8">
) : ( <h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">{sec.label}</h2>
<section class="mb-10"> <p class="text-xs mb-3" style="color: var(--text-5)">{sec.desc}</p>
<ul class="space-y-2"> <ul class="space-y-2">
{wikiEntries.map(entry => ( {bySection[sec.slug].map(entry => (
<li>
<a
href={`/entries/${entry.id}/`}
class="flex items-center gap-2 px-3 py-2 rounded-lg hover:bg-zinc-800 transition-colors group"
style="background: var(--bg-card)"
>
<span class="text-sm font-medium group-hover:text-white transition-colors" style="color: var(--text-2)">
{entry.data.title}
</span>
</a>
</li>
))}
</ul>
</section>
))}
{uncategorized.length > 0 && (
<section class="mb-8">
<h2 class="text-lg font-semibold mb-3" style="color: var(--text-2)">Senza categoria</h2>
<ul class="space-y-2">
{uncategorized.map(entry => (
<li> <li>
<a <a
href={`/entries/${entry.id}/`} href={`/entries/${entry.id}/`}
@@ -50,7 +87,7 @@ const docEntries = allEntries
{docEntries.length > 0 && ( {docEntries.length > 0 && (
<section> <section>
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2> <h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2>
<p class="text-xs mb-4" style="color: var(--text-5)">Come funziona questo wiki</p> <p class="text-xs mb-3" style="color: var(--text-5)">Come funziona questo wiki</p>
<ul class="space-y-2"> <ul class="space-y-2">
{docEntries.map(entry => ( {docEntries.map(entry => (
<li> <li>
+29 -19
View File
@@ -3,17 +3,33 @@ import Base from '../layouts/Base.astro';
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts'; import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
import { getCollection } from 'astro:content'; import { getCollection } from 'astro:content';
const SECTIONS = [
{ slug: 'bincio-tech', label: 'BincioTech', desc: 'Tecnologia, gadget e componenti' },
{ slug: 'bincio-officina', label: 'BincioOfficina', desc: 'Manutenzione e riparazioni' },
{ slug: 'bincio-tour', label: 'BincioTour', desc: 'Tour, bike packing e rotte' },
{ slug: 'bincio-corsa', label: 'BincioCorsa', desc: 'Allenamento e gare' },
{ slug: 'bincio-abbigliamento', label: 'BincioAbbigliamento', desc: 'Abbigliamento tecnico' },
];
const allEntries = await getCollection('entries'); const allEntries = await getCollection('entries');
const wikiEntries = allEntries const bySection: Record<string, typeof allEntries> = Object.fromEntries(SECTIONS.map(s => [s.slug, []]));
.filter(e => !e.id.startsWith('_'))
.sort((a, b) => (b.data.updatedDate ?? b.data.pubDate ?? new Date(0)).valueOf()
- (a.data.updatedDate ?? a.data.pubDate ?? new Date(0)).valueOf())
.slice(0, 10);
const docEntries = allEntries const docEntries = allEntries
.filter(e => e.id.startsWith('_docs/')) .filter(e => e.id.startsWith('_docs/'))
.sort((a, b) => a.data.title.localeCompare(b.data.title)); .sort((a, b) => a.data.title.localeCompare(b.data.title));
for (const entry of allEntries) {
if (entry.id.startsWith('_')) continue;
const sec = SECTIONS.find(s => entry.id.startsWith(s.slug + '/'));
if (sec) bySection[sec.slug].push(entry);
}
for (const key of Object.keys(bySection)) {
bySection[key].sort((a, b) =>
(b.data.updatedDate ?? b.data.pubDate ?? new Date(0)).valueOf() -
(a.data.updatedDate ?? a.data.pubDate ?? new Date(0)).valueOf()
);
}
--- ---
<Base title={SITE_TITLE} description={SITE_DESCRIPTION}> <Base title={SITE_TITLE} description={SITE_DESCRIPTION}>
@@ -25,11 +41,12 @@ const docEntries = allEntries
<p style="color: var(--text-4)">La memoria collettiva del gruppo Bincio.</p> <p style="color: var(--text-4)">La memoria collettiva del gruppo Bincio.</p>
</div> </div>
{wikiEntries.length > 0 ? ( {SECTIONS.map(sec => bySection[sec.slug].length > 0 && (
<section class="mb-10"> <section class="mb-8">
<h2 class="text-lg font-semibold mb-4" style="color: var(--text-2)">Pagine recenti</h2> <h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">{sec.label}</h2>
<p class="text-xs mb-3" style="color: var(--text-5)">{sec.desc}</p>
<ul class="space-y-2"> <ul class="space-y-2">
{wikiEntries.map(entry => ( {bySection[sec.slug].map(entry => (
<li> <li>
<a <a
href={`/entries/${entry.id}/`} href={`/entries/${entry.id}/`}
@@ -43,20 +60,13 @@ const docEntries = allEntries
</li> </li>
))} ))}
</ul> </ul>
<p class="mt-4 text-sm">
<a href="/entries" style="color: var(--accent)" class="hover:opacity-80 transition-opacity">Tutte le pagine →</a>
</p>
</section> </section>
) : ( ))}
<section class="mb-10">
<p style="color: var(--text-4)" class="text-sm italic">Nessuna pagina ancora.</p>
</section>
)}
{docEntries.length > 0 && ( {docEntries.length > 0 && (
<section> <section>
<h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2> <h2 class="text-lg font-semibold mb-1" style="color: var(--text-2)">Documentazione</h2>
<p class="text-xs mb-4" style="color: var(--text-5)">Come funziona questo wiki</p> <p class="text-xs mb-3" style="color: var(--text-5)">Come funziona questo wiki</p>
<ul class="space-y-2"> <ul class="space-y-2">
{docEntries.map(entry => ( {docEntries.map(entry => (
<li> <li>