Development & Contribution Guide
Most user-facing documentation, guides, and FAQs are hosted at:
This README is focused on development, contribution, and release workflows for the SimplePage monorepo.
simplepage/
├── contracts/ # Smart contracts (Solidity, Foundry)
├── frontend/ # React web application
└── packages/
├── cli/ # Command-line interface
├── common/ # Shared utilities
├── node/ # Backend API services
├── repo/ # Repository management
└── test-utils/ # Testing utilities
- Each package has its own README with usage and development details.
- See contracts/README.md for smart contract dev.
- See frontend/README.md for frontend dev.
- See packages/cli/README.md for CLI usage.
pnpm installpnpm buildpnpm testcd frontend
pnpm devSee contracts/README.md for Foundry/Makefile usage.
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes and commit (
git commit -m 'Describe your change') - Push to your fork (
git push origin feature/my-feature) - Open a Pull Request
- Use ES6+ features and follow existing code style
- Use workspace dependencies with
workspace:*in package.json - Use pnpm for all package management (see below)
- Install dependencies:
pnpm install - Add a dependency to a package:
pnpm --filter <package-name> add <package>
- Run a script in a package:
pnpm --filter <package-name> run <script>
- Update dependencies:
pnpm update - Remove a dependency:
pnpm --filter <package-name> remove <package>
We use Changesets for versioning and changelog management.
- After making code changes, run:
pnpm changeset
- Follow the prompts to describe your changes and select affected packages.
- Commit the generated
.mdfile in.changeset/with your PR.
We have two release flows: Sepolia prereleases (-rc.N) and mainnet releases.
./release.sh sepoliaThe script automatically updates frontend/.env to set CHAIN_ID=11155111 (and creates the file if it does not exist). This keeps prerelease mode active so subsequent Sepolia releases increment -rc.N. The script prepares the release and may generate a content hash to publish on ENS (Sepolia/test domain if applicable).
./release.sh mainnetThe script automatically updates frontend/.env to set CHAIN_ID=1 (and creates the file if it does not exist). This exits prerelease mode (if active). After publishing, update your ENS domain's contenthash record with the new hash (e.g., via the ENS Manager or CLI).
-
See Changesets documentation for more details.
This project is licensed under the GPL-3.0-only License - see the LICENSE file for details.
- User Docs: https://simplepage.eth.link
- Issues: Report bugs and feature requests via GitHub Issues
- Discussions: Join community discussions on GitHub Discussions
Built with ❤️ for the decentralized web