smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A modern, enterprise-grade appointment booking and management platform for Dr. Zlatomira Manolova-Peneva's pediatric practice.
• Framework: Next.js 16 (App Router) with React 19
• Database: Prisma with PostgreSQL
• Authentication: Auth.js v5 (NextAuth) + Custom Credentials
• Styling: Vanilla CSS for bespoke, high-performance design
• Documentation: Storybook + Automated GitHub PagesREADME 전문 보기 ↗A modern, enterprise-grade appointment booking and management platform for Dr. Zlatomira Manolova-Peneva's pediatric practice.
PATIENT and ADMIN roles.The easiest way to run the entire stack (App + DB + daily Postgres backups):
docker-compose up -d
Access the application at http://localhost:3000.
Clone:
git clone https://github.com/CreaTiVeUK/Dr-Zlatomira-Manolova.git
cd Dr-Zlatomira-Manolova
Install:
npm install
Setup Environment:
Copy .env.example to .env and configure your database credentials.
If you want AI summaries to run through Vercel AI Gateway, set VERCEL_AI_GATEWAY_API_KEY and optionally override VERCEL_AI_GATEWAY_MODEL. Audio transcription in the current implementation still requires OPENAI_API_KEY.
Database:
npx prisma db push
npx prisma db seed
Run:
npm run dev
This project features a fully automated DevOps pipeline using GitHub Actions:
backups named volume. See operations and recovery for restore drills, Vercel backup requirements, and reminder monitoring.npm run storybook to view the UI component docs.| Layer | Command | What it covers |
|---|---|---|
| Unit (Vitest, jsdom/node) | npm run test | Pure logic: auth callbacks (lockout, TOTP, OAuth-linking guard, inactivity), booking overlap math & clinic hours, encryption round-trips & tamper detection, storage round-trips, rate limiting, sanitisation, session revocation fallback |
| E2E (Playwright) | npm run test:e2e | Real browser against the app + Postgres: auth flows, booking, profile, messaging, password reset |
| Security regressions | npx playwright test tests/security.spec.ts tests/security-stress.spec.ts | Logout-cookie replay, role escalation, upload content sniffing + encrypted round-trip, cancel→rebook, double-booking race, price tampering, enumeration probes |
| Registration funnel (CI only) | runs in CI as part of E2E | register → unverified login blocked → verify (token from DB) → login. The flow that locks out all new patients if email/verification breaks |
In CI the E2E suite runs against a production build (next build + next start)
with a disposable Postgres — so prod-only failures (CSP, env validation,
standalone output) surface before deploy. Local npm run test:e2e reuses your
dev server.
The dev/CI seed (prisma db seed) refuses to run against non-local database
hosts: it resets known accounts to a shared password. Set ALLOW_SEED=1 only
for disposable databases.
Developed with ❤️ for Dr. Manolova-Peneva.