Thank you for your interest in contributing to AustroVis! This document provides guidelines and instructions for contributing to the project.
- Code of Conduct
- Getting Started
- Development Workflow
- Project Structure
- Coding Standards
- Submitting Changes
- Reporting Issues
We are committed to providing a welcoming and inclusive environment. Please be respectful and constructive in all interactions.
- Node.js 20 or higher
- npm or yarn
- Git
- A GitHub account
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/austrovis.github.io.git cd austrovis.github.io -
Add the upstream repository:
git remote add upstream https://github.com/austrovis/austrovis.github.io.git
-
Install dependencies:
npm install
-
Create
.env.localfor local development:NEXT_PUBLIC_NEWSLETTER_API_URL=https://austrovis-serverless.netlify.app/.netlify/functions/newsletter NEXT_PUBLIC_REGISTER_API_URL=https://austrovis-serverless.netlify.app/.netlify/functions/register
-
Start the development server:
npm run dev
-
Open http://localhost:3000 to see your changes
Always create a new branch for your work:
# Update your main branch
git checkout main
git pull upstream main
# Create a feature branch
git checkout -b feature/your-feature-name
# or for bug fixes
git checkout -b fix/bug-descriptionfeature/- New features or enhancementsfix/- Bug fixesdocs/- Documentation updatescontent/- Content changes and updatesstyle/- Code style changes (formatting, etc.)refactor/- Code refactoringtest/- Adding or updating tests
-
Make your changes in your feature branch
-
Test your changes thoroughly
-
Ensure the code follows our coding standards
-
Run linting and type checking:
npm run lint
-
Build the project to ensure no errors:
npm run build
git checkout main
git pull upstream main
git checkout your-branch-name
git rebase mainaustrovis.github.io/
├── app/ # Next.js App Router pages
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Homepage
│ ├── register/ # Registration page
│ └── globals.css # Global styles
├── components/ # Reusable React components
│ ├── Header.tsx
│ ├── Footer.tsx
│ ├── EventCard.tsx
│ ├── NewsletterSignup.tsx
│ ├── ParallaxHero.tsx
│ └── ScrollReveal.tsx
├── lib/ # Utility functions and data
│ └── events.ts # Event data management
├── types/ # TypeScript type definitions
│ └── event.ts
├── public/ # Static assets
└── .github/workflows/ # GitHub Actions workflows
- Use TypeScript for all new code
- Define proper types for props, state, and data structures
- Avoid using
anytype unless absolutely necessary - Use interfaces for object types
- Use type aliases for unions and primitives
- Use functional components with hooks
- Use
'use client'directive for client-side components - Keep components focused and single-purpose
- Extract reusable logic into custom hooks
- Use descriptive prop names
- Use Tailwind CSS utility classes
- Follow the existing design system
- Ensure responsive design (mobile-first approach)
- Test on multiple screen sizes
- Maintain consistent spacing and typography
- One component per file
- Name files with PascalCase for components (
EventCard.tsx) - Name files with camelCase for utilities (
events.ts) - Keep related files together
- Write self-documenting code with clear variable and function names
- Add comments for complex logic
- Remove console.logs before committing (except intentional logging)
- Handle errors gracefully
- Avoid code duplication
Write clear, descriptive commit messages:
<type>: <subject>
<body (optional)>
Types:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, semicolons, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
Examples:
feat: add parallax effect to hero section
fix: resolve mobile menu overflow issue
docs: update installation instructions in README
-
Push your branch to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request:
- Go to the original repository
- Click "New Pull Request"
- Select your fork and branch
- Fill in the PR template
-
PR Title Format:
[Type] Brief descriptionExample:
[Feature] Add event filtering by location -
PR Description should include:
- What changes were made
- Why these changes are necessary
- Screenshots for UI changes
- Related issue numbers (if applicable)
-
Wait for review:
- Address any feedback from reviewers
- Make requested changes in new commits
- Don't force-push after review has started
-
After approval:
- Your PR will be merged by a maintainer
- Delete your feature branch
- Check if the issue already exists
- Test on the latest version
- Gather relevant information
Include:
- Clear title: Brief, descriptive summary
- Description: Detailed explanation of the issue or feature request
- Steps to reproduce: (for bugs) Step-by-step instructions
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Screenshots: If applicable
- Environment:
- Browser and version
- Operating system
- Node.js version (for build issues)
bug- Something isn't workingenhancement- New feature or improvementdocumentation- Documentation improvementsgood first issue- Good for newcomershelp wanted- Extra attention needed
- Adding new events to
lib/events.ts - Updating event information
- Improving copy and descriptions
- New UI components
- Animation enhancements
- Accessibility improvements
- Performance optimizations
- Improving README
- Adding code comments
- Creating tutorials or guides
- Fixing reported issues
- Improving error handling
- Cross-browser compatibility
If you have questions about contributing:
- Check existing documentation
- Look through closed issues and PRs
- Open a new issue with the
questionlabel - Reach out to maintainers
Thank you for contributing to AustroVis! 🎉