diff --git a/Dockerfile b/Dockerfile index b5d5140..e270503 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ -FROM node:22 +FROM oven/bun:latest WORKDIR /app -COPY package.json ./ -RUN npm install -g bun && bun install +COPY package.json bun.lockb ./ +RUN bun install COPY . . -RUN npm run build:css +RUN bun run build:css EXPOSE 3000 -CMD ["node", "app.js"] \ No newline at end of file +CMD ["bun", "run", "app.js"] \ No newline at end of file diff --git a/data/apps.json b/data/apps.json index 18b3d44..9cbe35a 100644 --- a/data/apps.json +++ b/data/apps.json @@ -820,5 +820,134 @@ }, "description": "This app supports generating, saving, loading, parsing and verifying Android key and ID attestation data.\n\nThe app is used for self-testing, so it has no network permission. The certificate revocation data is embedded in the apk and will not be updated online. If the system is compromised, parsing and verifying is not safe, you should save the data to a file and then load the file on another device to verify it.\n\nThis app also supports loading attestation data generated by other software, and the supported storage format is PkiPath and PKCS7.", "github": "https://github.com/vvb2060/KeyAttestation" + }, + { + "id": "25", + "name": "Aves", + "icon": "/img/apps/aves.svg", + "foss": true, + "root": false, + "selfHosted": true, + "downloadLinks": { + "v1.12.1": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.12.1/app-play-release.apk" + }, + "v1.12.0": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.12.0/app-play-release.apk" + }, + "v1.11.20": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.20/app-play-release.apk" + }, + "v1.11.19": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.19/app-play-release.apk" + }, + "v1.11.18": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.18/app-play-release.apk" + }, + "v1.11.17": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.17/app-play-release.apk" + }, + "v1.11.16": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.16/app-play-release.apk" + }, + "v1.11.15": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.15/app-play-release.apk" + }, + "v1.11.14": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.14/app-play-release.apk" + }, + "v1.11.13": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.13/app-play-release.apk" + }, + "v1.11.12": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.12/app-play-release.apk" + }, + "v1.11.11": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.11/app-play-release.apk" + }, + "v1.11.10": { + "izzy-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-izzy-arm64-v8a-release.apk", + "izzy-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-izzy-armeabi-v7a-release.apk", + "izzy-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-izzy-x86_64-release.apk", + "libre-arm64-v8a": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-libre-arm64-v8a-release.apk", + "libre-armeabi-v7a": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-libre-armeabi-v7a-release.apk", + "libre-x86-64": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-libre-x86_64-release.apk", + "play": "https://github.com/deckerst/aves/releases/download/v1.11.10/app-play-release.apk" + } + }, + "description": "Aves can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like multi-page TIFFs, SVGs, old AVIs and more!\n\nIt scans your media collection to identify motion photos, panoramas (aka photo spheres), 360° videos, as well as GeoTIFF files.\n\nNavigation and search is an important part of Aves. The goal is for users to easily flow from albums to photos to tags to maps, etc.\n\nAves integrates with Android (from KitKat to Android 14, including Android TV) with features such as widgets, app shortcuts, screen saver and global search handling. It also works as a media viewer and picker.", + "github": "https://github.com/deckerst/aves" } ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index d7f2414..15687d8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,9 +4,9 @@ services: container_name: modules-app restart: always ports: - - "3000:3000" + - "3002:3000" volumes: - .:/app - command: ["node", "app.js"] + command: ["bun", "run", "app.js"] environment: - NODE_ENV=production \ No newline at end of file diff --git a/public/img/apps/aves.svg b/public/img/apps/aves.svg new file mode 100644 index 0000000..327ddbe --- /dev/null +++ b/public/img/apps/aves.svg @@ -0,0 +1 @@ + \ No newline at end of file