Welcome Contributors!
Thank you for your interest in contributing to Midday! This guide will help you get started with contributing to the project.Midday is open source under the AGPL-3.0 license for non-commercial use. Commercial deployments require a commercial license.
Getting Started
Set Up Environment
Create environment variables file:You’ll need:
- Supabase project (database, auth, storage)
- Banking provider credentials (optional for testing)
- API keys for external services (optional)
Development Workflow
Creating a Branch
Create a descriptive branch for your changes:Making Changes
- Code Changes
- Database Changes
- UI Changes
- Documentation
-
Find the right location
- Apps:
apps/dashboard,apps/api, etc. - Shared code:
packages/
- Apps:
-
Follow code style
-
Test your changes
Committing Changes
Commit with Clear Message
Write clear, concise commit messages:Follow conventional commits format:
feat:- New featurefix:- Bug fixdocs:- Documentationstyle:- Code style changesrefactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
Creating a Pull Request
Open PR on GitHub
- Go to https://github.com/midday-ai/midday
- Click “Pull Requests” → “New Pull Request”
- Select your fork and branch
Contribution Guidelines
Code Style
Formatting
- Use Biome for formatting
- 2 spaces for indentation
- 80 character line width
- Run
bun formatbefore committing
TypeScript
- Use strict TypeScript
- Define types for all functions
- Avoid
anytypes - Use Zod for runtime validation
React
- Use functional components
- Prefer hooks over classes
- Keep components small and focused
- Use React 19 features when appropriate
Naming
- camelCase for variables/functions
- PascalCase for components/types
- UPPER_SNAKE_CASE for constants
- Descriptive, meaningful names
Testing
- Unit Tests
- Integration Tests
- E2E Tests
Write tests for business logic:
packages/db/src/test/example.test.ts
Documentation
Good documentation helps everyone:Areas to Contribute
Bug Fixes
Find and fix bugs:
- Check GitHub Issues
- Test edge cases
- Improve error handling
New Features
Add new functionality:
- Enhance existing features
- Add integrations
- Improve UI/UX
Performance
Optimize performance:
- Database query optimization
- Frontend bundle size
- API response times
Documentation
Improve docs:
- Fix typos
- Add examples
- Write guides
Tests
Increase test coverage:
- Write unit tests
- Add integration tests
- Test edge cases
Accessibility
Make Midday accessible:
- Keyboard navigation
- Screen reader support
- ARIA labels
Security
Reporting Security Issues
Instead, email: [email protected]Security Guidelines
When contributing:Never Commit Secrets
- No API keys, tokens, or passwords
- Use environment variables
- Add sensitive files to
.gitignore
Out of Scope
Do not report:- Clickjacking on non-sensitive pages
- Unauthenticated CSRF
- Missing security headers (CSP, DNSSEC, CAA)
- Email spoofing
- DoS attacks
- Social engineering
Communication
GitHub Issues
Report bugs and request features
GitHub Discussions
Ask questions and discuss ideas
Documentation
Read the full documentation
Website
Learn more about Midday
Code of Conduct
Our Standards
- Be respectful - Treat everyone with respect
- Be inclusive - Welcome diverse perspectives
- Be constructive - Provide helpful feedback
- Be patient - Maintainers are volunteers
Unacceptable Behavior
- Harassment or discrimination
- Trolling or insulting comments
- Personal attacks
- Publishing others’ private information
License
- AGPL-3.0
- Commercial License
For non-commercial use:
- Free to use and modify
- Must open source modifications
- Must maintain license
- Cannot use for commercial purposes
Recognition
Contributors are recognized in:- GitHub contributors list
- Release notes
- Public acknowledgment (if desired)
Next Steps
Architecture
Understand the system architecture
Database
Learn about the database schema
Monorepo
Master the monorepo structure
GitHub
Start contributing on GitHub
Thank you for contributing to Midday! Your contributions help make business management better for everyone.