Use this checklist when adapting this template for your own project.
- Read
QUICKSTART.md(5 minutes) - Read
README.md(10 minutes) - Run the example application (
python src/main.py) - Run the tests (
pytest tests/) - Understand the MVVM structure
- Update
README.mdwith your project name - Update
README.mdwith your project description - Update
src/utils/constants.pywith your app name - Update
pyproject.tomlwith your project metadata - Update
LICENSEwith your name/organization - Update repository URL in clone commands
- Update
.github/workflows/ci.ymlif needed - Configure branch protection rules
- Set up Codecov (optional)
- Add repository secrets if needed
- Initialize as template:
git init(if starting fresh) - Update
.gitignorefor your specific needs - Create initial commit
Once you understand the structure, remove the examples:
- Delete
src/models/example_model.py(or keep as reference) - Delete
tests/unit/test_example_model.py - Create your first model in
src/models/ - Create tests for your model
- Delete
src/services/example_service.py(or keep as reference) - Create your first service in
src/services/ - Inject your service into ViewModels
- Keep or modify
src/viewmodels/main_viewmodel.py - Delete
tests/unit/test_main_viewmodel.pyor update for your VM - Create ViewModels for your features
- Write tests for your ViewModels
- Modify
src/views/main_window.pyfor your UI - Create additional views as needed
- Connect views to your ViewModels
- Update
tests/integration/test_application.pyfor your app - Add integration tests for your workflows
- Update window title in
src/views/main_window.py - Update window size
- Design your layout
- Add your widgets
- Style your application (QSS/stylesheets)
- Create dialog classes if needed
- Create custom widgets if needed
- Add icons and resources
- Add your application icon
- Add other resources (images, fonts, etc.)
- Set up Qt Resource System if needed
- Add configuration file support (JSON, YAML, etc.)
- Create config service if needed
- Add settings/preferences dialog
- Store user preferences
- Add your specific dependencies to
requirements.txt - Pin versions for production
- Test with different Python versions
- Update
pyproject.tomldependencies
- Achieve 90%+ coverage for Models
- Achieve 90%+ coverage for ViewModels
- Mock all external dependencies
- Test edge cases and error handling
- Test complete user workflows
- Test with real services (or test doubles)
- Test cross-component communication
- Create test plan document
- Test on all target platforms
- Test with different screen sizes
- Test accessibility features
- Install PyInstaller:
pip install pyinstaller - Create spec file:
pyi-makespec src/main.py - Customize spec file
- Test build:
pyinstaller your_app.spec - Test executable on clean system
- Consider Briefcase (modern option)
- Consider Nuitka (compiled Python)
- Create Linux package (.deb, .rpm, AppImage, Flatpak, Snap)
- Set up auto-updates mechanism
- Create download page
- Prepare release notes
- Add build workflow
- Add packaging workflow
- Add release workflow
- Add deployment workflow
- Add performance tests
- Add UI tests (if applicable)
- Add security scanning
- Add dependency checking
- Write user guide
- Create screenshots/GIFs
- Document features
- Create FAQ
- Document architecture decisions
- Create API documentation
- Document build process
- Document deployment process
- Update all docstrings
- Add inline comments for complex logic
- Document non-obvious decisions
- Keep AGENTS.md updated with patterns
- Add logging to file
- Add crash reporting
- Add analytics (if appropriate)
- Add auto-update mechanism
- Add plugin system
- Add themes/skins support
- Add internationalization (i18n)
- Add keyboard shortcuts
- Add system tray integration
- Add command-line interface
- Choose database (SQLite, PostgreSQL, etc.)
- Add database service
- Add migration system
- Add database tests
- Add HTTP client service
- Add WebSocket support
- Add authentication
- Handle network errors gracefully
- Create error dialog class
- Add user-friendly error messages
- Add error reporting mechanism
- Log errors appropriately
- Add debug mode
- Add verbose logging option
- Add development tools/utilities
- Document common issues
- All tests passing
- Code coverage > 90%
- No linting errors
- Type checking passes
- Documentation complete
- README accurate
- License chosen and applied
- Version number set
- No hardcoded secrets
- No sensitive data in repository
- Error handling comprehensive
- User experience smooth
- Performance acceptable
- Memory leaks checked
- License file updated
- Third-party licenses documented
- Copyright notices added
- Privacy policy (if applicable)
- Terms of service (if applicable)
- Update dependencies regularly
- Monitor for security issues
- Review and respond to issues
- Review and merge PRs
- Update documentation
- Write release notes
- Set up issue templates
- Set up PR templates
- Create CODE_OF_CONDUCT.md
- Create SECURITY.md
- Respond to community feedback
- Don't delete examples immediately - Keep them as reference until you understand the patterns
- Start small - Add one feature at a time
- Test as you go - Don't accumulate untested code
- Follow the patterns - The template structure is designed for scalability
- Ask for help - Use the GitHub Copilot instructions and AGENTS.md
- Keep MVVM strict - Don't mix concerns between layers
- Document decisions - Future you will thank present you
- Automate everything - Use CI/CD, pre-commit hooks, etc.
If you need to learn more:
- Review example code in this template
- Read PySide6 documentation
- Study MVVM pattern in depth
- Learn SOLID principles
- Practice TDD (Test-Driven Development)
- Study Qt Designer for UI design
- You understand MVVM architecture
- You can create a feature end-to-end
- You can write tests for your code
- You understand dependency injection
- You can use signals/slots correctly
- You maintain SOLID principles
- Your tests are passing
- Your code is documented
Now go build something amazing! 🚀
Use this space to track your project-specific customizations:
Project Name: ___________________________
Start Date: ___________________________
Target Release: ___________________________
Key Features:
-
-
-
Custom Dependencies:
-
-
-
Platform Targets:
☑ Linux only (Python 3.14, PySide6 6.8.0+)
Notes: