Fujimod
브라우저에서 카메라 펌웨어를 시험하고 Fujimod SD 부팅 파일을 만든다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Web app para gestionar listas de compras de supermercado
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Web app para gestionar listas de compras de supermercado.
Estado actual: proyecto inicializado. Todavía no hay funcionalidades implementadas.
.nvmrc)npm install
npm run dev
Abrir http://localhost:3000 en el navegador.
| Comando | Descripción |
|---|---|
npm run dev | Servidor de desarrollo con recarga en caliente |
npm run build | Build de producción |
npm run start | Sirve el build de producción |
npm run lint | Ejecuta ESLint |
npm run typecheck | Genera tipos de rutas y comprueba con tsc |
npm run format | Formatea el código con Prettier |
npm run format:check | Comprueba el formato sin modificar archivos |
npm test | Tests unitarios con Vitest |
npm run test:watch | Vitest en modo watch |
npm run test:e2e | Tests end-to-end con Playwright (requiere npm run build y npx playwright install chromium) |
El backend es Supabase (ADR 0002).
En local corre con Docker mediante la CLI de Supabase, que está instalada
como dependencia de desarrollo: no hace falta instalarla aparte, se usa con
npx supabase o con los scripts de abajo.
Requisitos: Docker Desktop en marcha y unos 10 GB libres en disco la primera vez, para descargar las imágenes.
| Comando | Descripción |
|---|---|
npm run db:start | Levanta Supabase en local (base, auth, realtime, API, Studio, Mailpit) |
npm run db:stop | Detiene los contenedores |
npm run db:reset | Recrea la base aplicando supabase/migrations/ y supabase/seed.sql |
npm run db:types | Regenera src/lib/supabase/database.types.ts desde la base local |
Primera vez:
npm run db:start.
npx supabase status muestra las URLs y las claves del entorno local.
Crear .env.local en la raíz del proyecto con estos valores:
NEXT_PUBLIC_SUPABASE_URL=<Project URL, normalmente http://127.0.0.1:54331>
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=<clave Publishable, empieza por sb_publishable_>
.env.local está en .gitignore y no se versiona. La clave secreta
(sb_secret_... o service_role) nunca va en variables NEXT_PUBLIC_
ni en el cliente.
Con el entorno levantado:
La API local escucha en el puerto 54331 en vez del 54321 habitual porque CleanMyMac ocupa el 54321 en la máquina de desarrollo. El resto de los puertos son los de Supabase por defecto.
Para cambiar el esquema se crea una migración nueva con
npx supabase migration new <nombre>, se aplica con npm run db:reset y se
regeneran los tipos con npm run db:types. Las migraciones ya mergeadas no
se editan.
La configuración local (auth anónima, email con enlace y código OTP, URLs de
redirección) está en supabase/config.toml y las plantillas de correo en
supabase/templates/.
Sin registro previo (ADR 0004):
SessionProvider (src/components/session-provider.tsx,
montado en src/app/(app)/layout.tsx) restaura la sesión guardada o crea
un usuario anónimo de Supabase. Si Supabase no responde, la app se muestra
igual con el aviso "Sin conexión" y reintenta sola con backoff.src/app/auth/callback/route.ts y vuelve
a / con ?account=... para que el menú muestre el resultado.La sesión vive en cookies (@supabase/ssr) y se lee en el navegador: los
layouts no llaman a cookies() y siguen siendo estáticos. No hay proxy.ts:
el cliente del navegador renueva su propio token.
En cada entorno de Supabase, Auth tiene que aceptar <origen>/auth/callback
como URL de redirección (en local ya está en supabase/config.toml; en
staging y producción se agrega en el dashboard, junto con el dominio de las
previews de Vercel).
Tests e2e contra el stack local (los que dependen de Supabase se saltean si
no está E2E_SUPABASE=1, como en CI):
npm run db:start
npm run build # con .env.local apuntando al stack local
E2E_SUPABASE=1 npm run test:e2e
src/
app/ Rutas, layouts y páginas (App Router)
components/ Componentes de React reutilizables
lib/ Utilidades y lógica compartida
types/ Tipos de TypeScript compartidos
public/ Archivos estáticos
supabase/ Configuración local, migraciones, seed y plantillas de correo
docs/ Documentación del proyecto
La app es instalable. El manifest está en src/app/manifest.ts, los iconos en
public/icons/ y la página sin conexión en src/app/offline/page.tsx.
El service worker (src/app/sw.ts, Serwist) se compila con
@serwist/turbopack y se sirve desde /serwist/sw.js (route handler en
src/app/serwist/[path]/route.ts). Se registra desde el layout raíz con
SerwistProvider, solo en producción. Precachea el app shell, los assets y
/offline; las peticiones a Supabase y a /api/ nunca se cachean.
Instalar:
Verificar el manifest en un build de producción:
npm run build && npm run start
Abrir http://localhost:3000, DevTools, pestaña Application: en Manifest se ve
el manifest; en Service Workers, /serwist/sw.js activado; en Cache Storage,
el precache incluye /offline. Para probar el fallback: marcar Offline en
Network y navegar a una ruta no visitada.