Skip to content

Commit 16121e4

Browse files
committed
add imprint, fix linting
1 parent 1f116da commit 16121e4

9 files changed

Lines changed: 167 additions & 80 deletions

File tree

src/components/PostCard.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ const filterItems = filterType === 'tag' ? post.data.tags : post.data.categories
1919

2020
<article class:list={[
2121
'card-base card-hover overflow-hidden',
22-
{ 'highlight': isUpcoming || isTBD }
22+
{ 'highlight': isUpcoming || isTBD },
2323
]}>
2424
<a href={`/blog/${post.slug}`} class="block p-6">
2525
<div class="flex flex-col md:flex-row gap-6 items-start">
2626
{(post.data.event_date || post.data.categories === 'stammtisch') && (
2727
<div class:list={[
2828
'bg-blockchain-light rounded-lg p-4 md:w-48 text-center transform group-hover:scale-105 transition-transform',
29-
{ 'bg-blockchain-accent/10': isUpcoming || isTBD }
29+
{ 'bg-blockchain-accent/10': isUpcoming || isTBD },
3030
]}>
3131
{post.data.event_date instanceof Date ? (
3232
<>

src/content/config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ const blog = defineCollection({
66
date: z.coerce.date(),
77
event_date: z.union([
88
z.coerce.date(),
9-
z.literal('TBD')
9+
z.literal('TBD'),
1010
]).optional(),
1111
event_location_name: z.string().optional(),
1212
event_location_url: z.string().url().optional(),
1313
categories: z.string(),
14-
tags: z.string().transform(str => str.split(',').map(s => s.trim())),
14+
tags: z.string().transform((str) => str.split(',').map((s) => s.trim())),
1515
description: z.string().optional(),
1616
}),
1717
});

src/layouts/Layout.astro

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const { title } = Astro.props;
2424
href="/"
2525
class="text-2xl font-bold hover:text-blockchain-accent transition-colors"
2626
>
27-
Dresden Blockchain
27+
Dresden Blockchain
2828
</a>
2929
<div class="flex gap-6">
3030
<a
@@ -63,7 +63,7 @@ const { title } = Astro.props;
6363
d="M4 9a1 1 0 011-1 7 7 0 017 7 1 1 0 11-2 0 5 5 0 00-5-5 1 1 0 01-1-1zM3 15a2 2 0 114 0 2 2 0 01-4 0z"
6464
></path>
6565
</svg>
66-
RSS Feed abonnieren
66+
RSS Feed abonnieren
6767
</a>
6868

6969
<a
@@ -82,13 +82,34 @@ const { title } = Astro.props;
8282
d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.652.242 2.873.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"
8383
></path>
8484
</svg>
85-
Contributors welcome
85+
Contributors welcome
8686
</a>
8787
</div>
88+
<div class="footer-links">
89+
<a href="/imprint">Impressum</a> | Dresden Blockchain Meetup
90+
</div>
8891
</footer>
8992
</body>
9093
</html>
9194

9295
<style is:global>
93-
@import "../styles/shared.css";
96+
@import "../styles/shared.css";
97+
</style>
98+
99+
<style>
100+
.footer-links {
101+
text-align: center;
102+
padding: 1rem;
103+
margin-top: 2rem;
104+
font-size: 0.9rem;
105+
}
106+
107+
.footer-links a {
108+
color: inherit;
109+
text-decoration: none;
110+
}
111+
112+
.footer-links a:hover {
113+
text-decoration: underline;
114+
}
94115
</style>

src/pages/blog/[...slug].astro

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,18 @@ const displayTitle = formatTitle(post, eventNumber);
2828
// Format event date if available
2929
const eventDate = post.data.event_date instanceof Date
3030
? post.data.event_date.toLocaleDateString('de-DE', {
31-
weekday: 'long',
32-
year: 'numeric',
33-
month: 'long',
34-
day: 'numeric',
35-
})
31+
weekday: 'long',
32+
year: 'numeric',
33+
month: 'long',
34+
day: 'numeric',
35+
})
3636
: 'Wird noch bekannt gegeben';
3737
3838
const eventTime = post.data.event_date instanceof Date
3939
? post.data.event_date.toLocaleTimeString('de-DE', {
40-
hour: '2-digit',
41-
minute: '2-digit',
42-
}) + ' Uhr'
40+
hour: '2-digit',
41+
minute: '2-digit',
42+
}) + ' Uhr'
4343
: 'TBD';
4444
4545
// Generate ICS file content if this is an event with a date

src/pages/imprint.astro

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
import Layout from '../layouts/Layout.astro';
3+
---
4+
5+
<Layout title="Impressum | Dresden Blockchain Meetup">
6+
<main class="w-full max-w-[900px] mx-auto p-4">
7+
<article class="space-y-4">
8+
<h1 class="text-xl">Impressum</h1>
9+
10+
<h2 class="mt-8 mb-4">Angaben gemäß § 5 TMG</h2>
11+
<p>
12+
Dresden Blockchain Meetup<br />
13+
c/o Karl Adler<br />
14+
Neustädter Straße 9<br />
15+
01097 Dresden<br />
16+
Deutschland
17+
</p>
18+
19+
<h3>Kontakt</h3>
20+
<p>
21+
E-Mail: info@fudler.de<br />
22+
</p>
23+
24+
<h3>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</h3>
25+
<p>
26+
Dresden Blockchain Meetup<br />
27+
c/o Karl Adler<br />
28+
Neustädter Straße 9<br />
29+
01097 Dresden<br />
30+
Deutschland
31+
</p>
32+
33+
<h3>Haftungsausschluss</h3>
34+
<p>
35+
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die
36+
Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir
37+
jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7
38+
Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen
39+
Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als
40+
Diensteanbieter jedoch nicht verpflichtet, übermittelte oder
41+
gespeicherte fremde Informationen zu überwachen oder nach Umständen zu
42+
forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
43+
</p>
44+
45+
<h3>Urheberrecht</h3>
46+
<p>
47+
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen
48+
Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung,
49+
Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der
50+
Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des
51+
jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite
52+
sind nur für den privaten, nicht kommerziellen Gebrauch gestattet.
53+
</p>
54+
55+
<h3>Datenschutz</h3>
56+
<p>
57+
Die Nutzung unserer Webseite ist in der Regel ohne Angabe
58+
personenbezogener Daten möglich. Soweit auf unseren Seiten
59+
personenbezogene Daten (beispielsweise Name, Anschrift oder
60+
E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf
61+
freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche
62+
Zustimmung nicht an Dritte weitergegeben.
63+
</p>
64+
</article>
65+
</main>
66+
</Layout>

src/pages/index.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const isFutureEvent = (date?: Date | 'TBD') => {
1919
2020
// Get upcoming and recent posts
2121
const upcomingPosts = posts
22-
.filter(post => isFutureEvent(post.data.event_date) || post.data.event_date === 'TBD')
22+
.filter((post) => isFutureEvent(post.data.event_date) || post.data.event_date === 'TBD')
2323
.sort((a, b) => {
2424
const aIsTBD = a.data.event_date === 'TBD';
2525
const bIsTBD = b.data.event_date === 'TBD';
@@ -38,7 +38,7 @@ const upcomingPosts = posts
3838
.slice(0, 3);
3939
4040
const recentPosts = posts
41-
.filter(post => !isFutureEvent(post.data.event_date) && post.data.event_date !== 'TBD')
41+
.filter((post) => !isFutureEvent(post.data.event_date) && post.data.event_date !== 'TBD')
4242
.sort((a, b) => b.data.date.getTime() - a.data.date.getTime())
4343
.slice(0, 3);
4444
---

src/pages/rss.xml.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ export async function GET(context) {
1616
// Optional fields
1717
categories: [post.data.categories, ...(post.data.tags || [])],
1818
content: post.data.event_date instanceof Date
19-
? `Event Date: ${post.data.event_date.toLocaleDateString('de-DE')}${post.data.event_location_name ? ` at ${post.data.event_location_name}` : ''}`
20-
: post.data.event_date === 'TBD'
21-
? 'Event Date: To be determined'
22-
: '',
19+
? `Event Date: ${post.data.event_date.toLocaleDateString('de-DE')}${post.data.event_location_name ? ` at ${post.data.event_location_name}` : ''}`
20+
: post.data.event_date === 'TBD'
21+
? 'Event Date: To be determined'
22+
: '',
2323
})),
2424
});
2525
}

src/utils/icsGenerator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export function generateICS(event: {
3030
`DESCRIPTION:${description}`,
3131
`LOCATION:${event.location}`,
3232
'END:VEVENT',
33-
'END:VCALENDAR'
33+
'END:VCALENDAR',
3434
].join('\r\n');
3535

3636
return icsContent;

tailwind.config.mjs

Lines changed: 57 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,59 @@
11
/** @type {import('tailwindcss').Config} */
22
export default {
3-
content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
4-
theme: {
5-
extend: {
6-
colors: {
7-
'blockchain': {
8-
'primary': '#2D3748', // Dark blue-gray
9-
'secondary': '#4A5568', // Medium blue-gray
10-
'accent': '#4299E1', // Bright blue
11-
'light': '#EDF2F7', // Light gray
12-
'dark': '#1A202C', // Very dark blue-gray
13-
},
14-
},
15-
typography: {
16-
DEFAULT: {
17-
css: {
18-
'h1, h2, h3, h4': {
19-
color: '#2D3748',
20-
fontWeight: '700',
21-
},
22-
a: {
23-
color: '#4299E1',
24-
textDecoration: 'none',
25-
'&:hover': {
26-
color: '#2D3748',
27-
textDecoration: 'underline',
28-
},
29-
},
30-
ul: {
31-
listStyleType: 'disc',
32-
},
33-
ol: {
34-
listStyleType: 'decimal',
35-
},
36-
'ul, ol': {
37-
paddingLeft: '1.5em',
38-
},
39-
'li': {
40-
marginTop: '0.5em',
41-
marginBottom: '0.5em',
42-
},
43-
blockquote: {
44-
borderLeftColor: '#4299E1',
45-
color: '#4A5568',
46-
},
47-
code: {
48-
color: '#2D3748',
49-
backgroundColor: '#EDF2F7',
50-
padding: '0.2em 0.4em',
51-
borderRadius: '0.25em',
52-
},
53-
},
54-
},
55-
},
56-
},
57-
},
58-
plugins: [require('@tailwindcss/typography')],
59-
}
3+
content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'],
4+
theme: {
5+
extend: {
6+
colors: {
7+
'blockchain': {
8+
'primary': '#2D3748', // Dark blue-gray
9+
'secondary': '#4A5568', // Medium blue-gray
10+
'accent': '#4299E1', // Bright blue
11+
'light': '#EDF2F7', // Light gray
12+
'dark': '#1A202C', // Very dark blue-gray
13+
},
14+
},
15+
typography: {
16+
DEFAULT: {
17+
css: {
18+
'h1, h2, h3, h4': {
19+
color: '#2D3748',
20+
fontWeight: '700',
21+
},
22+
a: {
23+
color: '#4299E1',
24+
textDecoration: 'none',
25+
'&:hover': {
26+
color: '#2D3748',
27+
textDecoration: 'underline',
28+
},
29+
},
30+
ul: {
31+
listStyleType: 'disc',
32+
},
33+
ol: {
34+
listStyleType: 'decimal',
35+
},
36+
'ul, ol': {
37+
paddingLeft: '1.5em',
38+
},
39+
'li': {
40+
marginTop: '0.5em',
41+
marginBottom: '0.5em',
42+
},
43+
blockquote: {
44+
borderLeftColor: '#4299E1',
45+
color: '#4A5568',
46+
},
47+
code: {
48+
color: '#2D3748',
49+
backgroundColor: '#EDF2F7',
50+
padding: '0.2em 0.4em',
51+
borderRadius: '0.25em',
52+
},
53+
},
54+
},
55+
},
56+
},
57+
},
58+
plugins: [require('@tailwindcss/typography')],
59+
};

0 commit comments

Comments
 (0)