📚 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.
{
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%
.
- 🔗 Relacionamento com a coleção
🏆 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.