Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Criem o site do casamento, acompanhem confirmações de presença e recebam presentes em dinheiro com o Aceito. Conheçam os planos e as taxas.
Translation pending
LifestyleTypeScript · CSSGitHub @lucasnauberth28OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plataforma de gestão de casamentos: painel dos noivos (convidados, RSVP, mesas, credenciamento, finanças, presentes com Pix/cartão, cronograma, WhatsApp), site público do casal e marketplace de fornecedores.
Stack: Next.js 16 (App Router, Server Actions, proxy.ts), React 19, Prisma 7 + Postgres (Supabase),
Mercado Pago, Supabase Storage, Evolution API (WhatsApp), Tailwind 4 + shadcn/ui.
Esta versão do Next.js tem mudanças incompatíveis com versões anteriores. Consulte
node_modules/next/dist/docs/antes de alterar código (vejaAGENTS.md).
cp .env.example .env.local # preencha as variáveis
npm install
npm run db:migrate # aplica as migrations
npm run db:seed # (opcional) fornecedores de demonstração
npm run dev
Scripts úteis: npm run typecheck, npm run lint, npm test.
Todo campo digitável ou selecionável usa o rótulo flutuante (comportamento da variante "on" do FloatLabel do PrimeVue): o rótulo repousa dentro do campo e, com foco ou valor, sobe até a linha da borda, que fica interrompida só atrás dele. O estado vem de CSS (:placeholder-shown, :autofill, :focus), sem re-render por tecla. Estilos em src/components/ui/float-field.css; componentes em src/components/ui/.
<Input label="E-mail" icon={Mail} type="email" error={erro} hint="…" optional />
<Textarea label="Mensagem" />
<Select value={v} onValueChange={setV}><SelectTrigger label="Categoria"><SelectValue /></SelectTrigger>…</Select>
<NativeSelect label="Status">…</NativeSelect>
<DatePicker label="Data" … /> <TimePicker label="Hora" … /> <SearchableSelect label="Cidade" … />
<Field id="x" label="Algo">{(c) => <input {...c} name="x" />}</Field> // controle próprio
Sem a prop label, Input, Textarea e SelectTrigger continuam o primitivo simples (células editáveis, buscas só com lupa). Checkbox, radio, switch, slider, upload e seletor de cor não usam rótulo flutuante. float-field.css é copiado em floatlabel-demo.html quando for levado ao design system.
requirePathPermission("/modulo")
(ou requireAuthSession()) de src/lib/security/auth-guard.ts na primeira linha. Ações públicas
(RSVP, checkout, mural, avaliações, leads, cadastro) validam a entrada com zod e aplicam rateLimitByIp.proxy.ts é deny-by-default e serve apenas para redirecionamento otimista; a autorização real
acontece no servidor, relendo usuário e perfil do banco a cada request./financas. Dados de cartão são tokenizados no
navegador (MercadoPago.js) e nunca passam pelo servidor.src/lib/plans.ts, nunca do navegador.normalizeText, não sanitizeHtmlText): o React já escapa.O build (next build) não acessa o banco: as páginas que leem dados são renderizadas por request.
Migrations também não rodam no build, porque deploys de Preview (qualquer branch) apontariam para
o banco de produção. O antigo prisma db push --accept-data-loss foi removido: ele podia apagar dados.
Aplique migrations de forma explícita, com a DIRECT_URL do ambiente desejado:
npm run db:migrate # prisma migrate deploy
Banco de produção criado com db push (uma única vez): marque as migrations existentes como
aplicadas, para que não sejam executadas sobre tabelas que já existem:
npx prisma migrate resolve --applied 20260428143558_init_marry_app
npx prisma migrate resolve --applied 20261007120000_baseline_current_schema
npx prisma migrate status # deve indicar "Database schema is up to date"
Daqui em diante, mudanças de schema são feitas com npx prisma migrate dev --name <descricao> e
aplicadas com npm run db:migrate antes (ou junto) do deploy que depende delas.
DATABASE_URL e DIRECT_URLDATABASE_URL: pooler em modo transação, porta 6543 (...pooler.supabase.com:6543/postgres?pgbouncer=true).DIRECT_URL: conexão de sessão, porta 5432, usada só pelo Prisma CLI.aws-0-sa-east-1) e o usuário inclui o ref (postgres.<ref>).Tenant or user not found significa que o pooler não reconhece o projeto: região/host
errados, ref errado, ou projeto pausado (projetos gratuitos pausam após inatividade).