{"id":51480327,"url":"https://github.com/ybenyedder/auralis","last_synced_at":"2026-07-07T01:01:13.881Z","repository":{"id":367124166,"uuid":"1279335038","full_name":"ybenyedder/auralis","owner":"ybenyedder","description":"Your music. Your server. Your universe. A self-hosted, local-first music platform with a stunning karaoke UI — web, desktop (Linux/Windows) and Android, all from one server you own.","archived":false,"fork":false,"pushed_at":"2026-07-03T20:08:38.000Z","size":7624,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T21:30:58.507Z","etag":null,"topics":["android","capacitor","electron","karaoke","local-first","lyrics","music","music-player","nextjs","privacy","self-hosted","sqlite","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/ybenyedder/auralis","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ybenyedder.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://paypal.me/AdamMezerai"]}},"created_at":"2026-06-24T15:35:27.000Z","updated_at":"2026-07-03T20:08:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ybenyedder/auralis","commit_stats":null,"previous_names":["ybenyedder/auralis"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ybenyedder/auralis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ybenyedder%2Fauralis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ybenyedder%2Fauralis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ybenyedder%2Fauralis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ybenyedder%2Fauralis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ybenyedder","download_url":"https://codeload.github.com/ybenyedder/auralis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ybenyedder%2Fauralis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35210429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","capacitor","electron","karaoke","local-first","lyrics","music","music-player","nextjs","privacy","self-hosted","sqlite","typescript"],"created_at":"2026-07-07T01:01:13.195Z","updated_at":"2026-07-07T01:01:13.872Z","avatar_url":"https://github.com/ybenyedder.png","language":"TypeScript","funding_links":["https://paypal.me/AdamMezerai","https://paypal.me/AdamMezerai)*"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"public/logo.svg\" alt=\"Auralis\" width=\"88\" height=\"88\" /\u003e\n\n# AURALIS\n\n### Your music. Your server. Your universe.\n\nThe self-hosted music platform that finally feels like it was built for you —\nnot for an algorithm.\n\n[![CI](https://github.com/ybenyedder/auralis/actions/workflows/ci.yml/badge.svg)](https://github.com/ybenyedder/auralis/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/ybenyedder/auralis?display_name=tag\u0026color=c6a15b)](https://github.com/ybenyedder/auralis/releases/latest)\n[![License](https://img.shields.io/badge/License-Attribution-7c5cff.svg)](LICENSE)\n[![Support](https://img.shields.io/badge/Support-PayPal-005ea6.svg?logo=paypal)](https://paypal.me/AdamMezerai)\n\n**[Download](https://github.com/ybenyedder/auralis/releases/latest)** \u0026nbsp;·\u0026nbsp;\n**[Quick start](#get-started-in-60-seconds)** \u0026nbsp;·\u0026nbsp;\n**[Support the project](https://paypal.me/AdamMezerai)**\n\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/screenshot-player.png\" alt=\"Auralis — desktop app\" width=\"100%\" /\u003e\n\n\u003cem\u003eOne window. Your album art glowing in a field of stars, lyrics lighting up word by word.\u003c/em\u003e\n\n\u003c/div\u003e\n\n---\n\n## Imagine this\n\nYou press play. The room dims into a living starfield. Your cover art breathes at\nthe center, the lyrics ignite word by word in real time, and the same moment follows\nyou from your laptop to your phone to your living-room screen — because one server\nyou own is powering all of it.\n\nNo subscription. No ads. No \"we've curated this for you.\" No company logging what you\nlisten to at 3 a.m. Just your collection, in full fidelity, exactly the way you want\nit.\n\nThat's Auralis: a music platform that respects your taste and your privacy, and looks\nlike a flagship app while doing it.\n\n\u003e Auralis is free and open-source. If it gives you that \"finally, something made\n\u003e right\" feeling, a one-time tip keeps it alive — **[paypal.me/AdamMezerai](https://paypal.me/AdamMezerai)**.\n\n---\n\n## Why you'll love it\n\n**Karaoke that actually syncs.** Word-level highlighting with a tunable lead-in. Sing\nalong like it's a music video — because it basically is.\n\n**A UI that feels premium.** A living starfield backdrop, cover-derived color washes,\ntwelve hand-crafted themes, smooth animations. It doesn't look self-hosted. It looks\nshipped.\n\n**One hundred percent yours.** Local-first. The only request it ever makes is an\noptional lyrics lookup, and you can switch even that off. Zero telemetry, forever.\n\n**It reads your library for real.** Real ID3 / Vorbis / MP4 tags, embedded cover art,\nbitrate and codec — parsed and indexed into a fast SQLite + FTS5 search engine.\n\n**Lyrics that become yours.** Missing lyrics get fetched from LRCLIB and written back\nas `.lrc` files next to your music, so they're self-hosted from then on.\n\n**Everywhere you are.** One server powers a polished web app, a native desktop app\n(Linux and Windows), and a native Android app with a real lock-screen notification.\n\n**Built like a product.** Multi-user accounts, scrypt-hashed passwords, rate-limited\nlogin, CSP and security headers, secure range streaming. Serious engineering under a\nbeautiful surface.\n\n---\n\n## Get started in 60 seconds\n\n```bash\ngit clone https://github.com/ybenyedder/auralis.git\ncd auralis\nnpm ci\nnpm run dev          # http://localhost:4237\n```\n\nPoint it at your music and you're done:\n\n```env\n# .env.local\nAURALIS_MUSIC_DIR=/absolute/path/to/Music\n```\n\nA scan kicks off automatically and streams progress live. For production hosting:\n`npm run build \u0026\u0026 npm start`.\n\n**First login.** Auralis creates an `admin` account on first boot. No password is\nhard-coded — it's either your `AURALIS_ADMIN_PASSWORD`, or a random one printed once\nto the server logs. Log in, then change it in Settings → Account.\n\n---\n\n## Desktop app (Linux and Windows)\n\nA native Electron shell wrapping the same server in a frameless window with custom\ncontrols and OS media keys.\n\n```bash\nnpm run desktop:build:linux     # .deb + .AppImage\nnpm run desktop:build:win       # .exe (installer + portable)\n```\n\nPrebuilt installers are attached to each [release](https://github.com/ybenyedder/auralis/releases/latest).\n\n## Android app\n\nA fully native Kotlin/Compose client (`android-native/`, no WebView) that connects\nto your self-hosted server. Playback runs on ExoPlayer/media3 with a real system\nnotification and lock-screen controls — artwork, scrubbing, play/pause/skip — and\nthe UI renders natively (home, library, player, lyrics, playlists, insights, plus\nthe personalised recommendations and monthly mood recap).\n\n```bash\nnpm run mobile:native           # → android-native/app/build/outputs/apk/debug/app-debug.apk\n```\n\nGrab the prebuilt APK from the [latest release](https://github.com/ybenyedder/auralis/releases/latest).\n\n\u003e Prefer the browser? The web app is fully responsive and installable as a PWA, so\n\u003e opening your server's address on a phone gives the same mobile-styled interface.\n\n---\n\n## Configuration\n\nEverything has a sane default — see [`.env.example`](.env.example).\n\n| Variable | Default | Purpose |\n| --- | --- | --- |\n| `AURALIS_MUSIC_DIR` | `~/Music` | Library root that's scanned and streamed |\n| `AURALIS_DATA_DIR` | platform data dir | SQLite DB + art cache |\n| `PORT` | `4237` | Server port |\n| `AURALIS_ADMIN_PASSWORD` | random | Seed the admin password |\n| `AURALIS_TOKEN` | empty | Require this bearer token on every `/api` call |\n| `AURALIS_LYRICS_ONLINE` | `true` | Allow LRCLIB lookups |\n| `AURALIS_LYRICS_SIDECAR` | `true` | Write fetched lyrics back as `.lrc` |\n\n---\n\n## Hardened by design\n\nNo default password, scrypt-hashed credentials, rate-limited login, signed `httpOnly`\nsessions, path-traversal-proof streaming, CSP and security headers on every response,\nno wildcard CORS on authenticated routes, and a bounded import endpoint. Found\nsomething? See [SECURITY.md](SECURITY.md).\n\n## Architecture\n\n```\nsrc/server/   framework-agnostic core (config · db · auth · rateLimit · library · lyrics · state)\nsrc/app/api/  thin Next.js route handlers\nsrc/components, store/   the shared UI (powers all three clients)\ndesktop/      Electron shell    ·    android/ + mobile/www/   native client\n```\n\n## Develop\n\n```bash\nnpm run dev · npm run check · npm test · npm run lint · npm run typecheck\n```\n\n---\n\n## Support the project\n\nAuralis is free, ad-free and tracker-free, and it stays that way. If it earns a place\nin your day, fuel the next feature with a one-time tip:\n\n\u003cdiv align=\"center\"\u003e\n\n### [paypal.me/AdamMezerai](https://paypal.me/AdamMezerai)\n\n\u003c/div\u003e\n\n## Contact\n\nYoussef Ben yedder — [volt@webtvmedia.net](mailto:volt@webtvmedia.net)\n\n## License\n\n[Auralis Attribution License](LICENSE) © Youssef Ben yedder. You're free to use, fork and\nbuild on Auralis — as long as you credit the author and link back. No modifying it\ninto your own thing without the tag.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fybenyedder%2Fauralis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fybenyedder%2Fauralis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fybenyedder%2Fauralis/lists"}