Thank you for your interest in contributing to PayeTonGréviste! This app helps people discover Strike funds through a fun, Tinder-like interface with fake activist profiles.
⚠️ Important: This project boycotts Google services in solidarity with the strike movement. We do not use Google Analytics, Google Fonts, or any other Google services. Please avoid suggesting Google-based solutions.
PayeTonGréviste is a Strike fund discovery app where users anonymously browse fake activist profiles to find and support real Strike funds. It's not a real matching app - it's a gamified way to discover and support important causes.
- Node.js 18+ and npm
- Git
- A code editor (VS Code recommended)
-
Fork and clone the repository
git clone https://github.com/your-username/paye-ton-greviste.git cd paye-ton-greviste -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to
http://localhost:3000
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run test- Run testsnpm run test:ui- Run tests with UInpm run test:run- Run tests oncenpm run lint- Run ESLint
src/
├── components/ # Reusable UI components
│ ├── __tests__/ # Component tests
│ ├── Card.tsx # Swipeable profile card
│ ├── SwipeDeck.tsx # Card stack with actions
│ └── ...
├── pages/ # Page components
│ ├── __tests__/ # Page tests
│ ├── DiscoverPage.tsx # Main swipe interface
│ └── ...
├── lib/ # Utility functions
├── store.ts # Zustand state management
└── styles/ # Global styles
- Use strict TypeScript
- Define types for all props and state
- Use interfaces for object shapes
- Prefer
typeoverinterfacefor simple unions
- Use functional components with hooks
- Use descriptive component and function names
- Keep components small and focused
- Use proper prop types and default values
- Use CSS modules or styled-components
- Follow mobile-first responsive design
- Use CSS custom properties for theming
- Keep styles co-located with components
- Use PascalCase for components:
UserProfile.tsx - Use camelCase for utilities:
formatDate.ts - Use kebab-case for CSS:
user-profile.css
- Write tests for all new components
- Test user interactions and edge cases
- Use descriptive test names
- Follow AAA pattern: Arrange, Act, Assert
# Run all tests
npm run test
# Run tests in watch mode
npm run test:ui
# Run tests once
npm run test:rundescribe('ComponentName', () => {
it('should render correctly', () => {
// Test implementation
});
it('should handle user interaction', () => {
// Test implementation
});
});When reporting bugs, please include:
- Clear description of the issue
- Steps to reproduce the problem
- Expected behavior vs actual behavior
- Screenshots if applicable
- Browser/device information
- Console errors if any
When requesting features, please include:
- Clear description of the feature
- Use case and why it's needed
- Mockups or examples if applicable
- Impact on existing functionality
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests for new functionality
- Run tests and ensure they pass
- Run linting and fix any issues
- Update documentation if needed
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Tests pass locally
- [ ] New tests added for new functionality
- [ ] Manual testing completed
## Screenshots
If applicable, add screenshots
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No console errors- Automated checks must pass
- Code review by maintainers
- Testing on different devices/browsers
- Approval and merge
- Strike Fund Integration: Connect fake profiles to real Strike funds
- Fund Database: Create and maintain fund database
- Fund Verification: Ensure all funds are legitimate
- Accessibility: Improve screen reader support
- Mobile Experience: Enhance mobile usability
- Internationalization: Add multi-language support
- Performance: Optimize loading and rendering
- Analytics: Add anonymous usage tracking
- Testing: Increase test coverage
- Documentation: Improve code documentation
- Advanced Features: Video profiles, AR features
- Platform Support: React Native, desktop app
- Integrations: Social media, payment systems
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Respect different opinions and approaches
- Use clear, descriptive commit messages
- Ask questions if something is unclear
- Provide context in pull requests
- Be patient with review process
- GitHub Issues: For bugs and feature requests
- Discussions: For questions and general discussion
- Discord/Slack: For real-time chat (if available)
This project is for educational/activist purposes. By contributing, you agree that your contributions will be licensed under the same license as the project.
Thank you for contributing to PayeTonGréviste! Together, we can help people discover and support important Strike funds. 🚀