Code Monkey home page Code Monkey logo

cs-server's People

Contributors

fabiommendes avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cs-server's Issues

Rework codeschool accounts system

Repensar estratégia de autenticação do codechool

  • suporte a OAuth
  • integração com o github + (talvez facebook e google)
  • implementar User com campo único de nome
  • profile com informações configuráveis
  • implementar registro de novos usuários via API + interface Elm
  • remover o userena
  • mudar o nome do app para users
  • refazer as urls de uma forma mais amigável

Suporte a OAuth

  • instalar o Python Social Auth
  • Estudar autenticação
  • instalar URLS do social Auth
  • integração/login via github
  • integração/login via google
  • integração/login via facebook (opt)
  • integração/login via twitter (opt)

Integração entre backend e frontend

Estratégia para realizar a integração

  • Integrar API para classrooms
  • Listar exercícios em uma classroom
  • Mostrar exercício simples (ou numérico ou múltipla escolha)
  • Editar profile

Aumentar cobertura de código

Testar o codeschool mais extensivamente para aumentar a cobertura de código de testes unitários para pelo menos 80%

Support for continuous integration

(vamos deixar os títulos em inglês como referência para a comunidade continuamos a discussão em portugues, ok?)

Temos que configurar o settings.py para testes na integração contínua. Algumas coisas podem ser difíceis de integrar no Travis (ex. o sandbox do boxed não funciona).

  • travis.yml
  • Análise de cobertura com o coveralls.io
  • Serviço de análise estática de qualidade de código.

Criar imagem docker para desenvolvimento

Pode usar como base a imagem de deploy. Idealmente a imagem deveria conter todos os serviços para não precisar subir vários containers de forma coordenada.

Simplificar codeschool.core

Separar em alguns apps diferentes

  • extrair FileFormats/ProgrammingLanguage para um app codeschool.file_formats
  • extrair logica de popular o banco inicial com formulario para um app separado
  • separar testes

Funcionalidades do app user

Repensar estratégia de autenticação do codechool

  • implementar User com campo único de nome
  • profile com campos configuráveis
  • remover o userena
  • mudar o nome do app para users
  • refazer as urls de uma forma mais amigável
  • Proteger informações do usuário parte privada vs pública
    /api/users//private/ -- visível p/ dono e amigos
    /api/users//profile/ -- visível p/ dono e amigos
    /api/users//social/ -- logins em redes sociais: público

Criar campo de profile com valores configuráveis

Criar um model ProfileField que pode possuir diversos tipos de dados serializados como strings. Devemos serializar o conteúdo como string, definir o tipo de dado como um inteiro com choices e determinar

class ProfileField(Model):
    name = models.CharField()
    label = models.CharField()
    dtype = models.IntegerField(choices=[INT, FLOAT, TEXT, CHAR, DATE, ...?])
    validators = models.JSONField()

class ProfileFieldData(Model):
    field = models.ForeignKey(ProfileField)
    data = models.TextField()
    user = models.ForeignKey(User)

O campo validators é uma lista serializada como JSON que descreve as restrições de validação (valor máximo e mínimo, tamanho, etc). ProfileFieldData guarda os dados associados a um usuário e deve ser único para o par (field, user).

Testes de integração

Criar testes de integração para o front-end.

Estratégia:

  • Estudar Selenium ou estabilizar a biblioteca Sulfur
  • Criar testes extensivos para o cadastro de usuários
  • Definir uma arquitetura de testes de integração
  • Aplicá-la para os outros módulos do codeschool

Remove codeschool.cli

Recriar funcionalidades do codeschool ctl utilizando a API rest e remover codechool.cli

Remove userena dependency

Repensar estratégia de autenticação do codechool

  • suporte a OAuth
  • integração com o github + (talvez facebook e google)
  • implementar User com campo único de nome
  • profile com informações configuráveis
  • implementar registro de novos usuários via API + interface Elm
  • remover o userena

Create codeschool questions string

Criar modulo de questões com respostam em string

Funcionalidades:

  • Comparaçâo exata
  • Ignorar maiúsculas/minúsculas
  • Regex
  • Ignorar acentos (use o módulo unidecode)
  • Testes unitários

Criar API para modelos User

Criar um endpoint REST /api/users/ utilizando o Django Rest Framework

  • /api/users/ e /api/users/{username}/
    • todos endpoints do Codeschool precisam de authenticação
    • somente usuários do tipo admin podem acessar lista de profiles
    • expor "name" ao invés de "first_name" e "last_name" (mudaremos o model User no futuro)
    • fields: username, name, password,
    • POST, PUT de novos users está bloqueado
    • GET,PATCH /users/{username}/ permitido apenas para admin e proprio usuário

Suporte a campos configuráveis no profile

Criar um model ProfileField que pode possuir diversos tipos de dados serializados como strings. Devemos serializar o conteúdo como string, definir o tipo de dado como um inteiro com choices e determinar

class ProfileField(Model):
    name = models.CharField()
    label = models.CharField()
    dtype = models.IntegerField(choices=[INT, FLOAT, TEXT, CHAR, DATE, ...?])
    validators = models.JSONField()

class ProfileFieldData(Model):
    field = models.ForeignKey(ProfileField)
    data = models.TextField()
    user = models.ForeignKey(User)

O campo validators é uma lista serializada como JSON que descreve as restrições de validação (valor máximo e mínimo, tamanho, etc). ProfileFieldData guarda os dados associados a um usuário e deve ser único para o par (field, user).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.