Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 35 additions & 36 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,54 +2,53 @@ name: CI

on:
push:
branches: [master]
branches:
- master
pull_request:
branches: [master]
branches:
- master

jobs:
lint-and-test:
validate:
name: Lint, Typecheck and Test
runs-on: ubuntu-latest
strategy:
matrix:
package:
- '@nexus-notes/crypto'
- '@nexus-notes/firebase'
- '@nexus-notes/core-logic'
- '@nexus-notes/ui'

steps:
- uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
- name: Setup Node 24
uses: actions/setup-node@v4
with:
version: 11
node-version: 24

- uses: actions/setup-node@v4
- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
node-version: 22
cache: 'pnpm'

- run: pnpm install --frozen-lockfile

- run: pnpm --filter ${{ matrix.package }} typecheck
continue-on-error: true

- run: pnpm --filter ${{ matrix.package }} test
version: 9

build-web:
runs-on: ubuntu-latest
needs: lint-and-test
steps:
- uses: actions/checkout@v4
- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- uses: pnpm/action-setup@v4
- name: Setup pnpm cache
uses: actions/cache@v4
with:
version: 11
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run Linting
run: pnpm lint:all

- run: pnpm install --frozen-lockfile
- name: Run Typechecking
run: pnpm typecheck:all

- run: pnpm --filter @nexus-notes/web build
- name: Run Unit Tests
run: pnpm test:all
52 changes: 52 additions & 0 deletions .github/workflows/deploy-web.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Deploy WebApp to Firebase

on:
release:
types: [published]

jobs:
deploy:
name: Build and Deploy Nuxt to Firebase Hosting
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node 24
uses: actions/setup-node@v4
with:
node-version: 24

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build Web App
run: pnpm --filter @nexus-notes/web generate

- name: Deploy to Firebase
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: ${{ secrets.GITHUB_TOKEN }}
firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT }}
projectId: markdown-notes # Deberás configurar este valor o extraerlo del Service Account
channelId: live
74 changes: 74 additions & 0 deletions .github/workflows/release-desktop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Release Desktop App

on:
release:
types: [published]

jobs:
release:
name: Build Tauri on ${{ matrix.platform }}
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest, windows-latest]
# Eliminado macos-latest según la preferencia de evitar ecosistema Apple

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node 24
uses: actions/setup-node@v4
with:
node-version: 24

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies (Ubuntu only)
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf

- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.platform == 'ubuntu-latest' && 'x86_64-unknown-linux-gnu' || 'x86_64-pc-windows-msvc' }}

- name: Rust cache
uses: swatinem/rust-cache@v2
with:
workspaces: apps/desktop/src-tauri -> target

- name: Install project dependencies
run: pnpm install --frozen-lockfile

- name: Build Desktop App
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: ${{ github.ref_name }}
releaseName: Nexus Notes Desktop v__VERSION__
releaseBody: 'Para descargar la app, revisa los assets al final de esta nota.'
releaseDraft: false
prerelease: false
projectPath: apps/desktop
62 changes: 62 additions & 0 deletions .github/workflows/release-mobile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Release Mobile App (Android)

on:
release:
types: [published]

jobs:
build:
name: Build Android APK
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node 24
uses: actions/setup-node@v4
with:
node-version: 24

- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: '17'

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build Web App
run: pnpm --filter @nexus-notes/web generate

- name: Sync Capacitor
run: pnpm --filter @nexus-notes/mobile exec cap sync android

- name: Build APK
working-directory: apps/mobile/android
run: ./gradlew assembleDebug # Cambiar a assembleRelease cuando se tengan llaves de firma

- name: Upload APK to Release
uses: softprops/action-gh-release@v1
with:
files: apps/mobile/android/app/build/outputs/apk/debug/app-debug.apk
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@ coverage/
# Cache
.cache/
*.tsbuildinfo

# firebase
.firebaserc
5 changes: 2 additions & 3 deletions apps/desktop/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{
"name": "@nexus-notes/desktop",
"type": "module",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "tauri dev",
"build": "tauri build",
"lint": "eslint .",
"typecheck": "tsc --noEmit"
"lint": "eslint ."
},
"dependencies": {
"@nexus-notes/web": "workspace:*",
Expand Down
14 changes: 9 additions & 5 deletions apps/desktop/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,25 @@
name = "nexus-notes-desktop"
version = "0.0.0"
description = "Desktop client for NexusNotes - Markdown Vault"
authors = ["vladzur"]
authors = [ "vladzur" ]
edition = "2021"

[lib]
name = "nexus_notes_desktop_lib"
crate-type = ["lib", "cdylib", "staticlib"]
crate-type = [
"lib",
"cdylib",
"staticlib"
]

[build-dependencies]
tauri-build = { version = "2", features = [] }

[dependencies]
tauri = { version = "2", features = [] }
serde = { version = "1", features = ["derive"] }
serde = { version = "1", features = [ "derive" ] }
serde_json = "1"

[features]
default = ["custom-protocol"]
custom-protocol = ["tauri/custom-protocol"]
default = [ "custom-protocol" ]
custom-protocol = [ "tauri/custom-protocol" ]
9 changes: 4 additions & 5 deletions apps/mobile/package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
{
"name": "@nexus-notes/mobile",
"type": "module",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "pnpm --filter @nexus-notes/web generate && npx cap sync && npx cap open",
"build": "[ -f ../web/.output/public/index.html ] || pnpm --filter @nexus-notes/web generate; npx cap sync",
"add:android": "npx cap add android",
"add:ios": "npx cap add ios",
"lint": "eslint .",
"typecheck": "tsc --noEmit"
"lint": "eslint ."
},
"dependencies": {
"@nexus-notes/web": "workspace:*",
"@capacitor/core": "^6.0.0",
"@capacitor/filesystem": "^6.0.0",
"@capacitor/keyboard": "^6.0.0"
"@capacitor/keyboard": "^6.0.0",
"@nexus-notes/web": "workspace:*"
},
"devDependencies": {
"@capacitor/cli": "^6.0.0",
Expand Down
5 changes: 2 additions & 3 deletions apps/server/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
{
"name": "@nexus-notes/server",
"type": "module",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"build": "tsc",
"start": "node dist/index.js",
"test": "vitest run",
"lint": "eslint src/",
"typecheck": "tsc --noEmit"
},
Expand All @@ -19,8 +18,8 @@
"devDependencies": {
"@nexus-notes/config": "workspace:*",
"@types/node": "^22.0.0",
"typescript": "^5.7.0",
"tsx": "^4.19.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
}
}
2 changes: 1 addition & 1 deletion apps/server/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createApp, createRouter, defineEventHandler, toNodeListener } from 'h3'
import { createServer } from 'node:http'
import { createApp, createRouter, defineEventHandler, toNodeListener } from 'h3'

const app = createApp()
const router = createRouter()
Expand Down
Loading
Loading