ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
PDF나 사진을 보내면 퀴즈·플래시카드·학습계획·모의고사·작문 교정까지 제공
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
교육TypeScript · CSSGitHub @carlos1128-ship-it온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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, SonnerREADME 전문 보기 ↗
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.