ai-startup-skills
创业公司做 AI 产品的 7 步 Agent Skill 合集:验证 → BP → 政策 → 路演 → 获客 → 定价 → 注册。
Translation pending
Diário cristão para mulheres: reflexões sobre fé, propósito, identidade em Cristo, devocionais e vida com Deus todos os dias.
Translation pending
OtherTypeScript · CSSGitHub @guihpOnlineOwner 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 ↗Blog cristão feminino em formato de diário: artigos, biblioteca de devocionais, integração com o YouTube, newsletter e painel administrativo.
Feito com Next.js 15 (App Router), Supabase (banco, login e imagens) e CSS próprio.
npm install
npm run dev # http://localhost:3000
Sem nenhuma configuração, o site abre em modo demonstração: os 8 textos, 4 devocionais e 4 vídeos de exemplo (todos com o selo “Exemplo”) vêm de src/content/demo.ts.
supabase/schema.sql. Ele cria as tabelas, as políticas de segurança (RLS), o bucket de imagens media e as 8 categorias..env.example para .env.local e preencha:
NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_ANON_KEY (em Project Settings → API; use a chave anon/publishable, nunca a service_role).NEXT_PUBLIC_SITE_URL com o endereço final do site.insert into public.admins (user_id)
select id from auth.users where email = '[email protected]';
admins.| Área | Funções |
|---|---|
| Artigos | criar, editar, excluir, salvar rascunho, publicar/despublicar, agendar (data futura), capa com texto alternativo, categoria, SEO |
| Editor de texto | botões para título, subtítulo, negrito, itálico, link, lista, citação, versículo em destaque, imagem (upload), divisor, além de pré-visualização |
| Devocionais | todos os campos (referência, contexto, reflexão, aplicação, perguntas, oração) e escolha do devocional da semana |
| Vídeos | colar o link do YouTube, playlist/tema, destaque, miniatura personalizada |
| Categorias | criar, renomear, reordenar, excluir |
| Página inicial e textos | nome do blog, frase principal, foto do hero, carta de boas-vindas, newsletter, rodapé, página Sobre Mim (texto + foto), canal do YouTube e redes sociais |
| Newsletter (Brevo) | inscritas, últimas cartinhas com abertura e cliques, escrever e enviar uma cartinha (texto, devocional, vídeo ou cartinha livre) com prévia e envio de teste, sincronizar os modelos com o Brevo e ver os registros DNS do domínio |
is_admin() só vale com a verificação em duas etapas (aal2). Quem tiver só a senha não altera nada, nem pela API.delete from auth.mfa_factors
where user_id = (select id from auth.users where email = '[email protected]');
Versículos e referências: no editor, o botão “✿ Versículo” cria um bloco assim:
::: versiculo João 15:5
Eu sou a videira, vós as varas…
:::
Referências escritas no meio do texto (ex.: Salmos 23:1, 1 Coríntios 13:4-7) são destacadas automaticamente.
O formulário envia para /api/newsletter, que valida o e-mail e repassa ao serviço escolhido. As chaves ficam só no servidor. Defina no .env.local:
| Serviço | Variáveis |
|---|---|
| Buttondown | NEWSLETTER_PROVIDER=buttondown, BUTTONDOWN_API_KEY |
| MailerLite | NEWSLETTER_PROVIDER=mailerlite, MAILERLITE_API_KEY, MAILERLITE_GROUP_ID (opcional) |
| Brevo | NEWSLETTER_PROVIDER=brevo, BREVO_API_KEY, BREVO_LIST_ID |
Com o Brevo, quem se inscreve recebe na hora uma cartinha de boas-vindas, e o painel ganha a página Newsletter (envio de cartinhas, inscritas e estatísticas). Os modelos de e-mail ficam em src/lib/email-templates.ts. No Brevo, desative o bloqueio de IPs desconhecidos (Security → Authorised IPs), porque a Vercel não tem IP fixo. Para as cartinhas não caírem no spam, autentique o domínio: os registros DNS aparecem no próprio painel.
Enquanto nada estiver configurado, quem tentar se inscrever recebe o aviso “As cartinhas ainda não estão abertas para inscrição”. Nenhum e-mail é guardado nem aparece como inscrito.
Estatísticas: execute também
supabase/analytics.sqlno SQL Editor (já aplicado no projeto atual). A cidade e o país dos visitantes aparecem quando o site está publicado na Vercel.
Google: depois de publicar, cadastre o site no Google Search Console, cole o código de verificação no painel (Página inicial e textos → Google e SEO) e envie o endereço
/sitemap.xml.
O jeito mais simples é a Vercel: importe o repositório, cadastre as mesmas variáveis do .env.local e publique. Depois do primeiro deploy, atualize NEXT_PUBLIC_SITE_URL com o domínio final.
| O quê | Arquivo |
|---|---|
| Nome do blog e textos padrão | src/config/site.ts |
| Cores, fontes e estilos | src/app/globals.css (variáveis no topo) |
| Conteúdo demonstrativo | src/content/demo.ts |
| Banco de dados e segurança | supabase/schema.sql |
BlogPosting./sitemap.xml, /robots.txt (o /admin fica fora do Google) e feed RSS em /feed.xml./blog/titulo-do-texto, /blog/categoria/vida-no-secreto, /devocionais/permanecer-na-videira.youtube-nocookie.com, que só carrega quando a pessoa clica em assistir, deixando a página mais leve.As imagens em public/images foram geradas com IA (OpenAI gpt-image) com a mesma direção de arte do site, e os efeitos em public/images/efeitos (pétalas, rosa e fita de cetim) foram renderizados no Blender pelos scripts de scripts/blender. Nenhuma delas retrata pessoas reais; substitua-as pelas suas fotos quando quiser.