Svelte Commerce
A standalone open-source storefront built with SvelteKit, headless across 26 commerce backends. MIT licensed.
Memorias del futuro. Artistas en diálogo con el patrimonio: subasta solidaria de las 24 cabezas escultóricas intervenidas por artistas, a beneficio del Cottolengo Don Orione. Municipalidad de San Migu
Translation pending
CommerceTypeScript · PLpgSQLGitHub @DIA-SMTOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Memorias del futuro. Artistas en diálogo con el patrimonio: subasta solidaria de las 24 cabezas escultóricas intervenidas por artistas, a beneficio del Cottolengo Don Orione. Municipalidad de San Miguel de Tucumán, Dirección de Cementerios.
Translation pending
Loading the full README.
Read the full README ↗Plataforma de la etapa virtual de la subasta solidaria de las 24 cabezas escultóricas de la muestra "Memorias del futuro". Municipalidad de San Miguel de Tucumán · Dirección de Cementerios. Desarrollado por la Dirección de Inteligencia Artificial.
/admin): obras, artistas y fotos, configuración de fechas e
incremento, textos, ofertas con datos de contacto y anulación con motivo, oferentes,
listado final para el martillero (Excel y PDF), carteles QR, indicadores y auditoría.El diseño aprobado (modelo de datos, pantallas y decisiones) está en docs/diseno.md.
Requisitos: Node.js 22 o posterior. No hace falta Docker ni una cuenta de Supabase.
npm install
npm run dev
Abrí http://localhost:3000. Sin variables de entorno, la app arranca en modo local:
.local/pgdata con las mismas migraciones de
supabase/migrations/ y carga los datos de ejemplo (supabase/seed.sql).CIDITUC_*, /ingresar avisa
que el ingreso no está habilitado..local/subidas/./admin) está en supabase/local/seed-local.sql.Las migraciones nuevas se aplican al iniciar el servidor: después de actualizar el código,
reiniciá npm run dev. Para volver a empezar con los datos de ejemplo:
npm run db:local:reiniciar
npm test
Prueban, sobre PGlite con las migraciones reales: el cierre controlado por el servidor, el incremento mínimo, que las ofertas no se editan ni se borran, la anulación con motivo, la auditoría, los permisos (RLS), que el sitio público no expone datos personales, los avisos por correo, los límites de intentos de ingreso, la exportación (Excel y PDF) y el comportamiento del driver de producción (postgres.js) con parámetros JSON.
Antes de desplegar conviene correr también:
npm run typecheck
npm run lint
npm run build
| Servicio | Plan recomendado | Por qué |
|---|---|---|
| Supabase | Pro | El plan gratuito pausa el proyecto si no se usa y no hace copias de seguridad automáticas. |
| Vercel | Pro (recomendado) | El plan Hobby es solo para uso personal y admite crons diarios: con Hobby, el reintento de avisos corre una vez por día (ver el paso 5 del despliegue). |
Conviene crear ambos proyectos cerca del público: Supabase en South America (São Paulo) y, en Vercel (Pro), la región de las funciones en São Paulo (gru1) (Project Settings > Functions > Function Region).
Creá el proyecto en Supabase.
Aplicá todas las migraciones de supabase/migrations/, en orden de nombre, desde el
SQL Editor (pegando cada archivo) o con la CLI de Supabase:
npx supabase link --project-ref <ref>
npx supabase db push
Sin la CLI, con DATABASE_URL en .env.local, este comando aplica las que falten y las
registra en la misma tabla que usa la CLI (--ver solo las lista):
npm run db:migrar
No cargues supabase/seed.sql ni supabase/local/*: son datos de ejemplo y el
reemplazo de Supabase para el modo local.
Orden en cada actualización: primero las migraciones nuevas, después el código. Sin las funciones nuevas (por ejemplo, las de límites de ingreso), el ingreso falla.
Verificá en Storage que exista el bucket público obras (lo crea la migración de contenidos).
Cifrado: la app siempre conecta con TLS. Bajá el certificado raíz (Project Settings >
Database > SSL Configuration > Download certificate) y cargalo en SUPABASE_CA_CERT para que
además verifique el servidor. Probá que el sitio conecta con esa variable antes de seguir: si
falla, quitala (la conexión queda cifrada, sin verificar el certificado). Una vez desplegada
la app y comprobada la conexión, activá Enforce SSL on incoming connections en esa misma
pantalla.
Los oferentes ingresan con su cuenta de Ciudadano Digital (Cidituc): la app nunca ve su
contraseña. Se usa el login de Ciudad Digital (repo cidituc), no el derivador
(cidituc.smt.gob.ar), que el equipo de Cidituc da de baja:
This is the beginning of the README. Read the rest at the original. Read the full README ↗