Thank you for your interest in contributing to CoDesign! This document provides guidelines and information for contributors.
CoDesign aims to democratize design tooling by offering a community-owned platform where anyone can contribute, extend, and innovate. We believe that design tools should be open, transparent, and accessible to everyone.
- Use the GitHub Issues page
- Include a clear description of the bug
- Provide steps to reproduce
- Include system information and screenshots if applicable
- Open a new issue with the "enhancement" label
- Describe the feature and its benefits
- Consider the impact on existing functionality
- Discuss with the community before implementation
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Node.js 18+
- MongoDB 6+
- Git
-
Fork and Clone
git clone https://github.com/YOUR_USERNAME/codesign.git cd codesign -
Install Dependencies
npm run install:all
-
Environment Setup
cp env.example .env # Edit .env with your configuration -
Start Development Servers
npm run dev
- Use ESLint and Prettier for code formatting
- Follow TypeScript best practices
- Write meaningful commit messages
- Include JSDoc comments for complex functions
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changesrefactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
- Write unit tests for new features
- Ensure all tests pass before submitting PR
- Add integration tests for critical paths
- Test on multiple browsers/devices
codesign/
├── client/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # App router pages
│ │ ├── components/ # Reusable components
│ │ ├── lib/ # Utility functions
│ │ ├── hooks/ # Custom React hooks
│ │ └── types/ # TypeScript types
├── server/ # Express.js backend
│ ├── models/ # MongoDB models
│ ├── routes/ # API routes
│ ├── middleware/ # Express middleware
│ └── services/ # Business logic
└── docs/ # Documentation
git checkout -b feature/your-feature-name- Write code following project guidelines
- Add tests for new functionality
- Update documentation if needed
npm run test
npm run lint
npm run type-checkgit add .
git commit -m "feat: add new feature description"git push origin feature/your-feature-name
# Create PR on GitHub- Use JSDoc for function documentation
- Include examples for complex APIs
- Document configuration options
- Keep README files updated
- Document all API endpoints
- Include request/response examples
- Specify authentication requirements
- Document error codes and messages
- Unit tests with Jest and React Testing Library
- Component testing for UI components
- Integration tests for user workflows
- E2E tests for critical paths
- Unit tests for business logic
- API endpoint testing
- Database integration tests
- Performance and load testing
- DO NOT create public issues for security vulnerabilities
- Email security@codesign.dev (if available)
- Include detailed description and reproduction steps
- Allow time for response before public disclosure
- Never commit sensitive information
- Use environment variables for secrets
- Validate all user inputs
- Implement proper authentication/authorization
- Regular dependency updates
- All contributors will be listed in the README
- Significant contributions will be highlighted
- Contributors can add themselves to the contributors list
- Active contributors may be invited to become maintainers
- Maintainers have merge access and can review PRs
- Maintainers help guide project direction
- Use GitHub Discussions for questions
- Tag issues appropriately
- Provide context and code examples
- Be patient and respectful
## Bug Description
Brief description of the bug
## Steps to Reproduce
1. Step 1
2. Step 2
3. Step 3
## Expected Behavior
What should happen
## Actual Behavior
What actually happens
## Environment
- OS: [e.g., macOS, Windows, Linux]
- Browser: [e.g., Chrome, Firefox, Safari]
- Version: [e.g., 1.0.0]
## Additional Information
Screenshots, logs, or other relevant information## Feature Description
Brief description of the feature
## Problem Statement
What problem does this feature solve?
## Proposed Solution
How should this feature work?
## Alternatives Considered
What other approaches were considered?
## Additional Context
Any other information that might be helpfulThank you for contributing to CoDesign! Every contribution, no matter how small, helps make design tools more accessible and powerful for everyone.
Remember: This is a community project. Be kind, respectful, and helpful to other contributors. We're all here to learn and build something amazing together!