Skip to content

Commit 5220121

Browse files
authored
feat: first landing with essential info (#6)
<img width="1082" height="678" alt="image" src="https://github.com/user-attachments/assets/18172e3d-d282-4868-a6ca-cd4aec8e34b5" /> To do: - [x] Add title, description and keywords - [x] Add analytics? - [x] Fix favicon Fixes #5
1 parent c89994f commit 5220121

8 files changed

Lines changed: 95 additions & 12 deletions

File tree

astro.config.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
import { defineConfig } from 'astro/config';
2+
import tailwindcss from "@tailwindcss/vite";
23

34
// CONF WITHOUT REAL DOMAIN
45
export default defineConfig({
56
site: 'https://python-spain.github.io',
6-
base: '/2026.es.pycon.org',
7+
base: '/',
8+
vite: {
9+
plugins: [tailwindcss()],
10+
},
711
});
812

913
//CONFIG WITH REAL DOMAIN
1014
// export default defineConfig({
1115
// site: 'https://2026.es.pycon.org',
1216
// base: '/',
13-
// });
17+
// });

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"packageManager": "pnpm@10.10.0",
1717
"dependencies": {
1818
"@tailwindcss/vite": "^4.1.18",
19+
"animejs": "^4.2.2",
1920
"astro": "^5.16.8",
2021
"tailwindcss": "^4.1.18"
2122
},

pnpm-lock.yaml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
onlyBuiltDependencies:
2+
- esbuild
3+
- sharp

public/favicon.svg

Lines changed: 15 additions & 0 deletions
Loading

src/layouts/Layout.astro

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
---
2-
// Import ClientRouter for smooth transitions (SPA feel) without React
3-
// Note: In Astro 4 it was called ViewTransitions, in Astro 5 Beta it's ClientRouter
2+
import '../style/global.css'
3+
44
import { ClientRouter } from 'astro:transitions'
55
6-
// 1. TypeScript: Define the Props this Layout will accept
76
interface Props {
87
title: string
98
description?: string // Optional (?)
109
}
1110
12-
// 2. Extract props with default values
13-
const { title, description = 'Landing page created with Astro and Tailwind CSS' } = Astro.props
11+
const { title, description = 'PyconES 2026' } = Astro.props
1412
---
1513

1614
<!doctype html>
@@ -27,7 +25,9 @@ const { title, description = 'Landing page created with Astro and Tailwind CSS'
2725
<ClientRouter />
2826
</head>
2927

30-
<body class="bg-slate-900 text-white antialiased">
28+
<body
29+
class="bg-slate-900 text-white antialiased h-screen flex flex-col justify-center bg-linear-to-r from-gray to-blue-900 bg-radial"
30+
>
3131
<slot />
3232
</body>
3333
</html>

src/pages/index.astro

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,60 @@
22
import Layout from '../layouts/Layout.astro'
33
---
44

5-
<Layout title="PyCon 2026" description="PyCon conference 2026">
6-
<main class="container mx-auto px-4 py-10">
7-
<h1 class="text-5xl font-bold text-center mb-6">PyConf 2026</h1>
8-
<p class="text-center text-slate-300 text-xl">made with Astro 🚀</p>
5+
<Layout
6+
title="PyConES 2026 - Barcelona"
7+
description="PyConES, la conferencia de Python más importante de España"
8+
>
9+
<main class="container mx-auto px-4 py-10 flex flex-col items-center gap-6">
10+
<h1 class="text-5xl font-bold">PyConES 2026</h1>
11+
<h2 class="text-5xl font-bold">Barcelona</h2>
12+
<p class="text-slate-300 text-xl">6, 7 y 8 de Noviembre</p>
913
</main>
1014
</Layout>
15+
16+
<script>
17+
import { createTimeline, stagger, createScope, splitText } from 'animejs'
18+
19+
createScope({
20+
root: 'main',
21+
defaults: {
22+
ease: 'outQuad',
23+
},
24+
}).add((scope) => {
25+
const { root, methods } = scope
26+
27+
const { chars } = splitText('h1', { chars: true, words: { wrap: 'clip' } })
28+
let isAnimating = false
29+
30+
scope.add('onEnter', () => {
31+
if (isAnimating) {
32+
return
33+
}
34+
35+
isAnimating = true
36+
37+
createTimeline({
38+
defaults: { ease: 'out(3)', duration: 750 },
39+
onComplete: () => {
40+
isAnimating = false
41+
},
42+
}).add(
43+
chars,
44+
{
45+
y: [{ to: ['100%', '0%'] }],
46+
},
47+
stagger(50),
48+
)
49+
})
50+
51+
root.addEventListener('pointerenter', methods.onEnter)
52+
})
53+
</script>
54+
55+
<style>
56+
h1:before {
57+
content: 'PyConES 2026';
58+
position: absolute;
59+
color: rgba(255, 255, 255, 0.4);
60+
}
61+
</style>

src/style/global.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@import "tailwindcss";

0 commit comments

Comments
 (0)