Welcome Contributors
Thank you for your interest in contributing to Meelio! This guide will help you get started with contributing to our productivity and focus application. Meelio is built as a Turborepo monorepo with a fully offline-first architecture where all data is stored locally.Code of Conduct
We are committed to providing a welcoming and inclusive experience for everyone. We expect all contributors to:- Be respectful and considerate in communication
- Accept constructive criticism gracefully
- Focus on what is best for the community
- Show empathy towards other community members
- Avoid harassment, discrimination, or inappropriate behavior
Getting Started
Install Dependencies
Meelio uses pnpm as the package manager. Install dependencies:
Requirements: Node.js >= 22.0.0 and pnpm 9.15.4 (specified in package.json)
Development Workflow
Running in Development Mode
The web app runs on port 4000 by default (http://localhost:4000)
Available Commands
| Command | Description |
|---|---|
pnpm dev | Run all apps in development mode |
pnpm build | Build all apps |
pnpm build:web | Build only the web app |
pnpm build:extension | Build only the extension |
pnpm lint | Lint all packages |
pnpm format | Format code with Prettier |
pnpm test | Run all tests |
pnpm clean | Clean build artifacts |
Code Style and Linting
Meelio enforces code quality through ESLint and Prettier.ESLint Configuration
The project uses TypeScript ESLint with React-specific rules:- Base config:
eslint:recommended - TypeScript:
plugin:@typescript-eslint/recommended - React:
plugin:react-hooks/recommended - React Refresh: Enforces proper component exports
Running Linters
Code Formatting
Meelio uses Prettier for consistent code formatting:@ianvs/prettier-plugin-sort-imports- Automatically sorts importsprettier-plugin-tailwindcss- Sorts Tailwind CSS classes
Prettier is configured at the repository level and shared via
@repo/prettier-config package.Commit Conventions
We follow conventional commit messages for clarity and automated changelog generation:Format
Types
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, missing semicolons, etc.)refactor: Code refactoring without feature changesperf: Performance improvementstest: Adding or updating testschore: Maintenance tasks, dependency updatesbuild: Build system or dependency changesci: CI/CD configuration changes
Examples
Pull Request Process
Ensure Quality
- All tests pass (
pnpm test) - No linting errors (
pnpm lint) - Code is formatted (
pnpm format) - Build succeeds (
pnpm build)
Write Clear Description
Provide a clear description of:
- What changes you made
- Why you made them
- Any breaking changes
- Screenshots (if UI changes)
Project Structure Overview
Understanding the monorepo structure will help you navigate the codebase:Apps
Packages
Key Directories in @repo/shared
components/- Reusable React componentshooks/- Custom hooks for state and side effectsstores/- Zustand stores for global state managementtypes/- TypeScript interfaces and typesutils/- Helper functions and utilitieslib/- Third-party library configurationsdata/- Static data and constantsservices/- Business logic and servicesi18n/- Internationalization files
Finding Issues to Work On
Look for issues labeled:good first issue- Great for newcomershelp wanted- Contributions welcomebug- Bug fixes neededenhancement- Feature requests
Questions?
If you have questions:- Check existing issues and discussions
- Open a new discussion on GitHub
- Review the documentation
License
By contributing to Meelio, you agree that your contributions will be licensed under the MIT License.Thank you for contributing to Meelio! Your efforts help make productivity tools better for everyone.