Thanks for your interest in contributing to Murphy. We're happy to have you here.
Please take a moment to review this document before submitting your first pull request. We also strongly recommend that you check for open issues and pull requests to see if someone else is working on something similar.
If you need any help, feel free to open an issue or reach out to the maintainers.
- We use pnpm for development
- We use Next.js for our documentation and examples
- We follow a component-based architecture with shadcn UI components
| Path | Description |
|---|---|
/app |
The Next.js application for the website |
/components |
The React components for the website |
/lib |
Utility functions and shared code |
/types |
TypeScript type definitions |
/content |
Documentation content |
/config |
Configuration files |
You can fork this repo by clicking the fork button in the top right corner of this page.
git clone https://github.com/murphy-codelabs/murphycd murphygit checkout -b my-new-branchpnpm installpnpm devWe use a registry system for developing components. You can find the source code for the components under app/components/ui/murphy.
app
└── components
└── ui
├── murphy
├── connect-wallet-button.tsx
└── index.tsxWhen adding or modifying components, please ensure that:
- You make the changes for every style
- You update the documentation
- Update
registry.jsonregistry docs . - You run
pnpm registry:buildto update the registry
All Murphy components must be exported from the components/ui/murphy/index.tsx file to make them automatically available in MDX documentation without requiring explicit imports.
When you create a new component:
- Create your component file in the
components/ui/murphydirectory (e.g.,my-new-component.tsx) - Export your component from the index file:
// In components/ui/murphy/index.tsx
import { MyNewComponent } from "./my-new-component";
export {
// ... existing exports
MyNewComponent
};Before you create a Pull Request, please check whether your commits comply with the commit conventions used in this repository.
When you create a commit we kindly ask you to follow the convention category(scope or module): message in your commit message while using one of the following categories:
feat / feature: all changes that introduce completely new code or new featuresfix: changes that fix a bug (ideally you will additionally reference an issue if present)refactor: any code related change that is not a fix nor a featuredocs: changing existing or creating new documentationstyle: code style changes (formatting, etc.)perf: performance improvementstest: all changes regarding testschore: all changes to the repository that do not fit into any of the above categories
e.g. feat(components): add new prop to the avatar component
If you are interested in the detailed specification you can visit https://www.conventionalcommits.org/ or check out the Angular Commit Message Guidelines.
- Ensure your code follows the style and conventions of the project
- Update documentation if necessary
- Add tests for new functionality
- Make sure all tests pass
- Submit your pull request with a clear description of the changes
If you have an idea for a new feature, please open a discussion on GitHub. We appreciate your input and will be happy to discuss how it might fit into the project roadmap.
Please be respectful and considerate of others when contributing to this project. We strive to create a welcoming and inclusive environment for everyone.
By contributing to Murphy, you agree that your contributions will be licensed under the project's MIT License.