Thank you for your interest in contributing to Dayflow! This guide will help you get started.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/JerryZLiu/Dayflow/llms.txt
Use this file to discover all available pages before exploring further.
How to Contribute
Dayflow is an open-source project and welcomes contributions from the community.Before You Start
Check existing issues
Browse GitHub Issues to see if your idea or bug has already been reported.
Open an issue for large changes
For significant features or architectural changes, please open an issue first to discuss scope and approach.
This helps avoid duplicate work and ensures your contribution aligns with the project’s direction.
Types of Contributions
We welcome all types of contributions:- Bug fixes - Fix issues reported in GitHub Issues
- Features - Add new functionality (discuss in an issue first)
- Documentation - Improve README, code comments, or guides
- Testing - Add unit tests or UI tests
- Performance - Optimize battery usage, memory, or processing speed
- Refactoring - Improve code quality and maintainability
Code Style and Conventions
Dayflow follows standard Swift and SwiftUI conventions.Swift Style Guide
- Indentation: Use 2 spaces (not tabs)
- Line length: Aim for 100 characters, but readability takes precedence
- Naming:
- Types:
PascalCase(e.g.,TimelineCard,CaptureManager) - Variables/functions:
camelCase(e.g.,startRecording(),apiKey) - Constants:
camelCase(e.g.,maxStorageSize,defaultInterval)
- Types:
- Access control: Use the most restrictive access level appropriate
- Prefer
privateoverfileprivatewhen possible - Use
internal(default) for app-internal APIs - Only use
publicfor framework boundaries
- Prefer
SwiftUI Best Practices
- View composition: Break down complex views into smaller, reusable components
- State management: Use
@State,@Binding,@ObservedObject, and@EnvironmentObjectappropriately - Preview providers: Include SwiftUI previews for all custom views
- Modifiers: Chain view modifiers logically (layout → styling → behavior)
Code Organization
Comments and Documentation
- Public APIs: Use doc comments for public functions and types
- Complex logic: Add inline comments explaining “why”, not “what”
- TODOs: Use
// TODO:for future improvements - FIXMEs: Use
// FIXME:for known issues that need attention
Testing Requirements
All contributions should include appropriate tests.Unit Tests
Located inDayflowTests/, unit tests verify individual components and logic.
Example:
UI Tests
Located inDayflowUITests/, UI tests verify user interface behavior.
When to add tests:
- Always: New functionality, bug fixes, refactored code
- Encouraged: Edge cases, error handling, complex logic
See Development Setup for more details on running tests.
Submitting Pull Requests
Follow these steps to submit a pull request:Create a branch
Create a feature branch from Branch naming conventions:
main:- Features:
feature/short-description - Bug fixes:
fix/issue-description - Documentation:
docs/what-changed
Make your changes
Implement your changes following the code style guidelines.
- Write clear, focused commits
- Include tests for new functionality
- Update documentation if needed
Commit your changes
Write descriptive commit messages:Good commit messages:
Fix crash when opening timeline with no dataAdd Ollama model selection in settingsImprove battery efficiency of capture loop
- ❌
Fixed stuff - ❌
Update code - ❌
WIP
Push and create PR
Push your branch and create a pull request:Then visit GitHub and click “Create Pull Request”.
PR Review Process
- Automated checks - Tests must pass before review
- Code review - Maintainers will review your code and provide feedback
- Revisions - Address any requested changes
- Merge - Once approved, your PR will be merged
Development Workflow
Recommended workflow for contributors:License
By contributing to Dayflow, you agree that your contributions will be licensed under the MIT License.MIT License Summary
Dayflow is licensed under the MIT License. See the LICENSE file for the full text. Key points:- ✅ Free to use, modify, and distribute
- ✅ Commercial use allowed
- ✅ Must include copyright notice and license text
- ⚠️ Provided “AS IS” without warranty of any kind
Acknowledgements
Dayflow is built with the help of these excellent open-source projects:- Sparkle - Battle-tested macOS auto-update framework
- Google AI Gemini API - Cloud-based AI analysis
- Ollama - Local LLM inference
- LM Studio - Local model support with offline operation
- OpenAI Codex CLI - ChatGPT CLI integration
- Claude Code - Claude CLI integration
Questions?
If you have questions about contributing:- Check the README
- Review existing issues
- Open a new issue for discussion