This repository contains the source code for the PyCon India 2025 website, built with 11ty and Tailwind CSS.
Getting Started
Prerequisites
- Node.js (v22 or latest)
- npm
Setup
-
Fork and clone the repository:
git clone https://github.com/pythonindia/inpycon2025.git cd inpycon2025 -
Install dependencies:
-
Start the development server:
-
Open your browser and visit
http://localhost:8080
Contributing Guidelines
We welcome contributions from everyone! Here's how you can help:
1. Find or Create an Issue
- 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
2. Development Workflow
-
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
3. Code Structure
src/: Source files_data/: Global data files_includes/: Template partials and components_layouts/: Page templatescss/: CSS source filesstatic/: Static assets (images, css libraries, etc.)
4. Component System
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/
Creating a New Component
- 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") }}
Custom Icons for Page Layouts
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.
5. Styling Guidelines
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:
6. Testing Your Changes
- 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
7. Pull Request Process
- 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
8. Deployment
- 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
Project Architecture
Eleventy Configuration
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
Tailwind Configuration
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
CI/CD
- Continuous Integration through GitHub Actions
- Continuous Deployment through Netlify
Need Help?
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 [contact@in.pycon.org]
Thank you for contributing to PyCon India 2025!