Welcome Contributors
Thank you for your interest in contributing to Mizen (Parse-n-Plate)! This guide will help you get started with contributing to the project.Getting Started
Prerequisites
- Node.js (version 20 or higher recommended)
- npm package manager
- Git for version control
- Basic knowledge of TypeScript and React
Setting Up Your Development Environment
- Clone the repository
- Install dependencies:
- Set up your environment variables (
.env.local) - Start the development server:
Development Workflow
Making Changes
- Start Small: Prefer smaller, incremental changes over large rewrites
- Test Your Changes: Run the development server and test thoroughly
- Run Linting: Before committing, ensure your code passes linting:
Or automatically fix issues:
Available Scripts
npm run dev— Start development servernpm run build— Create production buildnpm run start— Start production servernpm run lint— Run ESLint to check code qualitynpm run lint:fix— Automatically fix linting issuesnpm run docker:build— Build Docker imagenpm run docker:run— Run Docker container
Code Review Process
For large or risky changes, contributors should:
- Signal the change scope (⚠️ LARGE CHANGE or 🛑 HIGH RISK)
- Explain the reasoning and impact
- Wait for maintainer confirmation before proceeding
Documentation Updates
When contributing, please update documentation for:- New features or functionality
- Breaking changes
- Non-obvious logic or implementation details
- Changes to the README or other markdown files
Communication Guidelines
User Context
Mizen is built with a specific audience in mind:- Primary Audience: Product designers with limited coding experience
- Communication Style: Clear, step-by-step explanations
- Visual Signals: Use clear indicators (⚠️ 🛑 ⏸️ 📋 ✅) where appropriate
Commit Messages
Write clear, descriptive commit messages that explain:- What changed
- Why the change was necessary
Project-Specific Guidelines
TypeScript Requirements
- Use strict types throughout the codebase
- Avoid using
anytype - Define interfaces for complex data structures
- See Code Style Guidelines for more details
React Conventions
- Use functional components only (no class components)
- Utilize React hooks for state management and side effects
- Implement Error Boundaries for async operations and error handling
UI Development
- When modifying components under
components/ui/, review and updatesrc/app/globals.cssas needed - Use Solar Icons exclusively (prefer filled variants)
- Styling uses CSS Modules and Tailwind CSS
- For dropdowns/popovers, use
modal={false}to avoid scroll lock
Getting Help
If you need help or have questions:- Review the Code Style Guidelines
- Check the Changelog for recent updates
- Refer to project documentation in the repository