Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ed91afa
chore: add develop to ci
itziarZG Feb 3, 2026
f169a03
Merge branch 'develop' of https://github.com/python-spain/2026.es.pyc…
itziarZG Feb 3, 2026
c152206
Feat: Menú dinámico con comportamiento estándard por teclado #63 (#66)
itziarZG Feb 3, 2026
c965990
chore(merge): merge main into develop
ctrl-alt-d Feb 8, 2026
e4cd85e
Merge branch 'main' into develop
ctrl-alt-d Feb 10, 2026
1fabb2d
Merge branch 'main' into develop
itziarZG Feb 13, 2026
5990e9f
refactor: transforma home en secciones y añade un mensaje (#99)
francescarpi Feb 17, 2026
514e9fd
feat: add navigation to header (#100)
itziarZG Feb 17, 2026
ab44006
Merge branch 'main' into develop
francescarpi Feb 17, 2026
ca48bce
Merge branch 'main' into develop
ctrl-alt-d Feb 24, 2026
80c4899
Merge branch 'main' into develop
ctrl-alt-d Feb 24, 2026
7ba629e
Feat: Menu item paquetes patro
ctrl-alt-d Feb 24, 2026
bc84271
Sección de patrocinadores en la home (#104)
francescarpi Feb 26, 2026
9f24f8c
Feat: Merge branch 'main' into develop
ctrl-alt-d Feb 26, 2026
116d5c0
Merge branch 'main' into develop
francescarpi Mar 3, 2026
9e935b3
feat: add new design tokens and toogle mode (#111)
itziarZG Mar 6, 2026
47ea970
Correcciones del theme y colores de los tiers aplicados (#112)
francescarpi Mar 8, 2026
9952f1d
Add Nagarro sponsor (#113)
francescarpi Mar 10, 2026
a1e273a
feat(sponsors): Add GISCE as a new bronze sponsor (#114)
dukebody Mar 11, 2026
9bd5401
chore(sponsors): Añadir Perk como main sponsor. (#115)
dukebody Mar 11, 2026
6684bbb
docs: add/update AGENTS.md with detailed guidelines for build, style,…
francescarpi Mar 12, 2026
e81b972
feat: add figma buttons (#121)
itziarZG Mar 13, 2026
66f81fd
Delete light mode (#122)
itziarZG Mar 17, 2026
33af271
feat(sponsors): redesign sponsors section with elegant glassmorphism …
francescarpi Mar 17, 2026
608e023
feat: delete menu options without pages (#126)
itziarZG Mar 17, 2026
011584a
fix: fix red letters contrast and increase base font size (#127)
itziarZG Mar 17, 2026
84aa0ce
feat: code conduct page (#123)
itziarZG Mar 17, 2026
3cd863a
feat: add analytics and seo (#128)
itziarZG Mar 17, 2026
1840ec4
feat: where and accomodation pages (#129)
itziarZG Mar 17, 2026
c1f6b5d
Feat add footer (#102)
itziarZG Mar 17, 2026
dfa5291
fix: fix code conduct dark mode (#133)
itziarZG Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PUBLIC_GA_ID=
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI

on:
pull_request:
branches: [main]
branches: [main, develop]

jobs:
build:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Deploy to GitHub Pages

on:
push:
branches: [ main ]
branches: [main]
workflow_dispatch:

permissions:
Expand All @@ -11,7 +11,7 @@ permissions:
id-token: write

concurrency:
group: "pages"
group: 'pages'
cancel-in-progress: false

jobs:
Expand All @@ -20,18 +20,18 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Install dependencies
run: npm install

- name: Build with Astro
run: npm run build

- name: Upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ dist/
.DS_Store

# vscode settings
.vscode/
.vscode/

*.local
191 changes: 191 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
# AGENTS.md

This document provides a detailed guide for agents interacting with this codebase, which is built on the Astro framework. Follow these standards to ensure consistency and maintainability. For further details on Astro, refer to the [official documentation](https://docs.astro.build/).

---

## 1. Build, Lint, and Test Commands

### Build Commands

- **Development Server**:

```bash
pnpm dev
```

Use this command to spin up a development server. It includes live-reloading.

- **Build for Production**:

```bash
pnpm build
```

This compiles the codebase into optimized production-ready files under the `dist/` directory.

- **Preview Production Build**:
```bash
pnpm preview
```
This command serves the production build locally for testing.

### Linting and Formatting

- **Run Prettier**:
```bash
pnpm format
```
This formats all code under the `src` folder according to the Prettier settings.

### Testing Commands

(Note: No testing framework is currently integrated. Update this section if added.)

To simulate the test command:

```bash
pnpm test
```

Currently, this outputs `Error: no test specified`.

For individual test setups, the framework used (e.g. Jest, Vitest) will define the process.

---

## 2. Code Style Guidelines

### General Formatting Rules

This codebase uses **Prettier** for consistent formatting. Key settings include:

- **Tab Width**: 2 spaces
- **Line Width**: 110 characters max
- **Semicolons**: Disabled
- **Quotes**: Single quotes preferred (`'example'`, not `"example"`)
- **Plugins**: Uses `prettier-plugin-astro` for `.astro` files.

Run the formatter before committing code:

```bash
pnpm format
```

### Import Conventions

1. Place **external imports** above internal ones:

```typescript
import { useState } from 'react'
import utils from '@/lib/utils'
```

2. **Do not use wildcard imports** (e.g., `import * as fs`).
3. Maintain alphabetical order where possible.

### Code Organization

1. Use TypeScript for all new files (`.ts`, `.tsx`).
2. Follow the directory structure:
- Components in `src/components`
- Pages in `src/pages`
- Utilities in `src/lib`

### Naming Conventions

#### Files/Folders

- Use `kebab-case` for filenames (`example-file.ts`).
- Directories reflect their contents (`components`, `utils`).

#### Variables and Functions

Use `camelCase` for variables and methods:

```javascript
const fetchData = () => {}
```

#### Types

- Interface names should use `PascalCase`:

```typescript
interface User {
id: string
name: string
}
```

### Error Handling

1. Always check for edge cases in asynchronous operations:

```typescript
try {
const response = await fetch('/api/data')
const data = response.json()
} catch (error) {
console.error('Error fetching data:', error)
}
```

2. Avoid silent failures. Log or handle errors appropriately.

---

## 3. Guidelines for Agents

Agents (like Copilot) must adhere to these coding standards to ensure consistency.

1. **Pre-Execution**
- Ensure Prettier is configured. Adjust any settings, such as overriding `tabWidth` or `printWidth`, to align with this repository.
- Validate TypeScript definitions before proceeding.

2. **During Execution**
- When generating test files, suggest using Jest or Vitest (if no tests are found).
- For updates, refactor to use modular imports and maintain concise separation of logic.
- **Follow SEO and i18n guidelines** defined in section 4 when creating or modifying pages.

3. **Post-Execution**
- Always include a test or linting step before suggesting commits.
- Suggest meaningful commit messages, such as:
```bash
chore: format code with Prettier
```

---

## 4. SEO and Page Creation Guidelines

Agents must ensure all new pages are optimized for search engines and follow the project's internationalization (i18n) structure.

### Multi-language Pages
- All new pages must be placed in `src/pages/[lang]/`.
- Use `getStaticPaths()` to support all configured locales (`es`, `en`, `ca`).
- Example structure:
```typescript
export function getStaticPaths() {
return [{ params: { lang: 'es' } }, { params: { lang: 'en' } }, { params: { lang: 'ca' } }]
}
```

### Layout and Metadata
- Every page **must** use the `Layout` component from `src/layouts/Layout.astro`.
- Pass a unique and descriptive `title` and `description` (150-160 characters) to the `Layout` component.
- The `Layout` component automatically handles canonical URLs, social media tags (OG/Twitter), and `hreflang` tags.

### Semantic HTML and Accessibility
- **H1 Tags**: Use exactly one `<h1>` per page.
- **Headings**: Maintain a logical hierarchy (`h2`, `h3`, etc.).
- **Images**: All `<img>` tags must include a descriptive `alt` attribute.
- **Links**: Use descriptive text for links. Avoid generic phrases like "click here".

### Analytics and Monitoring
- Use the `PUBLIC_GA_ID` environment variable for Google Analytics.
- Do not hardcode tracking IDs.

---

Adhering to these standards will ensure contributions are cohesive, minimizing review cycles and enhancing overall productivity.
37 changes: 37 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,40 @@ pnpm build
pnpm preview
```

## SEO & New Pages

To maintain good SEO and consistency as the project grows, follow these guidelines when adding new pages:

### 1. Creating Multi-language Pages
New pages should be created in `src/pages/[lang]/` using `getStaticPaths`.
- Ensure you use the `<Layout>` component.
- Always provide a unique `title` and `description` to the Layout.

Example:
```astro
---
import Layout from '../../layouts/Layout.astro'
// ...
---
<Layout title="Your Page Title" description="Concise description (150-160 chars)">
<!-- Content -->
</Layout>
```

### 2. SEO Best Practices
- **Semantic HTML**: Use only one `<h1>` per page. Follow a logical heading hierarchy (`<h2>`, `<h3>`).
- **Image Alt Tags**: All `<img>` tags MUST have descriptive `alt` attributes.
- **Internal Linking**: Use descriptive link text (avoid "click here").

### 3. Analytics
- Set the `PUBLIC_GA_ID` environment variable in your `.env` file to enable Google Analytics.
```text
PUBLIC_GA_ID=G-XXXXXXXXXX
```

### 4. Structured Data
- The main event structured data (JSON-LD) is globally included in `Layout.astro`.
- For specific pages (like "Sponsors" or "Talks"), consider adding additional [schema.org](https://schema.org) types locally if necessary.

### 5. Sitemap
- The sitemap is automatically generated on every build. No manual action is required.
4 changes: 3 additions & 1 deletion astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import { defineConfig } from 'astro/config'
import tailwindcss from '@tailwindcss/vite'
import sitemap from '@astrojs/sitemap'

export default defineConfig({
site: 'https://2026.es.pycon.org',
base: '/',
integrations: [sitemap()],
vite: {
plugins: [tailwindcss()],
},
Expand All @@ -12,7 +14,7 @@ export default defineConfig({
locales: ['es', 'en', 'ca'],
routing: {
prefixDefaultLocale: true,
redirectToDefaultLocale: false
redirectToDefaultLocale: false,
},
},
})
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"license": "ISC",
"packageManager": "pnpm@10.10.0",
"dependencies": {
"@astrojs/sitemap": "^3.7.1",
"@fontsource-variable/jetbrains-mono": "^5.2.8",
"@fontsource-variable/outfit": "^5.2.8",
"@tailwindcss/vite": "^4.1.18",
Expand Down
Loading
Loading