Welcome Contributors!
Thank you for your interest in contributing to Platzi Viewer! This guide will help you get started with development and ensure your contributions align with the project’s standards.Getting Started
Prerequisites
- Python 3.7+: Backend server and scripts
- Modern browser: Chrome, Firefox, Safari, or Edge
- Git: Version control
- Google Cloud account: For Drive API access (if working with Drive features)
Development Setup
Configure service account
- Create a Google Cloud project
- Enable Google Drive API
- Create a service account
- Download credentials as
service_account.json - Share Drive folder with service account email
Start development server
Development Workflow
Branch Strategy
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation updatesrefactor/description- Code refactoringtest/description- Test additions
Making Changes
Test your changes
- Test in multiple browsers
- Verify responsive design (mobile, tablet, desktop)
- Check console for errors
- Test with different video sizes
Coding Standards
JavaScript (Frontend)
Style Guide
Style Guide
- ES6+: Use modern JavaScript features
- Modules: Organize code in importable modules
- No jQuery: Pure JavaScript or modern frameworks only
- Async/await: Prefer over promise chains
Component Pattern
Component Pattern
Follow the View lifecycle pattern:
Error Handling
Error Handling
Always handle errors gracefully:
Python (Backend)
PEP 8 Compliance
PEP 8 Compliance
Follow Python style guide:
- 4 spaces for indentation
- Snake_case for functions and variables
- PascalCase for classes
- Max line length: 120 characters
- Docstrings for all functions/classes
Type Hints
Type Hints
Use type annotations for better IDE support:
Logging
Logging
Use Python’s logging module:
CSS
BEM Methodology
BEM Methodology
Use Block Element Modifier naming:
CSS Variables
CSS Variables
Use CSS custom properties for theming:
Responsive Design
Responsive Design
Mobile-first approach:
Commit Message Convention
We follow Conventional Commits specification:Format
Types
| Type | Description | Example |
|---|---|---|
feat | New feature | feat(player): add keyboard shortcuts |
fix | Bug fix | fix(server): resolve memory leak in streaming |
docs | Documentation | docs(readme): update installation steps |
style | Code style changes | style: format with black |
refactor | Code refactoring | refactor(api): simplify error handling |
test | Add/modify tests | test(player): add unit tests for controls |
chore | Maintenance tasks | chore: update dependencies |
perf | Performance improvement | perf(cache): optimize JSON parsing |
Examples
Testing
Manual Testing Checklist
Before submitting a PR, test:- Browsers
- Devices
- Features
- Chrome/Chromium
- Firefox
- Safari (macOS)
- Edge
Unit Tests (Future)
When unit tests are implemented:Pull Request Process
PR Template
When creating a PR, include:Review Checklist
Reviewers will check:Functionality
Functionality
- Code works as expected
- No regressions introduced
- Handles edge cases
- Browser compatibility verified
Code Quality
Code Quality
- Follows style guidelines
- Well documented
- No code duplication
- Maintainable and extensible
Performance
Performance
- No negative performance impact
- Efficient resource usage
- No memory leaks
- Optimized for common use case
Security
Security
- No vulnerabilities introduced
- Input validation proper
- Sensitive data handled correctly
- Follows security best practices
Priority Issues
Great places to start contributing:High Priority 🔴
Fix CATEGORIES undefined
Critical error in
server.py:248Path sanitization
Security: Prevent directory traversal
Memory optimization
Reduce memory usage in video streaming
Race condition
Fix progress sync race condition
Medium Priority 🟡
- Complete app_v2 migration: Finish moving from legacy to modular frontend
- PWA implementation: Add service worker for offline support
- Enhanced search: Add filters (difficulty, duration, instructor)
- Mobile optimization: Improve touch gestures and layouts
Nice to Have 🟢
- Theme system: Multiple color themes
- Analytics dashboard: Learning statistics
- Social features: Share progress with friends
- Platzi API integration: Sync with official platform
Community Guidelines
Code of Conduct
- Be respectful: Treat all contributors with respect
- Be constructive: Provide helpful feedback
- Be inclusive: Welcome developers of all skill levels
- Be patient: Remember everyone is learning
Communication
GitHub Discussions
For questions and general discussion
GitHub Issues
For bugs and feature requests
Getting Help
- Documentation: Check these docs first
- Issues: Search existing issues before creating new ones
- Discussions: Ask questions in GitHub Discussions
- Email: [email protected] for sensitive matters
Recognition
All contributors are recognized:- GitHub Contributors: Automatic list on repository
- CHANGELOG: Mentioned in release notes
- README: Contributors section with avatars
Types of Contributions
- Code: Features, fixes, refactoring
- Documentation: Guides, tutorials, API docs
- Testing: Bug reports, test cases
- Design: UI/UX improvements, icons, themes
- Translation: Localization to other languages
Additional Resources
Architecture Guide
Understand the project structure
Scripts Reference
Learn about development scripts
API Documentation
Backend API reference
Configuration Guide
Setup and environment variables
License
By contributing, you agree that your contributions will be licensed under the same MIT License that covers this project.Thank you for contributing! Every contribution, no matter how small, helps make Platzi Viewer better for everyone.