Welcome Contributors!
Thank you for your interest in contributing to Atomix QRGen! This guide will help you get started.Getting Started
Prerequisites
Before you begin, ensure you have:- Node.js 18 or higher
- npm (or any compatible Node package manager)
- Git for version control
- A code editor (VS Code recommended)
Fork and Clone
-
Fork the repository on GitHub:
- Visit https://github.com/Ephistopheles/atomix-qrgen
- Click the “Fork” button in the top right
- Clone your fork locally:
- Add the upstream repository:
Install Dependencies
Run the Development Server
Development Workflow
1. Create a Branch
Always create a new branch for your work:feature/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringstyle/- Code style changestest/- Adding or updating tests
feature/add-sms-qr-typefix/wifi-password-validationdocs/update-readme
2. Make Your Changes
Follow the project’s coding standards:TypeScript
- Use TypeScript for all new code
- Define interfaces for component props
- Use proper type annotations
- Avoid
anytype when possible
Component Structure
- Follow the existing component hierarchy
- Use functional components with hooks
- Keep components focused and single-purpose
- Place components in appropriate directories
Styling
- Use Tailwind CSS utility classes
- Follow the existing color scheme
- Ensure responsive design (mobile-first)
- Test on multiple screen sizes
Validation
- Add validators for new QR types in
src/domain/validation/validators.ts - Include error messages in Spanish (current language)
- Test edge cases and validation rules
Encoding
- Add encoders for new QR types in
src/domain/encoders/encoders.ts - Follow standard QR code format specifications
- Test encoded output with QR code readers
3. Test Your Changes
Before submitting:-
Manual Testing
- Test all affected functionality
- Verify on different browsers (Chrome, Firefox, Safari)
- Test on mobile devices
- Scan generated QR codes with real devices
-
Build Test
- Ensure the production build works
- Check for build errors or warnings
-
Code Quality
- Ensure TypeScript compiles without errors
- Remove console.log statements
- Check for unused imports
4. Commit Your Changes
Write clear, descriptive commit messages:- Use present tense (“Add feature” not “Added feature”)
- Start with a verb (Add, Fix, Update, Refactor, etc.)
- Keep first line under 72 characters
- Add detailed description if needed
5. Push to Your Fork
6. Create a Pull Request
- Go to your fork on GitHub
- Click “Compare & pull request”
- Fill out the PR template:
- Title: Clear, descriptive summary
- Description: What changes you made and why
- Testing: How you tested the changes
- Screenshots: If UI changes, include before/after images
Contribution Ideas
New QR Code Types
Add support for additional QR code formats:- SMS - Send text messages
- Email - Compose emails
- Phone - Make phone calls
- Location - GPS coordinates
- Social Media - Profile links
- App Store - App download links
-
Define type in
src/domain/types/qr.ts: -
Create encoder in
src/domain/encoders/encoders.ts: -
Add validator in
src/domain/validation/validators.ts: -
Create form component
src/components/forms/sms/sms-form.tsx -
Register in
src/domain/form/form-registry.ts: -
Add to QR type selector in
src/components/qr-code-app/cards/qr-types/card-qr-type.tsx
UI Improvements
- Dark mode support
- Additional color themes
- QR code customization (colors, logos)
- Improved mobile UI
- Accessibility improvements (ARIA labels, keyboard navigation)
Features
- QR code history (in-memory only for privacy)
- Batch QR code generation
- Export QR codes in multiple formats (SVG, PDF)
- QR code scanning (reverse functionality)
- Internationalization (i18n) support
Bug Fixes
Check the GitHub Issues for:- Reported bugs
- Feature requests
- Enhancement ideas
Code Review Process
- Automated Checks: Your PR must pass any automated checks
- Code Review: Maintainers will review your code
- Feedback: Address any requested changes
- Approval: Once approved, your PR will be merged
Review Criteria
- Code quality and readability
- Follows project conventions
- Properly tested
- No breaking changes (or properly documented)
- Documentation updated if needed
Privacy & Security Guidelines
Critical: This app is privacy-focused. All contributions must maintain this principle:- ✅ All processing must happen client-side
- ✅ No data transmission to external servers
- ✅ No analytics or tracking code
- ✅ No cookies or localStorage for sensitive data
- ❌ Do not add backend requirements
- ❌ Do not add third-party tracking
- ❌ Do not store user data persistently
Questions?
If you have questions:- Check existing documentation in the
/docsfolder - Search GitHub Issues
- Create a new issue with the “question” label
- Contact the maintainer: [email protected]
Code of Conduct
Our Pledge
We pledge to make participation in our project a harassment-free experience for everyone, regardless of:- Age, body size, disability, ethnicity
- Gender identity and expression
- Level of experience
- Nationality, personal appearance, race, religion
- Sexual identity and orientation
Our Standards
Positive behavior:- Using welcoming and inclusive language
- Being respectful of differing viewpoints
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards others
- Trolling, insulting/derogatory comments, personal attacks
- Public or private harassment
- Publishing others’ private information without permission
- Other conduct which could reasonably be considered inappropriate