smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
SaaS para psicólogos de consulta privada y sus pacientes: agenda, fichas, tareas, escalas clínicas (PHQ-9 / GAD-7) opt-in, diario emocional, seguimiento de pagos y contabilidad de autónomo en España. Dos áreas sobre el mismo despliegue: /pro (panel del profesional) y /app (PWA del paciente, envuelta con Capacitor para iOS/Android). Límites de producto, vinculantes: la aplicación nunca emite facturas (evita Verifactu) y nunca interpreta ni recomienda clínicamente (evita la reclasificación como producto sanitario bajo MDR). Los datos son de salud mental: categoría especial del art. 9 RGPD.README 전문 보기 ↗
SaaS para psicólogos de consulta privada y sus pacientes: agenda, fichas, tareas, escalas clínicas (PHQ-9 / GAD-7) opt-in, diario emocional, seguimiento de pagos y contabilidad de autónomo en España.
Dos áreas sobre el mismo despliegue: /pro (panel del profesional) y
/app (PWA del paciente, envuelta con Capacitor para iOS/Android).
Límites de producto, vinculantes: la aplicación nunca emite facturas (evita Verifactu) y nunca interpreta ni recomienda clínicamente (evita la reclasificación como producto sanitario bajo MDR). Los datos son de salud mental: categoría especial del art. 9 RGPD.
Next.js 16 (App Router) · React 19 · TypeScript strict · Tailwind CSS v4
(configuración en CSS, sin tailwind.config.js) · Supabase (Postgres, Auth,
Storage, RLS) en EU-Frankfurt · Capacitor 8 · desplegado en Vercel.
En Next.js 16 el middleware se llama
proxy(src/proxy.ts) ycookies()es asíncrono.
npx supabase …)npm install
cp .env.example .env.local # y rellena los valores reales
npm run dev # http://localhost:3000
En Supabase → Authentication → URL Configuration, añade
http://localhost:3000/auth/confirm a las Redirect URLs.
.env.local nunca se sube al repositorio (.gitignore cubre .env*; solo
se versiona .env.example). Contiene la service_role, que salta la RLS.
npm run seed # 2 profesionales, 10 pacientes, ~3 meses
SEED_PRO_EMAIL=tu-correo@dominio npm run seed # para entrar tú por enlace mágico
Es idempotente. Usa la service_role contra la base de datos real.
| Comando | Qué hace |
|---|---|
npm run dev / build / start | ciclo de Next.js |
npm run lint | ESLint 9 (flat config), sin warnings permitidos |
npm run typecheck | tsc --noEmit |
npm test | vitest: lógica pura, sin base de datos |
npm run test:cov | lo mismo con cobertura |
npm run test:integration | batería contra Supabase local (ver abajo) |
npm run db:push | aplica las migraciones al proyecto remoto |
npm run gen:types | regenera src/lib/database.types.ts |
npm run cap:* | Capacitor (sync, add, open) |
npm test no toca ninguna base de datos. Cubre el motor fiscal, la
aritmética de fechas y zonas horarias, el reparto en carriles de la agenda y la
puntuación de las escalas. Se ejecuta en UTC en CI a propósito: es la zona del
runtime de Vercel y donde estaban los fallos de fecha.
La batería de integración sí necesita base de datos, y va contra una local:
supabase start # imprime URL y claves
cp .env.test.example .env.test # y pega esos valores
supabase db reset # aplica todas las migraciones en limpio
npm run test:integration
⚠️ Nunca la apuntes al proyecto remoto. Crea usuarios en Auth e inserta pacientes, citas, pagos y ficheros. Limpia en un
finally, pero si el proceso muere (timeout, Ctrl-C) esefinallyno corre y deja basura en producción. Por eso los scripts leen.env.testy no.env.local.
src/
proxy.ts # sesión + redirección optimista por rol
app/
pro/ # panel del profesional (guard: professional)
app/ # PWA del paciente (guard: patient)
login/ auth/ onboarding/ invite/
api/cron/ # envío programado de notificaciones
lib/
queries/ # lectura
actions/ # escritura (server actions)
fiscal/ # motor del modelo 130 y libros registro
supabase/ # clientes browser / server
tz.ts # zona horaria del dominio (Europe/Madrid)
components/
supabase/migrations/ # esquema y RLS, siempre versionados
docs/ # DEPLOY, GUION_DEMO, PUBLICACION_STORES
src/lib/tz.ts (Europe/Madrid): el
runtime del servidor es UTC y no se puede depender de su zona.supabase/migrations/.Contexto ampliado y estado sesión a sesión en CLAUDE.md.