Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Plataforma de empleo destinada al publico paraguayi
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Plataforma de empleo 100% gratuita para Paraguay. Mobile-first para candidatos, optimizada para escritorio del lado empresa.
Stack: Next.js (App Router) · Tailwind CSS · Supabase (PostgreSQL + Auth) · Vercel
npm install
npm run dev
# → http://localhost:3000
Creá el proyecto: entrá a supabase.com, creá un
proyecto nuevo (región recomendada: sa-east-1, São Paulo — la más cercana
a Paraguay).
Ejecutá el esquema: en el Dashboard → SQL Editor, pegá y ejecutá el
contenido de supabase/schema.sql. Crea todas las
tablas, triggers (moderación automática con 3 denuncias), políticas RLS y
las vistas de BI.
(Opcional) Datos de prueba: ejecutá supabase/seed.sql.
Crea 3 cuentas de prueba (contraseña worka2026):
[email protected] — empresa verificada con 2 vacantes[email protected] — candidata con una postulación[email protected] — acceso al backoffice /adminVariables de entorno: copiá .env.local.example a .env.local y
completá con los valores de Dashboard → Settings → API:
NEXT_PUBLIC_SUPABASE_URL=https://TU-PROYECTO.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
Google Auth (opcional): Dashboard → Authentication → Providers → Google. Necesitás un OAuth Client en Google Cloud Console con la redirect URI que te muestra Supabase. Sin esto, el ingreso por email/contraseña funciona igual.
Storage para CVs (próximo paso): creá un bucket privado cvs y aplicá
las políticas comentadas al final de schema.sql.
Correo (opcional): sin RESEND_API_KEY no sale ningún correo y los
avisos quedan solo dentro de la campanita. Con la clave puesta:
RESEND_API_KEY=re_...
EMAIL_FROM=Worka <[email protected]> # el dominio debe estar verificado en Resend
El cupo del proveedor lo comparte todo lo que manda Worka (invitaciones a entrevistas, avisos de postulación, Evaluar y el resumen semanal de vacantes). Los valores por defecto son los del plan gratuito de Resend:
| Variable | Por defecto | Para qué |
|---|---|---|
EMAIL_CAP_DIA | 100 | Tope diario del plan |
EMAIL_CAP_MES | 3000 | Tope mensual del plan |
EMAIL_RESERVA | 30 | Envíos del día que el resumen semanal NO toca, para que una invitación a entrevista nunca choque contra el cupo |
UNSUBSCRIBE_SECRET | service role key | Firma los enlaces de baja. Conviene una propia: rotar la service key invalidaría los enlaces de correos ya enviados |
Al pasar a un plan pago alcanza con subir EMAIL_CAP_DIA y EMAIL_CAP_MES
en Vercel; no hay nada que cambiar en el código.
Reiniciá el dev server. La app detecta las variables y pasa a modo live.
app/
(candidato)/ # Lado candidato (mobile-first): feed, detalle, postulaciones, perfil
empresa/ # Lado empresa (desktop-first): panel, vacantes, kanban, perfil
admin/ # Backoffice de moderación (rol admin)
onboarding/ # Alta de candidato con parsing de CV
actions.ts # Server Actions (postular, denunciar, publicar, moderar…)
components/ # UI compartida
lib/
data.ts # Capa de datos (Supabase o mock según configuración)
supabase/ # Clientes browser/server
mock-data.ts # Datos del modo demostración
supabase/
schema.sql # Esquema completo: tablas, triggers, RLS, vistas BI
seed.sql # Datos de prueba
pdf-parse o
llamada a un modelo ligero).applications (campo whatsapp_notified ya previsto).sign_up_completed,
job_applied, cv_uploaded_pdf, job_reported).expires_at) y calcular el sello
"Responde rápido" (promedio de reviewed_at - applied_at < 72 h).