Thank you for your interest in contributing to ClickHub! This document provides detailed guidelines for contributing your button designs to our Hacktoberfest 2025 showcase.
Before you start, make sure you have:
- A GitHub account
- Node.js 18+ installed
- Basic knowledge of HTML/CSS/JavaScript or React
- A creative button idea!
# Fork the repository on GitHub first!
git clone https://github.com/MRIEnan/clickhub_hactoberfest2025.git
cd clickhub
npm install
npm run devmkdir contributions/your-github-username
cd contributions/your-github-usernameEvery contribution MUST include:
const buttonMetadata = {
name: "Your Awesome Button",
author: "your-github-username",
description: "What makes your button special?",
type: "react", // "react", "html", or "vanilla"
tags: ["hover", "animation", "gradient"],
difficulty: "intermediate", // "beginner", "intermediate", "advanced"
preview: "Short preview description"
};
export default buttonMetadata;Choose ONE of these approaches:
Create button.jsx or button.tsx:
'use client';
import { useState } from 'react';
export default function YourButton() {
// Your component logic here
return (
<button className="your-styles">
Your Button Content
</button>
);
}Create these three files:
button.html:
<button class="your-button-class">
Your Button Content
</button>button.css:
.your-button-class {
/* Your styles here */
}button.js:
// Your JavaScript functionalityCreate README.md to explain your button:
# Your Button Name
Brief description of your button and what makes it unique.
## Features
- Feature 1
- Feature 2
## Technologies Used
- Technology 1
- Technology 2
## Inspiration
What inspired your design?- Minimum 4.5:1 color contrast ratio
- Keyboard navigation support (tab, enter, space)
- Screen reader friendly
- Focus indicators
- No external dependencies (except React hooks)
- No external API calls
- File size under 50KB total
- Works in modern browsers
- Responsive design (works on mobile)
- Clear interactive states (hover, focus, active)
- Smooth animations (< 500ms)
- Professional appearance
Use descriptive tags in your index.js:
Animation Tags:
animation,transition,keyframes,bounce,pulse,spin
Style Tags:
gradient,shadow,border,rounded,flat,3d
Effect Tags:
hover,glow,ripple,fade,slide,flip
Theme Tags:
dark,light,neon,retro,modern,minimal,glassmorphism
Technology Tags:
css3,flexbox,grid,transform,clip-path
npm run dev
# Visit http://localhost:3000- Button appears in the showcase
- All animations work smoothly
- Responsive on mobile devices
- Accessible with keyboard navigation
- No console errors
- Follows naming conventions
git add .
git commit -m "Add [ButtonName] button by [username]
- Brief description of the button
- Key features or animations
- Technology used (React/HTML/CSS/JS)"git push origin main- Go to your fork on GitHub
- Click "New Pull Request"
- Use the provided PR template
- Include screenshots/GIFs if possible
Your PR title should follow this format:
Add [ButtonName] by @username
PR description should include:
- What your button does
- Technologies used
- Any special features
- Screenshot or GIF (optional but appreciated)
- Offensive, discriminatory, or inappropriate material
- Copyrighted content without permission
- Political or religious content
- Spam or promotional content
- No external dependencies (beyond provided ones)
- No server-side code
- No database connections
- No file system access
- No cryptocurrency/blockchain integration
Great contributions may be featured:
- In our README showcase
- On social media
- In Hacktoberfest highlights
Need help?
- Check our examples
- Review existing issues
- Create a new issue with the "help wanted" label
- Join our community discussions
Common Issues:
- Button not showing: Check your
index.jsexport - Styles not working: Ensure CSS class names are unique
- TypeScript errors: Use
.jsxinstead of.tsxif needed
Congratulations! 🎊 Your button is now part of ClickHub!
- Share your contribution on social media
- Add ClickHub to your portfolio
- Consider contributing more buttons
- Help review other contributions
Happy Contributing! 🚀
Remember: This is about learning, sharing, and having fun. Don't worry if you're new to this - everyone starts somewhere!