This repository contains the source code for the PyCon India 2025 website, built with 11ty and Tailwind CSS.
- Node.js (v22 or latest)
- npm
-
Fork and clone the repository:
git clone https://github.com/pythonindia/inpycon2025.git cd inpycon2025
-
Install dependencies:
npm install
-
Start the development server:
make deploy-dev-server
-
Open your browser and visit
http://localhost:8080
We welcome contributions from everyone! Here's how you can help:
- Check the issues page for existing tasks
- Feel free to create a new issue if you find a bug or want to suggest an enhancement
- Wait for issue assignment before starting work to avoid duplicate efforts
-
Create a new branch for your changes:
git checkout -b feature/your-feature-name
-
Make your changes following our code style (see below)
-
Commit your changes with meaningful messages:
git commit -m "Add: description of what you've added" git commit -m "Fix: description of what you've fixed" git commit -m "Update: description of what you've updated"
-
Push your changes:
git push origin feature/your-feature-name
-
Create a pull request from your branch to the main repository
src/
: Source files_data/
: Global data files_includes/
: Template partials and components_layouts/
: Page templatescss/
: CSS source filesstatic/
: Static assets (images, css libraries, etc.)
We use a component-based approach with Nunjucks templates:
- Components: Reusable UI elements in
src/_includes/components/
- Layouts: Page templates in
src/_layouts/
- Partials: Reusable page sections in
src/_includes/
- Add your component in
src/_includes/components/your-component.njk
. If your component is limited to a page, add it under that page directory. Keep codebase as modular and reusable as you can. - Use the following template:
{% macro componentName(param1, param2) %}
<div class="your-class-names">
{{ param1 }}
{% if param2 %}
<span>{{ param2 }}</span>
{% endif %}
{{ caller() if caller }}
</div>
{% endmacro %}
- Import and use your component in pages:
{% from "components/your-component.njk" import componentName %}
{{ componentName("value1", "value2") }}
You can add icons to your page by specifying an iconset
key in the frontmatter.
Only one iconset is allowed per page. Each iconset maps to one or more images based on a predefined list in the layout.
---
title: Contact Us
description: |
PyCon India 2025 is a purely volunteer community conference, driven by people passionate about Python.
layout: page.njk
iconset: question
---
This will display the "Question Mark" icon near the top of the page.
If you want to use a new combination of icons, you must:
- Add the new iconset and its image mapping to the src/_data/icon_map.json.
- Use the new key in your page frontmatter.
We use Tailwind CSS for styling:
- Use Tailwind utility classes whenever possible
- Custom CSS should be minimal and placed in
src/css/main.css
- Follow the established color scheme and design system:
- Primary colors:
pycon-blue
(#4E62F5),pycon-lime
(#D7FF7B),pycon-purple
(#CD89FF) - Use responsive classes (
md:
,lg:
, etc.) for different screen sizes
- Primary colors:
- Ensure your changes look good on different screen sizes (mobile, tablet, desktop)
- Test in multiple browsers (Chrome, Firefox, Safari, Edge)
- Check performance using Lighthouse in Chrome DevTools
- Ensure your code follows our style guidelines
- Update the README.md with details of changes if necessary
- The PR should work in all browsers and device sizes
- Request reviews from maintainers
- Address any review comments and make necessary changes
- Once approved, a maintainer will merge your PR
- Add screenshots if necessary
- The site is automatically deployed on Netlify
- Preview deployments are generated for pull requests
- Always check the preview deployment link to verify your changes
- If for any reason, you don't see any preview, contact one of the maintainers
The site uses Eleventy (11ty) as a static site generator. Key configuration:
env.js
: Environment-specific configurationsite.json
: Global site metadata- Nunjucks as the primary templating language
Note: To be revised once Tailwind v4 update is done.
Tailwind CSS is configured in tailwind.config.js
:
- Custom colors for the PyCon India brand
- Extended animations and utilities
- JIT mode for development
- Purging unused CSS in production
- Continuous Integration through GitHub Actions
- Continuous Deployment through Netlify
If you need any help or have questions:
- Join our [Zulip/Whatsapp chat platform]
- Ask in the comments of the issue you're working on
- Email the PyCon India organizers at [[email protected]]
Thank you for contributing to PyCon India 2025!