Dentalpin
무료 오픈소스 치과 클리닉 관리 소프트웨어, 일정·환자·치아도·견적·청구서 제공, 코드를 직접 설치 가능
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
The phone app is in mobile/: an Expo (React Native) app that uses the same Supabase project and reuses the logic in src/lib. It has its own package.json and needs Node 22. Setup and commands: mobile/README.md. Architecture, decisions, the web-to-app parity table and what is still unverified (iOS, hosted Supabase): docs/MOBILE.md.
The app deletes accounts through this website's DELETE /api/account endpoint, so that endpoint must be deployed before the app can delete accounts on a hosted project.
The log in and sign-up pages can show Continue with Google. It stays hidden until you turn it on.
In Google Cloud Console, create an OAuth client ID (type: Web application).
Add this authorized redirect URI: http://127.0.0.1:54321/auth/v1/callback.
Put the client ID and secret in supabase/.env (ignored by git, never commit it):
SUPABASE_AUTH_EXTERNAL_GOOGLE_CLIENT_ID=your-client-id
SUPABASE_AUTH_EXTERNAL_GOOGLE_SECRET=your-secret
In supabase/config.toml, set enabled = true under [auth.external.google], then run npx supabase stop and npx supabase start.
Add NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true to .env.local and restart npm run dev.
With the flag on but Google not set up, the button says Google sign-in is not set up yet.
Hosted projects (Vercel + Supabase):
https://<project-ref>.supabase.co/auth/v1/callback for each Supabase project (staging and production).NEXT_PUBLIC_GOOGLE_AUTH_ENABLED=true in Vercel (Production, and Preview for staging) and redeploy.To learn more about Next.js, take a look at the following resources:
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
npm run typecheck
npm run lint
npm test
npm run build
npm run test:db
npm run test:e2e
npm run test:e2e builds the app and runs the Playwright smoke test in e2e/ against local Supabase, at phone and desktop sizes. It opens every public and signed-in page and runs axe (WCAG 2.1 A and AA; any violation fails), logs in, saves a weigh-in and logs out. It also signs up a new account and opens the confirmation link from Mailpit (local Supabase's mail catcher, MAILPIT_URL, default http://127.0.0.1:54324). It creates throwaway users with the admin key from .env.local, refuses to run unless Supabase is on 127.0.0.1, and deletes the users afterwards. Install the browser once with npx playwright install chromium. After changing supabase/config.toml (for example the allowed redirect URLs), restart local Supabase with npx supabase stop then npx supabase start; stop keeps your data. CI runs it in the e2e job on a fresh local stack.
npm run test:db runs the database tests in supabase/tests/database (pgTAP: grants, row-level security and the save functions) against local Supabase, so start it first with npx supabase start. Each test file runs in one transaction and is rolled back.
CI runs the same checks on every push and pull request (.github/workflows/ci.yml); the database tests run in their own job on a fresh database with the migrations and supabase/seed.sql. Copy .env.example to .env.local for local settings.
Do not deploy until the launch review in docs/PLAN.md is done. Setup, deploys, monitoring, backups and rollback are in docs/RUNBOOK.md.