Skip to content

Latest commit

 

History

History
313 lines (290 loc) · 10.3 KB

File metadata and controls

313 lines (290 loc) · 10.3 KB

Tera Code Challenge

Objetivo

Desenvolver uma aplicação web simples que demonstre suas habilidades com Next.js, React Server Components, Server Actions e gerenciamento de estado no cliente.

Requisitos

Tecnologias Obrigatórias

Funcionalidades

1. Página Principal - Catálogo de Cursos

  • Criar uma página principal que exiba um catálogo de cursos utilizando SSR
  • Os dados devem ser do JSON fornecido ao final deste documento
  • A página deve mostrar os cursos em cards com:
    • Título do curso
    • Descrição curta
    • Categoria
    • Nível de dificuldade

2. Funcionalidade de Filtros (Estado Client-Side)

  • Implementar filtros para os cursos por:
    • Categoria (todas categorias disponíveis no JSON)
    • Nível de dificuldade (iniciante, intermediário, avançado)
  • Os filtros devem ser gerenciados com estado client-side
  • A filtragem deve acontecer sem recarregar a página

3. Detalhe do Curso

  • Ao clicar em um curso, exibir uma página de detalhes com:
    • Todas as informações do curso
    • Lista de módulos
    • Botão para "Matricular-se" chamando uma Server Action apropriada (a action não precisa fazer nada, apenas retornar sucesso)

4. Bônus (opcional)

  • Utilizar framer-motion para animações ou transições

Critérios de Avaliação

Seu projeto será avaliado com base nos seguintes critérios:

  1. Qualidade do código

    • Clean code, legibilidade e organização
    • Componentização adequada
    • Tipos apropriados (TypeScript é um diferencial)
    • Ser executado sem erros depois de npm install e npm run dev
  2. Uso correto das tecnologias

    • Implementação adequada de Server Components e Server Actions
    • Uso apropriado de Client Components apenas onde necessário
    • Gerenciamento eficiente de estado client-side
  3. Experiência do usuário

    • Interface visual agradável e responsiva
    • Feedback ao usuário durante carregamentos e ações
  4. Performance

    • Otimização de renderização
    • Carregamento eficiente de dados

Entrega

  • Crie um fork deste repositório no GitHub
  • Ao final, abra um PR atualizando este README com:
    • Instruções para executar o projeto
    • Escolhas técnicas e justificativas
    • Desafios enfrentados e soluções aplicadas
  • O prazo para entrega é de 5 dias corridos

Dicas

  • Foque primeiro na funcionalidade principal antes de adicionar recursos extras ou estilizações
  • Utilize as documentações fornecidas acima para entender bem Server Components e Server Actions
  • Considere a experiência do usuário, mesmo sendo um teste técnico
  • Não se preocupe com autenticação ou persistência de dados além do que foi solicitado

Boa sorte! Estamos ansiosos para ver sua solução.


Dados

{
  "courses": [
    {
      "id": 1,
      "title": "UX Design Fundamentals",
      "short_description": "Aprenda os fundamentos de UX Design e crie experiências incríveis",
      "full_description": "Este curso aborda os princípios fundamentais de User Experience Design, desde pesquisa com usuários até prototipagem. Você aprenderá metodologias práticas para criar produtos digitais centrados no usuário.",
      "category": "Design",
      "level": "iniciante",
      "duration_hours": 20,
      "modules": [
        {
          "title": "Introdução ao UX Design",
          "lessons": 4
        },
        {
          "title": "Pesquisa com Usuários",
          "lessons": 5
        },
        {
          "title": "Prototipagem e Testes",
          "lessons": 6
        }
      ]
    },
    {
      "id": 2,
      "title": "React Avançado",
      "short_description": "Domine conceitos avançados de React e construa aplicações complexas",
      "full_description": "Este curso aprofunda os conceitos avançados do React, incluindo hooks personalizados, context API, otimização de performance e integração com APIs externas. Ideal para quem já conhece os fundamentos e quer se tornar um especialista.",
      "category": "Desenvolvimento",
      "level": "avancado",
      "duration_hours": 30,
      "modules": [
        {
          "title": "Hooks Avançados",
          "lessons": 7
        },
        {
          "title": "Gerenciamento de Estado",
          "lessons": 8
        },
        {
          "title": "Performance e Otimização",
          "lessons": 6
        },
        {
          "title": "Testes e Deployment",
          "lessons": 5
        }
      ]
    },
    {
      "id": 3,
      "title": "Product Management 101",
      "short_description": "Inicie sua carreira em gestão de produtos digitais",
      "full_description": "Este curso introdutório à Gestão de Produtos aborda desde a definição de visão e estratégia até metodologias ágeis para execução. Ideal para quem quer iniciar na carreira ou profissionais que desejam formalizar seus conhecimentos.",
      "category": "Produto",
      "level": "iniciante",
      "duration_hours": 25,
      "modules": [
        {
          "title": "Fundamentos de Produto",
          "lessons": 5
        },
        {
          "title": "Descoberta e Validação",
          "lessons": 6
        },
        {
          "title": "Métricas e Analytics",
          "lessons": 4
        },
        {
          "title": "Execução e Delivery",
          "lessons": 5
        }
      ]
    },
    {
      "id": 4,
      "title": "Data Science para Produto",
      "short_description": "Use dados para tomar melhores decisões de produto",
      "full_description": "Este curso ensina como utilizar ciência de dados para embasar decisões de produto. Desde análise exploratória até testes A/B e modelos preditivos, você aprenderá a extrair insights valiosos de dados para criar produtos melhores.",
      "category": "Dados",
      "level": "intermediario",
      "duration_hours": 35,
      "modules": [
        {
          "title": "Fundamentos de Análise de Dados",
          "lessons": 6
        },
        {
          "title": "Métricas para Produto",
          "lessons": 5
        },
        {
          "title": "Testes A/B",
          "lessons": 7
        },
        {
          "title": "Modelos Preditivos",
          "lessons": 8
        }
      ]
    },
    {
      "id": 5,
      "title": "IA Generativa para Designers",
      "short_description": "Aprenda a usar IA para potencializar seu trabalho de design",
      "full_description": "Este curso explora como designers podem utilizar Inteligência Artificial generativa para amplificar sua criatividade e produtividade. Desde ferramentas de geração de imagens até assistentes de design, você aprenderá a incorporar IA no seu fluxo de trabalho.",
      "category": "Design",
      "level": "intermediario",
      "duration_hours": 18,
      "modules": [
        {
          "title": "Fundamentos de IA Generativa",
          "lessons": 4
        },
        {
          "title": "Ferramentas de IA para Design",
          "lessons": 6
        },
        {
          "title": "Prompts e Direção Criativa",
          "lessons": 5
        },
        {
          "title": "Integrando IA no Fluxo de Trabalho",
          "lessons": 3
        }
      ]
    },
    {
      "id": 6,
      "title": "Full-Stack JavaScript",
      "short_description": "Desenvolva aplicações completas com JavaScript",
      "full_description": "Este curso abrangente ensina desenvolvimento full-stack com JavaScript, desde o front-end com React até back-end com Node.js. Você aprenderá a construir aplicações completas, incluindo autenticação, banco de dados e deployment.",
      "category": "Desenvolvimento",
      "level": "intermediario",
      "duration_hours": 45,
      "modules": [
        {
          "title": "Front-end com React",
          "lessons": 10
        },
        {
          "title": "Back-end com Node.js",
          "lessons": 12
        },
        {
          "title": "Bancos de Dados",
          "lessons": 8
        },
        {
          "title": "Autenticação e Segurança",
          "lessons": 6
        },
        {
          "title": "Deployment e DevOps",
          "lessons": 5
        }
      ]
    },
    {
      "id": 7,
      "title": "Product Leadership",
      "short_description": "Desenvolva habilidades de liderança em produto",
      "full_description": "Este curso avançado aborda os desafios e estratégias de liderança em produto. Desde gestão de times e stakeholders até definição de visão de longo prazo e estratégia de produto, ideal para PMs experientes que buscam papéis de liderança.",
      "category": "Produto",
      "level": "avancado",
      "duration_hours": 30,
      "modules": [
        {
          "title": "Liderança e Gestão de Times",
          "lessons": 7
        },
        {
          "title": "Estratégia e Visão de Produto",
          "lessons": 8
        },
        {
          "title": "Relacionamento com Stakeholders",
          "lessons": 5
        },
        {
          "title": "Métricas e OKRs",
          "lessons": 6
        },
        {
          "title": "Cultura de Produto",
          "lessons": 4
        }
      ]
    },
    {
      "id": 8,
      "title": "Análise de Dados com Python",
      "short_description": "Aprenda a analisar e visualizar dados com Python",
      "full_description": "Este curso ensina análise e visualização de dados utilizando Python e suas principais bibliotecas. Desde manipulação de dados com Pandas até visualizações com Matplotlib e análises estatísticas, você aprenderá a extrair insights valiosos de conjuntos de dados complexos.",
      "category": "Dados",
      "level": "iniciante",
      "duration_hours": 28,
      "modules": [
        {
          "title": "Introdução ao Python para Dados",
          "lessons": 6
        },
        {
          "title": "Manipulação de Dados com Pandas",
          "lessons": 8
        },
        {
          "title": "Visualização com Matplotlib e Seaborn",
          "lessons": 7
        },
        {
          "title": "Análise Estatística Básica",
          "lessons": 5
        }
      ]
    }
  ]
}