尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗UntitledOne makes it easy to share music projects, discuss versions, and annotate audio with precise timestamps. Built for speed, simplicity, and modularity on a modern web stack.
src/
├─ app/ # Next.js App Router (server-first)
│ └─ (routes)/… # feature routes (e.g., dashboard, project, auth)
├─ components/ # Atomic Design + shadcn/ui
│ ├─ atoms/ ├─ molecules/ ├─ organisms/ ├─ templates/ └─ ui/
├─ hooks/ # custom hooks
├─ i18n/ # next-intl (messages/, routing)
├─ lib/ # api/, supabase/, env.ts, utils.ts
├─ stories/ # Storybook
├─ types/ # Supabase schema types (generated)
└─ styles/ # globals.css, tailwind.css (optional)
UntitledOne supports multiple locales via next-intl. Translation files live in src/i18n/messages/.
en, fr, nl{locale}.json file and wiring it in src/i18n/request.tsCreate a .env.local with:
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_DB_URL=
RESEND_API_KEY=
NEXT_PUBLIC_SITE_URL=
This project uses npm as the package manager.
node -v # Node.js 18+
npm -v
Clone and install:
git clone https://github.com/sandeeeerr/untitledone.git
cd untitledone
npm install
Configure env (see above), then start dev:
npm run dev
# http://localhost:3000
npm run test # unit tests (Vitest)
npm run cypress:open # E2E (Cypress)
Common scripts:
npm run dev # dev server
npm run typecheck # TypeScript
npm run lint # ESLint
npm run format # Prettier
npm run gen:types # generate Supabase DB types
npm run storybook # Storybook
Recommended: deploy on Vercel.
# Configure environment variables in Vercel dashboard
# Then push to main or create a Production Deployment
UntitledOne helps audio creatives share work, version files, and give time-based feedback in a calm, focused interface. The goal is to reduce friction in collaboration while keeping decisions traceable through an activity timeline.
en, fr, nl via next-intl; localized dates and messages| Token | Light (HSL) | Dark (HSL) |
|---|---|---|
| background | 0 0% 100% | 240 10% 3.9% |
| foreground | 240 10% 3.9% | 0 0% 98% |
| primary | 220 90% 56% | 220 80% 60% |
| secondary | 240 4.8% 95.9% | 240 3.7% 15.9% |
| accent | 240 4.8% 95.9% | 240 3.7% 15.9% |
| destructive | 0 84.2% 60.2% | 0 62.8% 30.6% |
| border/input | 240 5.9% 90% | 240 3.7% 15.9% |
| ring | 240 5.9% 10% | 240 4.9% 83.9% |
See GitHub Projects: https://github.com/sandeeeerr/untitledone/projects
Contributions are always welcome! Please follow Conventional Commits and our guidelines.
See CONTRIBUTING.md for ways to get started.
Please read the Code of Conduct
How are secrets handled?
NEXT_PUBLIC_* variables are used client-side.Can I use my own Supabase project?
supabase/migrations/, then npm run gen:types.Report vulnerabilities privately via SECURITY.md.
Distributed under the MIT License. See LICENSE for more information.
Author: Sander de Vries — open an issue for questions/feedback
Project Link: github.com/sandeeeerr/untitledone
Core scripts to keep quality high:
npm run lint # ESLint
npm run typecheck # TypeScript
npm run test # Unit tests (Vitest)
npm run cypress:open # E2E locally