iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Sing the 1650 Scottish Psalter: every psalm, a choice of tunes, and a player that follows each syllable.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Sing the 1650 Scottish Psalter, the Psalms of David in Metre. The app has all 150 psalms and the second versions of 13 psalms. Each psalm has a choice of tunes. The player plays the tune in four parts and lights each syllable when you must sing it.
In Scottish churches the precentor led the psalm singing, one line at a time. This app does the same.
Use the app at precentor.app.
If Precentor helps you, you can support it on Ko-fi.
Precentor is one Expo app (SDK 58, React Native 0.88, Expo Router). The same code runs on the web, on iOS and on Android. On the web, react-native-web renders the app.
| Part | Web | iOS and Android |
|---|---|---|
| Screens | src/app/, rendered by react-native-web | src/app/, native views |
| Sound | The Web Audio API of the browser | react-native-audio-api, a native Web Audio engine |
| Sheet music | abcjs draws SVG in the page | abcjs draws SVG in an Expo DOM component, in a web view |
| Psalm data | The app gets corpus/ from the server | The app reads corpus/ from its own bundle |
| Settings | localStorage | AsyncStorage |
A file that ends in .native.ts replaces the file of the same name on iOS and Android.
The app needs Node 24 or later.
npm install
npm run dev # the web app at http://localhost:5180
npm run build # the static web app in dist/
npm test # the tests of the engine, the music, the routes and the analytics
npm install also runs scripts/link-corpus.mjs. See Psalm data on iOS and Android.
The sound engine is a native module. Expo Go does not contain it, so you need a development build.
To make a development build in the cloud, do these steps:
npx eas-cli@latest login.npx eas-cli@latest init. This command writes the project id into app.json.npx eas-cli@latest device:create.npx eas-cli@latest build --profile development --platform ios.npx expo start.To make the build on a Mac with Xcode, connect the iPhone and run npx expo run:ios --device.
For the iOS Simulator, run npx expo run:ios. For Android, run npx expo run:android.
The app opens in Expo Go, but Expo Go plays no sound. The words and the notes still follow the beat, and the player shows a note about the development build.
On iOS, the app sets the category of the audio session to playback. So when the iPhone is on
silent, the tune plays, as in a music app.
npx tsc --noEmit
npx expo lint
npx expo-doctor
npx expo export --platform ios --platform android # the native bundles must compile
npm run build # the web app
| Path | Screen |
|---|---|
/ | The psalms |
/psalm/023 | Psalm 23. 023b is the second version. |
/psalm/023?tune=dundee | Psalm 23 on the tune Dundee |
/about, /about/metre | The About page |
The deep link precentor://psalm/023 opens the same screen in the native app.
The Vite app used hash routes, for example https://precentor.app/#/psalm/023?tune=dundee. Other
apps, for example Covenant Household and Hearers, link to these addresses. Before the router starts,
src/lib/legacyHash.ts changes an old hash route to its path. So each old link opens the same
psalm and the same tune.
The native app carries all of the psalm data in its bundle. It does not get the data from precentor.app. These are the reasons:
To change the data, release a new version of the app.
Metro bundles a .json file as code. For this reason, scripts/link-corpus.mjs links each file of
public/corpus/ to assets/corpus/ with the extension .corpus, and metro.config.js treats
that extension as an asset. The script also writes src/data/corpusAssets.native.ts. The
postinstall script and the eas-build-post-install script run it. Git does not keep
assets/corpus/.
CI owns the deployment to Cloudflare Pages. Do not deploy from a workstation.
main starts the Website workflow. It runs the tests and builds dist/.Website passes, the Deploy to Cloudflare Pages workflow starts.dist/ artifact. It does not build again.precentor if the project does not exist.main./a/boot.js on the live site.Each pull request from this repository also gets a preview. The job summary of the Website run
shows the preview address.
The workflows need two repository secrets:
| Secret | Value |
|---|---|
CLOUDFLARE_API_TOKEN | An API token with the permission Account, Cloudflare Pages, Edit |
CLOUDFLARE_ACCOUNT_ID | The account ID from the Cloudflare dashboard |
npm run build runs expo export --platform web, then scripts/web-postbuild.mjs. The export
copies public/ into dist/, with the psalm data, _headers, the icon and the web manifest.
public/index.html is the page template. scripts/web-postbuild.mjs writes the service worker
dist/sw.js, and copies the app icon to dist/apple-touch-icon.png.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗