Desenvolvedores
src_
collections
Alunos.js

📚 Coleção Alunos.js

O arquivo Alunos.js define a coleção Alunos, responsável por armazenar as informações dos estudantes. A coleção contém dados como email, CPF, cursos inscritos, progresso, experiência (XP) e certificados.


⚙️ Configuração da Coleção

A estrutura básica da coleção é definida assim:

import { CollectionConfig } from 'payload'
 
export const Alunos: CollectionConfig = {
  slug: 'alunos',
  access: {
    create: () => true,
  },
  auth: true,
  labels: {
    singular: 'Aluno',
    plural: 'Alunos',
  },
  fields: [ /* Campos serão detalhados abaixo */ ],
}

🔹 Explicação

  • slug: Define o identificador único da coleção (alunos), usado nas rotas do sistema.
  • access.create: Permite que novos registros sejam criados.
  • auth: Habilita autenticação para a coleção.
  • labels: Configura os rótulos para exibição no painel administrativo.

🏷️ Campos da Coleção

A seguir, detalhamos os principais campos da coleção.

📧 Email

{
  name: 'email',
  type: 'email',
  required: true,
  unique: true,
}
  • Armazena o email do aluno.
  • Deve ser único e obrigatório.

🆔 CPF

{
  name: 'cpf',
  type: 'text',
  required: true,
  unique: true,
}
  • Guarda o CPF do aluno.
  • Deve ser único e obrigatório.

👤 Nome Completo

{
  name: 'nomeCompleto',
  type: 'text',
  required: true,
  maxLength: 100,
}
  • Nome do aluno, com limite de 100 caracteres.

🎓 Meus Cursos

{
  name: 'meusCursos',
  type: 'array',
  admin: { readOnly: true },
  fields: [
    { name: 'curso', type: 'relationship', relationTo: 'cursos' },
    { name: 'progresso', type: 'number', defaultValue: 0 },
  ],
}
  • Lista de cursos matriculados.
  • Contém:
    • 🔗 Relacionamento com a coleção cursos.
    • 📊 Progresso do aluno no curso, iniciado em 0%.

🏆 Experiência (XP)

{
  name: 'xp',
  type: 'number',
  admin: { readOnly: true },
  defaultValue: 0,
}
  • Armazena pontos de experiência (XP) do aluno.
  • Começa com 0 XP.

🔥 Dias Consecutivos

{
  name: 'diasConsecutivos',
  type: 'group',
  admin: { readOnly: true },
  fields: [
    { name: 'ultimoAcesso', type: 'date' },
    { name: 'contagem', type: 'number' },
  ],
}
  • Registra o último acesso do aluno.
  • Mantém a contagem de dias consecutivos de login.

🎖️ Certificados

{
  name: 'certificados',
  type: 'array',
  admin: { readOnly: true },
  fields: [{ type: 'text', name: 'certificado', maxLength: 255 }],
}
  • Lista de certificados conquistados pelo aluno.
  • Cada certificado pode ter até 255 caracteres.

⏳ Último Login

{
  name: 'UltimoLogin',
  type: 'date',
  admin: { readOnly: true },
}
  • Armazena a última data de login do aluno.

📝 Código Completo

Aqui está o código da coleção Alunos.js na íntegra:

import { CollectionConfig } from 'payload'
 
export const Alunos: CollectionConfig = {
  slug: 'alunos',
  access: {
    create: () => true,
  },
  auth: true,
  labels: {
    singular: 'Aluno',
    plural: 'Alunos',
  },
  fields: [
    {
      name: 'email',
      type: 'email',
      required: true,
      unique: true,
    },
    {
      name: 'cpf',
      type: 'text',
      required: true,
      unique: true,
    },
    {
      name: 'nomeCompleto',
      type: 'text',
      required: true,
      maxLength: 100,
    },
    {
      name: 'meusCursos',
      type: 'array',
      admin: { readOnly: true },
      fields: [
        {
          name: 'curso',
          type: 'relationship',
          relationTo: 'cursos',
        },
        {
          name: 'progresso',
          type: 'number',
          defaultValue: 0,
        },
      ],
    },
    {
      name: 'xp',
      type: 'number',
      admin: { readOnly: true },
      defaultValue: 0,
    },
    {
      name: 'diasConsecutivos',
      type: 'group',
      admin: { readOnly: true },
      fields: [
        {
          name: 'ultimoAcesso',
          type: 'date',
        },
        {
          name: 'contagem',
          type: 'number',
        },
      ],
    },
    {
      name: 'certificados',
      type: 'array',
      admin: { readOnly: true },
      fields: [
        {
          type: 'text',
          name: 'certificado',
          maxLength: 255,
        },
      ],
    },
    {
      name: 'UltimoLogin',
      type: 'date',
      admin: { readOnly: true },
    },
  ],
}

✅ Conclusão

A coleção Alunos foi projetada para armazenar informações essenciais sobre os alunos, garantindo a integridade e o fácil gerenciamento dos dados. 🏫

📌 Destaques da coleção:

  • Email e CPF únicos para evitar duplicações.
  • Autenticação ativada para segurança.
  • Progresso dos cursos e XP gerenciados automaticamente.
  • Controle de login e certificados para acompanhamento do desempenho.