Roteiro
Acompanhe o desenvolvimento do Kayozen e sugira melhorias.
Todo14
Persistir user preferences no banco de dados: dark mode, language,
checar se professor recebeu email com sucesso (se email é válido)
Reincaminhar emails enviados para contact@mail.kayozen.com para tubaleviao@gmail.com
Se o professor estiver cadastrado na plataforma e seu perfil for público, a escola consegue ver suas disciplinas que pode lecionar, disponibilidade semanal, limite de horas semanais e dados de contato.
Professor pode aceitar ou recusar convite de aula (verificar se conseguimos saber isso pelo invite do email)
Estudar funcionalidade onde uma escola pode tornar uma aula pública e/ou convidar professores (de perfil público) de outras escolas.
ter certeza que quem controla o limite de tempo que um professor pode trabalhar por escola é a escola.
Ferramenta de exportação de dados
Fazer um marketing para agregar valor
Mudar plano gratuito: coordenadores podem cadastrar infinitos professores fictícios, e apenas 5 professores reais
Feature de chamada no início da aula: alunos da classe ou da aula aparecem na tela e professor confirma ou não se eles estão em sala ou não
Brainstorm outros benefícios para professores
Dar a opção de deixar escola pública
Pesquiser uma forma de transformar o kayozen em uma plataforma de ecomerce de aulas: Professores podem estabelecer um custo de sua aula, ou não, em uma escola fictícia, ajustando o valor de acordo. Kayozen não cobra por aulas gratuitas, e cobra um real para aulas até 10 reais ou 10% do valor total. Professores podem tornar aulas públicas e alunos podem escolher participar ou não. Adicionar feature de preço escalável por inscrićão para aulas públicas (primeiro aluno paga 5, segundo 10, terceiro 15 e etc). Também pesquisar se existem outra plataforma online que já faz algo parecido.
Bugs 🐞0
- Nenhum item nesta lista.
Doing2
Não mostrar Alunos na aula se não tiver Alunos individuais
Se eu abro um card de aula no menu “aulas” e seleciono a opção de exibir dados dos alunos, os dados não são exibidos: 
Bug with pay with google
Something went wrong This merchant is having trouble accepting your payment right now. Try using a different payment method. [OR\_BIBED\_06] OR\_BIBED\_06
Ready for Testing7
Adicionar sistema de ranking de professores
Garantir que, quando uma lecture é criada, apenas professores disponíveis apareçam na tela (naquele horário). Também filtrar professores por disciplina, e adicionar um botão para adicionar disciplina no perfil do professor (e também no modal de criação)
adicionar default date and time to new lecture
Não é possível apagar "Minha primeira escola".
Quando vou digitar o nome da minha escola no campo “Minha Primeira Escola”, tento apagar o texto “Minha primeira escola” no campo, mas ao apagar todas as letras, ele retorna com o texto inteiro. Mobile/mario.armario@email.com
Sinal de "+" não aparece em mobile.
Na tela inicial, aparece o ícone para adicionar professores, turmas e Aulas (no em torno da escola), mas o ícone de “+” não aparece no centro do circulo. Funcionalidade permanece ok. Mobile/mario.armario@email.com
Responsividade (mobile)
Header e footer são menores do que que o restante da tela. A tela exige um scroll pra que seja vista completamente. User: bi.camsetti@gmail.com Device: Redmi note 12 Browser: chrome
Garantir que a mesma classe (ou aluno) não esteja em duas aulas ao mesmo tempo.
Done133
fix db-generate
Caso o professor não esteja disponível naquele horário, não lecione aquela disciplina ou vai estourar seu limite semanal ao lecionar aquela aula, ele não deve aparecer na tela para o coordenador selecionar.
Criar mobile app usando Flutter.
add google pay payment method
See [https://developers.google.com/pay/api/web/guides/tutorial](https://developers.google.com/pay/api/web/guides/tutorial "smartCard-inline")
Make the metadata of the website (school.kayozen.com), to make it discoverable over the internet.
Colocar opção de visualizar senha
Ao criar novo cadastro, adicionar o "olhinho" na senha pro usuário confirmar se as duas senhas estão iguais.
Substituir mensagem de erro 400
Quando o user tentar se cadastrar sem aceitar os termos e condições, substituir a mensagem de erro 400 por um destaque no próprio termos e condições para o bloqueio ficar claro.
Professor's profile should have advanced options, where the coordinator can add a maximum hour limit per week (so the professor can't work more than that limit for that school)
Fix: duplicate subject crash when creating professor with existing subject
Fix: new students from class creation not visible on /students (missing personRole)
Fix pre-launch issues: contact email, duplicate student enrollment, TODO cleanup
## Pre-launch fixes and cleanup ### 1. Contact page email integration (`routes/api/contact.ts`) - Current: only `console.log` the message; has `TODO: Integrate with email service` - Needed: send real email using an email service (SendGrid, Resend, etc.) - **Destination email must come from an environment variable** (e.g. `CONTACT_EMAIL`) - Also update `.env.example` with the new variable ### 2. Prevent duplicate student enrollment (`utils/db/classes.ts` `addStudentsToClass()`) - Current code only filters active students (`departed IS NULL`) — a previously departed student can be re-added - **Requirement: a student cannot be in the same class twice, ever** - Options: add DB-level unique constraint on `(student, class)` OR extend the query to check ALL records (not just non-departed) - Consider adding a unique composite index: `CREATE UNIQUE INDEX ... ON student_class (student, class) WHERE departed IS NULL` - Update `addStudentsToClass()` to return which students were skipped (for better UX feedback) ### 3. Audit and fix all TODOs and disabled/missing features - **Only TODO found**: `routes/api/contact.ts:30` (covered above) - **Disabled billing features** (`islands/Plans.tsx`): - Teacher → "Manage Lectures" (line 224-229, `disabled: true`) - Student → "Manage Lectures" (line 231-238, `disabled: true`) - These show "Not implemented yet" badges in the plan comparison table - Need to either implement these features or remove the rows from the comparison table before launch
Dados destoantes no card de aula.
No menu aulas, o horáro da aula no card está diferente do horário da aula quando eu abro o card. Todos os cards após abertos estão com o mesmo horário (16h10 Às 17h50).  
Design de ícones de detalhes está incorreto.
Ícone de detalhes no menu “Planos”. UI do ícone destoa do restante e linha de área clicável se estende pra além do necessário. 
Adicionar opção de editar dados no menu "Perfil".
Erro ao criar aula
O erro acontece em mobile. Se na tela inicial eu Clico em adicionar aula e coloco todos os dados necessários, ao concluir, ele me dá uma mensagem de erro inesperado. User: bi.camsetti@gmail.com Device: Redmi note 12 Browser: chrome
Erro ao criar novo cadastro
Erro 400 ao criar novo cadastro via mobile (chrome)
professores devem poder cadastrar sua disponibilidade (exemplo: de seg a sex, das 8 as 18)
usuario recebe email de confirmaćao de email mesmo pelo invite formal com 3 meses free.
Usaário também perde o beneficio se ele clica em logar com o google.
Corrigir tradução do botão do Google Pay
Upon evaluating your latest interface layouts, we noticed that your localized translation engine is rendering our asset text incorrectly as "Sign up with Gpay." Please note that Google Pay does not provide a custom "Sign up" button variant. Per our official brand guidelines, the trademarked name must never be abbreviated, and the button string must explicitly retain its dedicated payment context. Required Action Item: Override the Translation: Please update your localization configurations to override this string. The button must match our officially approved design layouts. [https://developers.google.com/pay/api/web/guides/brand-guidelines](https://developers.google.com/pay/api/web/guides/brand-guidelines "smartCard-inline")
Enviar email para usuário quando sua assinatura for ativada com sucesso
refactor: interfaces, constants and i18n translations
Implement "Profile Deletion"
Test pagbank API beforehand
Verificar se tem como fazer o pagbank não mandar mensagem para o usuário final
Quando eu tento assinar pela segunda vez, recebo um erro
The customer cannot be created, as there is already a customer registered with the informed tax_ID. Check that the data is correct and try again.
Cancel subscription not working on Plans screen, also add green color to the add buttons
Remover todas as referências do pagbank, o usuário não precisa saber qual é a instituição de banco por trás
Não foi possível importar lista de alunos.
Não foi possível importar lista de alunos no formato txt. Possivelmente algum problema relacionado à IA:  O erro ocorre mesmo com “alunos” no nome do arquivo e mesmo com “alunos” escrito no topo da lista.
Menu "Alunos" está vazio.
Mesmo com alunos cadastrados em duas turmas, o menu “Alunos” encontra-se vazio, como se nenhum estudante tivesse sido cadastrado ainda:  User: Max Prataviera Neto
Dados estão sempre ocultos no menu professores.
Se eu seleciono um professor no menu de professores, eu não tenho a opção de desocultar os dados dele (dados sempre ocultos):  User: Max Prataviera Neto
Dados não ficam ocultos na aba de matérias.
No menu “matérias”, quando eu clico para ocultar “escola”, “Total de aulas” e “Professores”, nenhum deles fica oculto.  User: Max Prataviera Neto
Pre-launch fixes: duplicate student-class, contact email, TODOs
Three pre-launch fixes needed: 1. Prevent duplicate student-class enrollments (student in same class twice) 2. Implement email sending on /contact page (destination from env var) 3. Find and resolve all TODO comments and missing implementations
UX and UI improvements: make the whole application look and feel better
There are a few animations and design that are different, even in similar components. Let's make some sort of default behavior across the whole app for animations and page design. Also the nav bar is getting full, let's solve that too. Follow the color set in the main css styles file. You can add new colors if it gets better.
e2e tests
Profile visibility: coordinators see all, CNPJ-gated joins, admins lose toggle control, CPF always hidden
Changes to the profile visibility system: 1. Coordinators can always see/edit all professor's or student's information of their school, even if hidden (except password) 2. Once the school has a CNPJ, new coordinators can only join it if invited by another coordinator 3. Admins no longer get to set which fields are hidden/not, but they can still see everything 4. CPF always hidden; default visibility = all hidden. Students/professors/coordinators set their own visibility
Google people are not being registered as verified users.
Send email to the professor when assigned to classes (only once if multiple classes)
Fix speed issue with school.kayozen
Implement important notification history, which user need to see (that had an email)
Promp1t: Lets implement the important notification system, in which the user must meet some criteria before it can be marked as "read", like visiting a specific page or clicking on it. I do have the toast system, but that is only for pontual messages, like "success" or "error" messages. These important notification should have a history so the user can see old notifications. Prompt2: Lets also implement the notification for the professor: whenever the coordinator creates a lecture and selects a professor that has an email, the coordinator should get a confirmation popup asking if he wants to notify the professor. If so, the system should send an email with a calendar invite, and, if the coordinator chooses, a link for the class (the system should support MSTeams, Google Meet or Zoom links for the class, if the coordinator wishes).
Criar agente de AI para importar planilhas (ou csv) de professores / aulas / classes e alunos
criar páginas de perfil para escola, professores e coordenadores
Habilitar a possibilidade de cadastrar professor não fictício
não salvar cookies de autenticação se remember-me não for selecionado
Criar limitacao de acordo com plano, mudar o registro do usuario quando assinar um plano
Pedir CPF antes de pedir informaćao do cartao de crédito, se já não estiver cadastrado
Modal de adicionar aula não tem scroll.
Quando eu clico em adicionar aula, o modal se abre, mas o conteúdo da parte superior e inferior do modal fica cortado. Ao tentar escrolar, somente a página em blur, ao fundo, escrola. Isso não me permite salvar a criação de aula. 
Erro inesperado ao criar professor.
Quando eu não tenho nenhuma turma criada e clico em adicionar professor, eu adiciono todos os dados necessários e, ao confirmar, o professor não é adicionado e aparece uma mensagem de erro:  User: Max Prataviera Neto
Não é possível add "novo papel".
Na lista suspensa de role, ao clicar em “adicionar novo papel”, sou redirecionada para a página de login com uma mensagem de erro. 
Botão "Kayozen" desloga o user da página.
Após login, se eu clico no botão “kayozen” no topo da tela, ele leva a tela inicial, mas faz logout. Qual a regra? Ele deveria somente levar à tela incial, certo? 
redDirecionamento incorreto ao clicar em "Create role".
Quando eu clico no botão “Create role”, no centro da tela, eu sou direcionada à página de boas vindas com uma mensagem de erro de jwt signature: Para reproduzir: Cadastro → tela de boas vindas clique em “começar” → Clique em “create role”.  
redDirecionamento incorreto ao clicar em "Create School".
Quando eu clico no botão “Create School”, no centro da tela, eu sou direcionada à página de boas vindas com uma mensagem de erro de jwt signature: Para reproduzir: Cadastro → tela de boas vindas clique em “começar” → Clique em “Create School”.  
redCriar API com banco, com subscriptions
Criar testes automatizados
Erro de tradução em mensagem de operação finalizada.
Quando eu finalizo a criação de um professor, a mensagem de conclusão aparece em inglês, mesmo a língua padrão selecionada sendo português: 
Botão "confirmar" não aparece o cursor, mas está clicável.
Página: Selecionar papel → coordenador → botão “confirmar”. Após três cliques, foi feito novo login, e existem três papei de coordenador para o mesmo perfil. 
Make user able to cancel the subscription
Criar página de subscriptions e passar a usar o parametro activeSubscription
Corrigir botão de criar plano "Create Everywhere" na pagina de planos no admin page
Corrigir profile: mostrar nome do plano e não o ID.
Pagbank plan is being created, but it is not saving that in the user's profile.
fix current user profile page
Add a good looking error page if page was not found.
Botão "Privacidade" no footer não funciona.
Quando eu clico no botão “Privacidade” no footer da página, ele me leva para uma mensagem de “Página não encontrada”.  
Botão "Contato"no footer não funciona.
Quando eu clico no botão “Contato” no footer da página, ele me direciona para a mensagem de “Página não encontrada”.  
Menu "Professores" no topo da tela não funciona.
Quando eu clico no menu de professores no topo da tela, ele me leva a uma mensagem de erro: 
Botão "Perfil" não funciona.
No ícone de usuário, quando eu clico em “Perfil”, sou direcionada para uma tela de “Página não encontrada”.  
Menus superiores suprimidos
Após cadastro, na tela inicial de “create role” ou “create school”, se eu clico no menu superior “Planos” ou “sobre”, eu sou direcionada corretamente às telas, mas os outros menus “Aulas”, “Professores”, “Matérias” e “Turmas” desaparecem: Tela inicial:  Página “Planos”:  Páginas “Sobre”: 
Menu "Turmas" no topo da tela não funciona.
Quando eu clico no menu “Turmas” no topo da tela, ele me leva para uma mensagem de “Página não encontrada”. 
Menu "Matérias" no topo da tela não funciona.
Quando eu clico no botão “Matérias” no topo da tela ele me leva para uma mensagem de “página não encontrada”. 
Menu "Aulas" no topo da tela não funciona.
Quando eu clico no botão “Aulas” no topo da tela, ele me leva para uma mensagem de “página não encontrada”: 
Adicionar implementaćão de repetićao de lectures
Add professors page with professors list
Erro: Subject duplicated key
'insert into "subject" ("id", "name", "school") values (default, $1, $2) returning "id", "name", "school"', params: [ "English", "30ce7510-2f72-11f1-af55-05d9b22fe90d" ] cause: PostgresError: duplicate key value violates unique constraint "subject\_name\_key"
O modal de criar um professor pode criar vários iguais se apertar enter várias vezes
Erro ao tentar cadastro via Google account
Quando eu tento realizar o cadastro no site via Google account, as etapas de confirmação devem ser apresentadas, e o processo de cadastro finalizado com sucesso. Atualmente, ao passar por todas as confirmações, sou direcionada a uma página de erro. 
Erro HTTP 500 no momento de cadastro
 Quando o usuário tenta se cadastrar sem SSO, aceitando os termos de condições, então o cadastro deveria ser realizado com sucesso. Atualmente, esse fluxo não é finalizado e leva a uma mensagem de HTTP erro 500.
Add main functionality: week timeline
Prompt: I changed the "School Settings" label to "Week Timeline", it looks like this: {/\* WEEK TIMELINE \*/} <div class=" text-center pointer-events-none lg:absolute lg:bottom-0 lg:left-1/2 lg:-translate-x-1/2 "> Week Timeline </div> Help me add a component to show the current week, with each square representing each day of the current week (so one week will be 7 squares side-by-side). This component should receive a "day" props in milliseconds with the day of reference, and build the week in which that day is in. The default day should be today (new Date.getTime). Each day square should show the respective classes, registered in the database. The color of each class should follow this configuration: light white if no teacher and student is assigned to it, light red if it has student but no teacher, light green if it has both, and light yellow if there is a teacher but no student.
Implementar ORM (denodb)
Waiting on this PR: [https://github.com/Zhomart/dex/pull/1](https://github.com/Zhomart/dex/pull/1 "smartCard-inline")
fix oauth google login
Corrigir tela de edićão de escola
Implementar ORM
Tentando primeiro com drizzle
Criar balões com professores no dashboard
dashboard should redirect to home if no jwt token
Added balloon notifications (toast)
update das versões do deno, fresh e tailwind.js
Fazer a página "Quem Somos"
Colocar foto e nome de pessoas, com o tempo de início e timeline
Colocar um checkbox selecionado by default na criação de professor / escola, marcando como "fictício". Pedir por CPF / CNPJ caso desmarcado
Adicionar logout
Bug: Unauthorized ao criar escola
Colocar timeout para conexão com o banco
Adicionar footer em todas as páginas (alguimas estã sem footer)
usar um sistema de pagamentos (stripe ou pagar.me)
Arrumar a conexão com o banco no Deno deploy
Corrigir problema onde cargo não fica registrado depois de escolher + desabilitar cargos
Corrigir problema com jwt
Tratar error handling na conexão com o banco de dados (e talvez mostrar nos logs quando está conectado ou não)
fazer com que a aplicação não dispare várias requisições para o banco de dados no arquivo db.ts
adicionar tabelas no banco (e talvez salvar sql na codebase?)
create Deno deploy project
create supabase database service
configurar deno deploy
Configurar servidor para rodar aplicação
Salvar o JWT token na session ao invés do email e buscar dados de usuário pelo midleware
Criar um dashboard onde o usuário consegue cadastrar uma escola (visível só para ele). Se coordenadores, criar também professores. Cada usuário tem apenas uma role, sendo necessário criar outra conta para mudar (usuários Premium podem ser professor e coordenador ao mesmo tempo).
implementar logout
mudar navbar para usuarios logados
testar login com email
configurar banco local para testes
criar tela de cadastro
Definir Frontend
Definir Backend
Decidir um nome para o projeto
Planejamento do Banco de Dados
Definir público alvo inicial
Fix theme switching
Criar página de cadastro para professores, quando recebem email e não estão cadastrados: coordenador cadastra professor > registra classe > professor recebe email com link > tela de boas vindas > realiza cadastro > cria senha e loga
Prompt: Whenever a coordinator create a lecture in this project, and adds a professor that has an email registered, it will ask to send an email with a calendar invitation to the professor. If a professor have never logged in into the application (we can add a field to the people schema indicating that the user have already logged in the past, like "joined date"), lets include in the email a good looking invitation to join the school in Kayozen. The link should take the professor to a welcome page, where he can type a password or join with a google account (we can probably use the signup page, but lets make sure the user gets linked to the same email the coordinator registered. Lets make it possible to the user have multiple emails linked to the same account, so it won't matter if he chooses a different google account in the signup page). We probably want to decouple the login information from the people schema.
Aulas criadas só ficaram disponíveis na tela após F5.
Após salvar a criação de aulas, elas só apareceram no menu principal após dar refresh na página: 
Criar página "contact us"
Colocar um dropdown na hora de criar a escola, para poder selecionar escolas já criadas quando possuirem um cnpj cadastrado
Opção "Escolha os alunos" inativa.
Quando eu vou para a tela principal e clico para adicionar uma nova aula, no processo de criação o campo “Escolha os alunos” está inativo: 
Dados não ficam ocultos na aba de turmas.
Quando eu seleciono a opção de ocultar os dados no menu “Turmas”, somente o dado “Aula” fica oculto.  User: Max Prataviera Neto
oAdd loading state to lectures (I created the same lecture multiple times by clicking on it)
Pesquisar API para validação de CNPJ e máscara para validação de CPF + máscara
Anexar os termos e condições no momento do cadastro.
Detalhar o card de plano gratuito
No card de plano gratuito, quantas funções são disponíveis para a escola? Seria interessante um call to action pra ele também, e não só para os pagos.
Substituir mensagem de erro "people" does not exist
 Criar uma mensagem de erro mais clara para quando o usuário tentar acessar sem cadastro. A mensagem atual pode não ser tão clara.
Alterar mensagem de operação bem sucedida na criação de professor + disciplina.
Criar uma mensagem mais genérica.
Make the "import" button a feature that's available only for paid plans.
Botão de dúvidas ou informações na página de planos
Nos cards de planos, talvez criar um button que abra um modal ou takeover com conteúdo de dúvidas/informações com o detalhamento de cada plano. É importante o usuário ter ciência de tudo o que é coberto pelo valor pago.
Encrypt all sensitive data on the database (like CPF, birthdate, etc)
Fix deno check type errors: PageProps → Context<KayozenState> in handler functions
11 API route handler functions were incorrectly typed with `PageProps` (component render props) instead of `Context<KayozenState>` (Fresh handler context). This caused `requireDbUser(ctx)` and `optionalDbUser(ctx)` calls to fail type checking because `SessionContext` expects `{ req: Request; state: { dbUser?: DbUser } }` which `Context<KayozenState>` satisfies but `PageProps` doesn't. Affected files: - routes/api/billing/public-key.ts - routes/api/billing/subscribe.ts - routes/api/choose-role.ts - routes/api/class/[id]/profile/index.ts - routes/api/lecture/[id]/index.ts - routes/api/notifications/[id].ts - routes/api/notifications/index.ts - routes/api/profile.ts - routes/api/schools/[id]/students/index.ts (missing generic type arg) - routes/api/subject/[id]/index.ts - routes/schools/[id].tsx
Review all code files and check for similar implementations, that appears in more than one place, that can become functions or components. Functions can go to `/utils` folder and components in `/components`.
Suggestions 💡3
Descoped6
add nubank payment method
See [https://docs.nupaybusiness.com.br/checkout/docs/openapi/index.html](https://docs.nupaybusiness.com.br/checkout/docs/openapi/index.html "smartCard-inline")
mudar email para kayozen.com
configurar o github actions
Deno deploy does the same thing
create fresh layout
Adicionar Open Telemetry?
Implementar gamificação
Definir uma lista de achievements que o usuário pode alcançar, como completar perfil, fazer login com o Google, cadastrar escola, entre outros.
Roadmap6
Info
[https://console.deno.com](https://console.deno.com/kayozen/kayozen "") [https://resend.com/emails](https://resend.com/emails "smartCard-inline") [https://console.prisma.io/cmqe8vx9c175f2hf5ilfkov6q/dashboard](https://console.prisma.io/cmqe8vx9c175f2hf5ilfkov6q/dashboard "smartCard-inline")
Desenvolvimento do MVP
Lançamento & Marketing
Validação do MVP com Escolas
Pós-lançamento
Mensagem de sessão expirada (?)
Após um tempo reportando bug no Trello, fui navegar pelas opções do menu e recebi uma mensagem de não autorização.
Sugira uma melhoria
Tem uma ideia ou encontrou um bug? Envie sua sugestão e ela será adicionada ao nosso backlog.
Faça login para enviar uma sugestão. Entrar