Welcome Contributors!
Thank you for your interest in contributing to Estudo Organizado! This project is designed to help students preparing for public exams (concursos públicos) organize their study sessions using the PDCA cycle methodology.Estudo Organizado is built with Vanilla JavaScript (no frameworks), prioritizing performance and simplicity. The project is a Progressive Web App (PWA) with offline capabilities.
How to Contribute
Getting Started
- Fork the repository on GitHub
- Clone your fork locally:
- Create a new branch for your feature or fix:
- Start the development server (see options in README.md):
Development Workflow
Understanding the Wave System
Understanding the Wave System
The project uses a “Wave” versioning system for major features:
- Wave 30: PWA Native implementation with Service Worker
- Wave 34: Full-screen Predictive Analysis tab
- Waves 35-36: Smart Analysis Management with history
- Wave 39: Separation between Assuntos (exam topics) and Aulas (course materials)
Making Changes
- Make your changes following our code style guide
- Test thoroughly using our testing approach
- Commit your changes with clear, descriptive messages:
- Push to your fork:
Pull Request Process
Before Submitting
- Ensure your code follows the JavaScript conventions used in the project
- Test your changes across different browsers (Chrome, Firefox, Safari, Edge)
- Test PWA functionality if you modified Service Worker or manifest
- Verify IndexedDB operations work correctly
- Check that offline mode still functions properly
Submitting Your PR
- Create a Pull Request from your fork to the main repository
- Write a clear PR description that includes:
- What changes were made
- Why these changes were necessary
- Which features/modules are affected
- Testing performed (browsers, devices, scenarios)
- Reference related issues using
#issue-number - Wait for review - maintainers will review and provide feedback
PR Review Criteria
Your PR will be evaluated on:- Code quality: Clean, readable, following project conventions
- Functionality: Works as intended without breaking existing features
- Performance: Doesn’t negatively impact app performance
- Documentation: Code comments where necessary
- Testing: Evidence of thorough testing
Reporting Issues
Bug Reports
When reporting bugs, please include:- Clear title describing the issue
- Steps to reproduce:
- What you did
- What you expected to happen
- What actually happened
- Environment details:
- Browser and version
- Operating system
- Device type (desktop/mobile)
- Screenshots or error messages if applicable
- Console errors (open DevTools > Console)
Feature Requests
When requesting features, please include:- Clear description of the proposed feature
- Use case: Why is this feature needed?
- How it fits with existing functionality
- Potential implementation ideas (optional)
Example Feature Request Template
Example Feature Request Template
Project Modules
Understand which module your contribution affects:| Module | Files | Description |
|---|---|---|
| Store | src/js/store.js | State management, IndexedDB |
| Logic | src/js/logic.js | Business rules, performance calculations |
| Views | src/js/views.js | UI rendering, DOM manipulation |
| Relevance | src/js/relevance.js | NLP, fuzzy matching for exam analysis |
| Cloud Sync | src/js/cloud-sync.js | Cloudflare Worker synchronization |
| Service Worker | sw.js | PWA offline caching |
Community Guidelines
- Be respectful and constructive in all interactions
- Help others who are contributing or asking questions
- Focus on the code, not the person
- Assume good intentions from all contributors
- Ask questions if something is unclear
License
By contributing to Estudo Organizado, you agree that your contributions will be licensed under the MIT License. See the LICENSE file for details.
Questions?
If you have questions about contributing:- Check existing issues and pull requests
- Review the documentation in the docs folder
- Reach out to the maintainers through GitHub issues