CONTRIBUTING.md
July 23, 2025 · View on GitHub
Contributing to
NetPad
Last updated: Nov 28th, 2024 :book:
Thank you for considering contributing to NetPad! We’re excited to have you join the project.
- How to Contribute
- Submitting Changes
- Build & Run
- Issue Reporting
- Documentation Guidelines
- License
- Contact
- Acknowledgments
How to Contribute :star:
- Report bugs or request features through the issue tracker.
- Fork
the repository, create a branch, make
your changes,
and submit
a pull request
to the
mainbranch.
Submitting Changes
- Branching Strategy: Create a branch for your work
- For new features or changes use the
feat/prefix, example:feat/my-new-feature - For bugs or fixes use the
fixprefix, example:fix/my-fix
- For new features or changes use the
- Commit Messages: Follow this format:
Add contributing guidelines. - Pull Requests: Ensure your PR includes tests and follows our coding standards. A small * description* of the changes as well as the issue number (if applicable).
Pull request example :arrow_down:
Added contributing guidelines to make it easier for new contributors to get started.
Changes Made:
- Added a new CONTRIBUTING.md file.
- Updated the README.md file to include a link to the new CONTRIBUTING.md file.
Build & Run :hammer_and_pick:
NetPad has a .NET backend that does all the heavy lifting and a JavaScript interface. The user interface can be hosted in a number of different environments, or shells:
- Web Browser: where you access the NetPad interface from any web browser.
- Electron Desktop App: a cross-platform desktop application that uses Electron.js to host the NetPad interface.
- Tauri Desktop App: a cross-platform native desktop application written in Rust that hosts the NetPad interface. It is smaller than Electron and uses less system resources.
Prerequisites
- Node v22+
- .NET SDK 9.x
- EF Core tools
Start by cloning, or forking, the repository:
git clone https://github.com/tareqimbasher/NetPad.git && cd NetPad
Web Browser
- Run the JavaScript SPA
# Install dependencies
cd src/Apps/NetPad.Apps.App/App/
npm install
# Start the development web server
npm run start-web
- Start the development web server
cd src/Apps/NetPad.Apps.App/
dotnet watch run --environment Development
Navigate to the app from your web browser at http://localhost:57940.
Note
Creating new SQLite database connections is not supported when NetPad is used in a browser.
Electron Desktop App
- Run the JavaScript SPA
# Install dependencies
cd src/Apps/NetPad.Apps.App/ElectronHostHook
npm install
cd ../App
npm install
# Start the development web server
npm start
- Run the Electron app
cd src/Apps/NetPad.Apps.App/
# Install the `electron-sharp` dotnet tool
dotnet tool install ElectronSharp.CLI -g
# Start in watch mode (remove '/watch' to run without watch mode)
electron-sharp start /watch /manifest electron.manifest.dev.js
# For macOS ARM, append the following to the 'electron-sharp start' command
/target custom "osx-arm64;mac" /electron-arch arm64
[!HINT] If invoking any of those commands gives you strange errors (like .NET 6 not installed), it means you've typed electronize instead of electron-sharp.
Tip
The very first electron-sharp start is slow due to dependency downloads. Later runs are much
faster!
Tauri (Native Shell) Desktop App
You will need to have the Rust toolchain installed to build the Tauri app.
- Install JavaScript SPA dependencies
cd src/Apps/NetPad.Apps.App/App
npm install
- Run the .NET app
cd src/Apps/NetPad.Apps.App
dotnet watch run --environment Development --tauri
- Run the Tauri app
cd src/Apps/NetPad.Apps.Shells.Tauri/TauriApp
npm install
npx tauri dev
Packaging :package:
The Electron app is built and packaged using
electron-builder. Configuration is in the electron.manifest.js
file.
Build the app for the desired platform from the root directory of the NetPad.Apps.App project:
# For x64:
electron-sharp build /target win /manifest electron.manifest.js /PublishSingleFile false
electron-sharp build /target osx /manifest electron.manifest.js /PublishSingleFile false
electron-sharp build /target linux /manifest electron.manifest.js /PublishSingleFile false
# For macOS ARM:
electron-sharp build /target custom "osx-arm64;mac" /electron-arch arm64 /manifest electron.manifest.js /PublishSingleFile false
Packaged files can be found in the bin/Desktop folder.
Important
To Build flatpak files the flatpak and flatpak-builder packages need to be installed. On
Linux, the /scripts/package-electron.sh script can be used to package the Electron app, in which
case packaged files can be found in the /dist/ folder.
See the ElectronSharp docs for additional CLI options when packaging the app, and electron-builder for additional configuration options.
Issue Reporting
- Bug Reports: Include steps to reproduce and environment details.
- Feature Requests: Clearly describe the feature and why it’s needed.
License
By contributing, you agree that your contributions will be licensed under the MIT LICENSE.
Contact
If you have any questions, feel free to open an issue or contact us at our Discord Server
At our Discord, you can find the latest announcements, troubleshooting, ideas and feedback, and more.