WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A igreja organizada sem perder o cuidado pastoral.
Plataforma multi-igreja de gestão ministerial: boletins, cultos, escalas, repertório musical, cadastro de membros e cuidado pastoral — tudo em um só lugar, com páginas públicas por igreja e app iOS.
| Área | O que faz |
|---|---|
| Boletim | Edição estruturada, publicação pública e compartilhável, histórico de boletins anteriores |
| Cultos | Programação litúrgica, modelos de liturgia (incl. tons musicais maiores/menores) |
| Escalas | Montagem e visualização de escalas de equipe por culto |
| Repertório | Cânticos com cifra, letra e tom; repertório público por igreja |
| Pessoas | Cadastro de membros, cargos/funções, tags de habilidade, controle de acesso |
| Cuidado pastoral | Pedidos pastorais categorizados, com fluxo de acompanhamento |
| Páginas públicas | Apresentação institucional da igreja, cadastro público, pedidos via slug |
| Multi-idioma | Português, Espanhol e Inglês com detecção automática |
| Push (iOS) | Notificações via APNs |
@supabase/ssr)O modelo de dados separa pessoa (cadastro ministerial) de acesso (login), e ambos se relacionam com igrejas via tabelas de vínculo. Esse é o coração do sistema:
auth.users ───┐
│ (auth_user_id)
▼
usuarios_acesso ──< usuarios_igrejas >── igrejas
│ (pessoa_id) │
▼ │
pessoas ─────────< pessoas_igrejas >──────┘
pessoas — cadastro da pessoa (sem igreja_id; o vínculo é só via pessoas_igrejas)pessoas_igrejas — vínculo pessoa↔igreja (cargo, status, ativo)usuarios_acesso — espelho de acesso da pessoa (liga auth_user_id)usuarios_igrejas — vínculo de acesso↔igrejaigrejas — igrejas, identificadas por slug (ex.: ippn-manaus)Triggers no Postgres sincronizam automaticamente: ao criar/atualizar pessoas/pessoas_igrejas, o banco gera/atualiza usuarios_acesso e usuarios_igrejas. O campo tem_acesso não é coluna — é calculado na API a partir de usuario_id.
src/
├── app/
│ ├── (auth)/login/ # Login / primeiro acesso (signup aberto c/ seleção de igreja)
│ ├── (sistema)/ # Área autenticada: admin, boletim, cultos, cânticos, perfil…
│ ├── [slug]/ # Página pública da igreja
│ ├── cadastro/[slug]/ # Cadastro público por igreja
│ ├── pedidos/[slug]/ # Pedidos pastorais públicos
│ ├── oikos/ # Landing institucional
│ ├── privacidade/ # Política de privacidade (pt/es/en)
│ └── api/ # Route handlers (pessoas, finalizar-acesso, admin, …)
├── components/
├── hooks/
├── lib/ # access-sync, permissions, supabase client, …
└── i18n/ # Locale (pt/es/en), provider, messages
sql/ # Migrations e scripts datados
Pré-requisitos: Node 20+ e um projeto Supabase.
npm install
cp .env.local.example .env.local # preencha as chaves (ver abaixo)
npm run dev
Abra http://localhost:3000.
Scripts:
| Comando | Ação |
|---|---|
npm run dev | Servidor de desenvolvimento |
npm run build | Build de produção |
npm run start | Servidor de produção |
npm run lint | ESLint |
Obrigatórias:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
Opcionais (por funcionalidade):
# Mapas
GOOGLE_MAPS_API_KEY=
NEXT_PUBLIC_GOOGLE_MAPS_EMBED_KEY=
# Push iOS (APNs)
APNS_KEY_ID=
APNS_TEAM_ID=
APNS_BUNDLE_ID=
APNS_PRIVATE_KEY= # ou
APNS_PRIVATE_KEY_BASE= # base64
# Jobs agendados
CRON_SECRET=
SUPABASE_SERVICE_ROLE_KEYé secreta — nunca exponha no cliente.
Os scripts SQL ficam em sql/, nomeados por data (YYYY-MM-DD_descricao.sql). Eles cobrem o modelo multi-igreja, i18n de conteúdo, boletins, push e provisionamento.
Aplique no SQL Editor do Supabase, em ordem cronológica. Scripts de diagnóstico/reconciliação rodam dentro de transação com rollback — troque por commit só após revisar.
src/lib/access-sync.ts)/api/finalizar-acesso liga o usuário Auth às tabelas da aplicação após o login/cadastromembro, diacono, presbitero, pastor, seminarista, staff, musico, admin, superadmin/admin/usuariosA função Postgres
email_permitido()controla quem pode se cadastrar. Para signup totalmente aberto, ela retornatrue.
Locales suportados: pt (padrão), es, en. Detecção via cookie oikos-locale → accept-language. Provider em src/i18n/, mensagens em src/i18n/messages. Páginas server-side usam getRequestLocale().
Deploy contínuo na Vercel. Configure as variáveis de ambiente no projeto Vercel. vercel.json define ajustes de runtime/cron.
App nativo iOS (WebView/wrapper) em submissão na App Store. Push via APNs. Política de privacidade pública obrigatória: /privacidade.