diff --git a/.github/workflows/create-publish-release.yml b/.github/workflows/create-publish-release.yml new file mode 100644 index 0000000..149505e --- /dev/null +++ b/.github/workflows/create-publish-release.yml @@ -0,0 +1,92 @@ +name: 'My Workflow' + +on: + push: + branches: + - release + +jobs: + create-release: + runs-on: ubuntu-20.04 + outputs: + release_id: ${{ steps.create-release.outputs.result }} + + steps: + - uses: actions/checkout@v3 + - name: setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + - uses: pnpm/action-setup@v2 + with: + version: 7.18.2 + - name: get version + run: echo "PACKAGE_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV + - name: create release + id: create-release + uses: actions/github-script@v6 + with: + script: | + const { data } = await github.rest.repos.createRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + tag_name: `app-v${process.env.PACKAGE_VERSION}`, + name: `Desktop App v${process.env.PACKAGE_VERSION}`, + body: 'Take a look at the assets to download and install this app.', + draft: true, + prerelease: false + }) + + return data.id + + build-tauri: + needs: create-release + strategy: + fail-fast: false + matrix: + platform: [macos-latest, ubuntu-20.04, windows-latest] + + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v3 + - name: setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + - uses: pnpm/action-setup@v2 + with: + version: 7.18.2 + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-20.04' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + - name: install app dependencies and build it + run: pnpm i && pnpm build + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + releaseId: ${{ needs.create-release.outputs.release_id }} + + publish-release: + runs-on: ubuntu-20.04 + needs: [create-release, build-tauri] + + steps: + - name: publish release + id: publish-release + uses: actions/github-script@v6 + env: + release_id: ${{ needs.create-release.outputs.release_id }} + with: + script: | + github.rest.repos.updateRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: process.env.release_id, + draft: false, + prerelease: false + }) \ No newline at end of file diff --git a/.github/workflows/test-on-pr.yml b/.github/workflows/test-on-pr.yml new file mode 100644 index 0000000..1cd7c9e --- /dev/null +++ b/.github/workflows/test-on-pr.yml @@ -0,0 +1,32 @@ +name: 'test-on-pr' +on: [pull_request] + +jobs: + test-tauri: + strategy: + fail-fast: false + matrix: + platform: [macos-latest, ubuntu-20.04, windows-latest] + + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v3 + - name: setup node + uses: actions/setup-node@v3 + with: + node-version: 16 + - uses: pnpm/action-setup@v2 + with: + version: 7.18.2 + - name: install Rust stable + uses: dtolnay/rust-toolchain@stable + - name: install dependencies (ubuntu only) + if: matrix.platform == 'ubuntu-20.04' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf + - name: install app dependencies and build it + run: pnpm i && pnpm build + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/README.md b/README.md index 608b7b8..feb2d41 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,22 @@ -# Tauri + Next.js + Typescript +# Postr -This template should help get you started developing with Tauri, Next.js and Typescript. +Postr is a messaging desktop client for the decentralized nostr protocol, built with Rust, Next.js, and Typescript using the Tauri framework. It aims to provide a faster and more resource-efficient experience than web clients, while still offering the same messaging and eventually feed functionality. -## Recommended IDE Setup +## Features -- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) +- Fast and lightweight: Postr is built with Tauri's integration with Rust, making it fast and low on resource usage. +- Decentralized: Postr uses the decentralized nostr protocol, ensuring that your messages are secure and private. + + +## Installation + +To install and run Postr, follow these steps: + +1. Clone the repository: `git clone https://github.com/zpv/postr.git` +2. Navigate to the project directory: `cd postr` +3. Install dependencies: `pnpm install` +4. Run the app: `pnpm run tauri dev` + +## License + +Postr is released under the [MIT License](LICENSE). \ No newline at end of file