ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Envie PDF ou foto da matéria e receba quiz com explicação, flashcards com revisão espaçada, plano de estudos, simulados e correção de redação. Para escola, faculdade, vestibular e concurso. Teste 7 di
Translation pending
EducationTypeScript · CSSGitHub @carlos1128-ship-itOnlineOwner 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
A Easy Education é uma plataforma SaaS com inteligência artificial que ajuda estudantes a organizar, personalizar e otimizar seus estudos. O sistema permite conversar com uma IA educacional, enviar materiais, gerar resumos, quizzes, flashcards, simulados, planos de estudo personalizados e corrigir redações com base em modelos como ENEM e SAT.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
MVP SaaS educacional com Next.js, Supabase, Prisma e Gemini. Slogan: Estude melhor, nao apenas mais. • Next.js App Router + TypeScript strict • Tailwind CSS + shadcn/ui • Supabase Auth, PostgreSQL e Storage • Prisma ORM • Google Gemini via @google/genai • pdf-parse, React Hook Form, Zod, Recharts, Lucide, SonnerRead the full README ↗
MVP SaaS educacional com Next.js, Supabase, Prisma e Gemini. Slogan: Estude melhor, nao apenas mais.
@google/genaipdf-parse, React Hook Form, Zod, Recharts, Lucide, Sonnersrc/lib/plans.ts. Sem assinatura ou teste em vigor, o app manda para /assinar e as rotas de IA recusam (402). Formas de pagamento: src/lib/payment-methods.ts (cartao pelo Stripe; Pix Automatico preparado, sem gateway). O servidor aplica todos os limites (consumeFeature em src/lib/usage.ts, com lock por aluno); a interface so mostra avisos e cadeados. Janelas diarias e semanais seguem o horario de Brasilia.ai_call_logs. Tela interna: /dashboard/interno/custos (e-mails em ADMIN_EMAILS). Ver docs/consumo-ia.md.exams, bank_subjects, bank_topics, bank_questions e relacionadas. Importacao e classificacao por scripts em scripts/bank/ (ver docs/fontes-questoes.md). Reports e revisao de professor em /dashboard/interno/questoes.docs/evidencias.md e /evidencias.docs/plano-proxima-fase.md. Antes de publicar, aplique a migration 000011_proxima_fase (npx prisma migrate deploy).scripts/eval/ e resultados em docs/confiabilidade-ia.md./termos e /privacidade (texto em src/content/legal.ts, precisa de revisao juridica).npm test (Vitest, regras puras) e, contra o banco configurado, npx tsx --env-file=.env.local scripts/usage-smoke.ts e scripts/bank-smoke.ts (usam alunos de mentira e apagam o que criam).npm install
cp .env.example .env.local # no PowerShell: Copy-Item .env.example .env.local
npm run db:generate
npm run dev
As migrations criam/atualizam o bucket privado arquivos, RLS e Realtime.
NEXT_PUBLIC_SUPABASE_URL=https://seu-projeto.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=sua_chave_anon
# Alternativa aceita pelo codigo:
# NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_sua_chave
SUPABASE_SERVICE_ROLE_KEY=sua_service_role_key
GEMINI_API_KEY=sua_chave_gemini
GEMINI_MODEL=gemini-2.5-flash
DATABASE_URL=postgresql://postgres:[email protected]:5432/postgres
DIRECT_URL=postgresql://postgres:[email protected]:5432/postgres
NEXT_PUBLIC_APP_URL=http://localhost:3000
O app detecta placeholders de Supabase em desenvolvimento. Se NEXT_PUBLIC_SUPABASE_URL ou a key publica ainda estiverem com valores de exemplo, os formularios de login/cadastro exibem uma mensagem clara em vez de falhar silenciosamente.
GEMINI_API_KEY deve ficar somente no servidor (.env.local localmente e variaveis de ambiente da Vercel em producao). Nao use prefixo NEXT_PUBLIC_ nessa chave.
SUPABASE_SERVICE_ROLE_KEY tambem deve ficar somente no servidor. O cadastro do MVP usa essa chave, quando configurada, para criar usuarios via Admin API e evitar bloqueios do fluxo publico de signUp. Nunca use NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY.
NEXT_PUBLIC_SUPABASE_URL.NEXT_PUBLIC_SUPABASE_ANON_KEY ou NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY.DATABASE_URL e DIRECT_URL com a connection string Postgres do Supabase.NEXT_PUBLIC_APP_URL=http://localhost:3000 em desenvolvimento.Authentication > URL Configuration.Site URL: http://localhost:3000 em desenvolvimento.http://localhost:3000/** em Redirect URLs./auth/callback como redirect padrao. Se customizar o template de e-mail com token_hash, a rota /auth/confirm tambem esta implementada.npm run dev apos alterar .env.local.Fluxo esperado:
/onboarding.Conta criada. Verifique seu e-mail para confirmar o cadastro.Profile e redireciona para /onboarding ou /dashboard.Fluxo: landing (/cadastro?plano=basico|completo) -> cadastro (e-mail ou Google) -> /assinar -> Stripe Checkout -> /assinar/sucesso -> onboarding -> dashboard. Sem assinatura ativa, o dashboard, o onboarding e todas as rotas de IA ficam bloqueados.
easy_basic_monthly (R$ 19,90) e easy_full_monthly (R$ 34,90); o valor no Stripe precisa bater com src/lib/plans.ts (o checkout recusa cobrar se os dois forem diferentes).POST /api/stripe/webhook (eventos de checkout, assinatura e fatura). Cada evento e processado uma vez (stripe_events)./dashboard/assinatura./dashboard/assinatura reembolsa tudo e encerra na hora.src/lib/plans.ts (ver docs/consumo-ia.md).subscriptions (RLS: o aluno so le a propria; so o servidor grava).Variaveis: STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, opcionais BILLING_EXEMPT_EMAILS e BILLING_REQUIRED=false. Sem STRIPE_SECRET_KEY a cobranca fica desligada e o app funciona como antes.
Teste local do webhook: stripe listen --forward-to localhost:3000/api/stripe/webhook (use o whsec_ mostrado pela CLI). O retorno do checkout tambem confirma o pagamento sem depender do webhook.
/onboarding, refazível em Configurações): motivo do estudo (escola, ENEM/vestibular, concurso, faculdade, intercâmbio/idioma, certificação, conhecimento livre), detalhes de cada caso (série, prova, banca, curso, idioma e nível QECR), rotina (dias, horário), matérias ou habilidades, dificuldades e jeito preferido de explicação. Fica em profiles.personalization e alimenta quiz, simulado, flashcards, plano, chat e redação (src/lib/learner-profile.ts, src/lib/exam-style.ts)./dashboard/arquivos): o aluno cola o link (vídeo público, trecho de até 60 min); a IA assiste em segundo plano e gera anotações com marcas de tempo. Quiz, flashcards e simulado do vídeo apontam o minuto de origem, que vira link. Mesmo vídeo/trecho é reaproveitado sem nova leitura (src/lib/youtube.ts, POST /api/videos).src/lib/enem-essay.ts).docs/consumo-ia.md.npm run db:generate
npx prisma validate
npx prisma migrate deploy
O schema Prisma esta em prisma/schema.prisma. O seed nao cria dados artificiais; o app usa dados reais por usuario.
npm run dev
npm run lint
npm run build
npm run build.postinstall rode prisma generate.As rotas protegidas validam sessao Supabase em src/proxy.ts (Next.js 16) e as API routes revalidam o usuario no servidor.