Coder Social home page Coder Social logo

hacklabr / timtec Goto Github PK

View Code? Open in Web Editor NEW
72.0 39.0 63.0 180.58 MB

MOOC platform built with Django and Angular to deliver and manage courses, classes and student activities

License: GNU Affero General Public License v3.0

JavaScript 20.10% Python 25.11% HTML 37.30% Shell 0.15% CSS 0.06% Makefile 0.31% Dockerfile 0.09% Less 16.88%
django angular mooc python timtec

timtec's Introduction

#TIMTec Mooc

Instalação e configurações

Para acessar a documentação completa, veja a pasta docs na raiz da aplicação.

Desenvolvimento

Licença - AGPLV3

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see LICENSE file here or 
[AGPLv3](http://www.gnu.org/licenses).

Build Status Coverage

Requisitos de instalação

  • Operating system: Debian (>= 7.7) or Ubuntu (14.04);
  • Proxy server: uwsgi (>= 2.0.7);
  • Web Server: nginx (>= 1.6.2);
  • javascript server-side interpreter: node.js (>= 0.10.40);
  • Data base server: postgresql (>= 9.2);
  • Python language package: python (= 2.7 ou < 3);
  • Virtual Enviroment Python: virtualenv (>=1.11.6);

Requisitos de Desenvolvimento

  • all the above requirements
  • build essentials and many dev packages if on apt/rpm based systems
    • libpq-dev, libjpeg-dev, libpng12-dev, build-essential, python-dev, gettext
  • nodejs (0.10+) (you will need a ppa for ubuntu < 14.04)

Production Environment Requirements

UP to 6000 users

  • Processor: Dual Core
  • RAM: 2 to 4 GB
  • Disk Space: 10 GB
  • Network Total Transfer/mo: ~12GB
  • Incoming: 1GB
  • Outgoing: 11 GB

UP to 10k/12k users

  • Processor: Quad Core
  • RAM: 4 to 6 GB
  • Disk Space: 25 GB
  • Network Total Transfer/mo: ~25GB
  • Incoming: 2GB
  • Outgoing: 23 GB

Python env

  • create a Python 2.X virtualenv

    virtualenv ../timtec-env

  • activate the virtual env

    source ../timtec-env/bin/activate

  • run make

    make

  • run the django devel server

    ./manage.py runserver

Getting Started

We provide a vagrant file for easy dev environment creation. Install Vagrant and on the main directory run:

vagrant up

Them you just need to go inside the machine to start the dev server:

vagrant ssh

On the VM console:

./manage.py runserver 0.0.0.0:8000

Now the system is running, you can go to http://localhost:8000 on your web browser and navigate on it. To create a new superuser (so you can give permissions to other make other users professors) run:

./manage.py createsuperuser

See the Vagrantfile and script folder for more details.

Running Tests

We made a bunch of tests for the system. They are separated into python tests (that includes selenium full stack tests) and Karma/AngularJS tests. To run all of them together just type

make all_tests

remember that you need to have your virtualenv activated and has installed everything from the dev-requirements.txt file.

python

Activate virtual env, then:

make python_tests

Suporte

![Gitter](https://badges.gitter.im/Join Chat.svg)

timtec's People

Contributors

anarute avatar andersonorui avatar barraponto avatar bgola avatar brunosmartin avatar buruno avatar danipj avatar fabiomontefuscolo avatar fredericksilva avatar gustavovs avatar laurybueno avatar leopiccionia avatar lfagundes avatar moacirmoda avatar nicolavieira avatar pablofl avatar pimentaj avatar rmonico avatar rodrigoprimo avatar santagada avatar tiagofassoni avatar virgilio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

timtec's Issues

Curso quando o usuário já esta cadastrado

Caso 3: usuário cadastrado no curso e logado no sistema

  • Aparecer botão ir para o curso
  • Reorganizar a estrutura da pagina privilegiando as aulas
    • As aulas deverão ser links para cada uma
    • Haverá um status de cada aula, dizendo quantos vídeos ja foram assistidos e quantos faltam. Mesma coisa para os atividades.

[curso - intro] botão para começar ou ir para curso

Caso 1: usuário não cadastrado no curso e não logado no sistema

  • Ao clicar no botão começar curso, deverá aparecer uma tela pedindo para ele logar-se ou realizar o cadastro no sistema

Caso 2: usuário não cadastrado no curso mas logado no sistema

  • Ao clicar no botão começar curso, realizar a inscrição dele e redirecioná-lo para a primeira aula

Migrar para angularjs

Migrar o código javascript para angularjs 1.2.0.

Problemas:

  • Angular bootstrap ainda não suporta o bootstrap 3.0 (mas não precisamos usa-lo).

[aula] descrição geral do que contém em uma aula

  • Navegação geral do curso
    • Link para introdução do curso
    • Link para as aulas do curso
    • Link para o fórum do curso
    • Link para o wiki do curso (terá outro nome)
  • Navegação das aulas
    • Select box com a aula atual selecionada
    • Dropdown com todas as aulas ordenadas
  • Navegação das unidades dentro de uma aula
    • Links laterais que deverão carregar o próximo vídeo com AJAX para que a página não seja recarregada
    • Ícone de atividade caso exista uma atividade ao final do vídeo
    • Ícone de "tarefa-fora-computador"caso a unidade seja marcada como
    • Status de unidade já assistida, assistindo e não assistida
  • texto descritivo que provavelmente será chamado de material didático
  • Vídeo
    • Decidido - nesta primeira fase será YouTube, portanto utilizaremos vídeos curtos com possibilidade de incluir atividade no final de cada vídeo
  • Atividade
    • Múltipla escolha
    • Escolha simples
    • Verdadeiro ou falso
    • Ordenação
  • Fórum
    • Listagem das últimas perguntas
    • Possibilidade de ordenação das perguntas
    • Busca textual
    • Ver todas as perguntas
    • Criar nova pergunta

Escolher app para implementar fórum

A ideia inicial é usar um sistema de Q&A existente e acessá-lo por uma API. Dois sistemas foram inicialmente pesquisados:

OSQA

OSQA é um sistema de perguntas e respostas, Stackoverflow like, baseado em django e python.
http://www.osqa.net/

Vantagens

Django e python
Basta integrar o logins e aparentemente já temos as view que precisamos.
Possui tradução para português.

Desvantagens

Documentação ruim (http://wiki.osqa.net/display/docs/Home)

askbot

http://askbot.org/
https://github.com/ASKBOT/askbot-devel/tree/master/askbot

Vantagens

Documentação é boa
Possui API JSON para consultas (questões, etc), mas não para edição.
Desenvolvimento ativo

Desvantagens

Estrutura do projeto complicada

[meus cursos] mostrar status/andamento de cada curso

Para cada curso mostrar:
• Progresso através de uma barra de porcentagem, baseada nas aulas/unidades assistidas e tarefas realizadas
• Link para a próxima aula
• Botão de "Detalhes", onde o usuário poderá ver o progresso em cada aula de um curso

Para cada aula mostrar quantas:
• unidades já foram assistidas
• unidades faltam assistir
• atividades foram feitas
• atividades por fazer

criar formulário de cadastro

Integrar com o layout que já existe.

ERROS

Adicionar a classe .has-error na div que engloba o label e o input

Mensagem de erros:

  • E-mail já cadastrado
  • E-mail inválido
  • As senhas não conferem

Dados da aula no template

Implementar os dados da aula no template de lição:

  • blocos
    • marcação de se tem atividade ou não
    • listar todos
  • ir para proxima/anterior
  • outros dados

esqueci minha senha

Definir como será o funcionamento, mas a princípio, a pessoa clica no link "Esqueci minha senha", aparece um formulário para ela preencher o e-mail cadastrado, o sistema verifica se o e-mail está realmente cadastrado e, se caso estiver, envia um e-mail para o usuário com um link para alterar a senha.

criar formulário de autenticação

Implementar sistema de autenticação no layout que já está desenvolvido.

Precisamos definir se o padrão será username ou email ou se é possível manter os dois, como no caso do login do Facebook.

Adicionar a classe .has-error na div que engloba o label e o input

Mensagens de erro:

  • E-mail não cadastrado.
  • E-mail e senha não conferem.

Implementar wiki

Não foram encontrados wikis prontos para o pyramid.

No tutorial da documentação oficial, o aplicativo de exemplo é um wiki, pode ser um bom ponto de partida.

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.