chrismcginlay / eduduck Goto Github PK
View Code? Open in Web Editor NEWAn abandoned online course hosting platform/marketplace
License: GNU General Public License v3.0
An abandoned online course hosting platform/marketplace
License: GNU General Public License v3.0
EduDuck experimental course delivery platform. Coded with Python/Django by Chris McGinlay **This project provides the rudiments of an Online Course Delivery Platform**. - Several elements of such a platform are missing, such as assessment tools. If you want to use it, you'll really need to be prepared to contribute back to it, which is of course exactly what I would like to see, having brought the project to version 0.4 on my own. - There are still many references to my particular installation setup under my workstation user name of 'chris'. - There is an automated installer for development boxes, staging and production. See the install.txt file for install instructions. #Security check# Run this on branched code prior to merge with master ```python manage.py check --deploy #Git tag releases# When ready to push a new tag release (e.g MVP0.3) on to production site, tag the codebase as follows 1. git tag -f LIVE #force re-use of LIVE tag on local repo 2. export TAG=`date +DEPLOYED-%F/%H%M` 3. expport MVPTAG=mvp_x.y.z_name 4. git tag $TAG 5. git tag $MVPTAG 5. git push origin :refs/tags/LIVE #delete LIVE tag from remote repo 6. git push origin LIVE $TAG $MVPTAG #Need to Create Fixtures?# We're still using some test fixtures, although some tests use FactoryBoy which is better. 1. Store sets of fixtures together in a directory under fixtures. Could be sensible to name directories by date ddmmyy. mkdir fixtures/ddmmyy cd fixtures/ddmmyy 2. Dump each app django-admin.py dumpdata --settings=EduDuck.settings --indent=4 courses > courses_data_ddmmyy.json --pythonpath='/home/chris/eduduck/' Remember to dump auth.User too. 3. Dump the entire database if desired. Maybe remove session data django-admin.py dumpdata --settings=EduDuck.settings --indent=4 eduduck_data_ddmmyy.json --pythonpath='/home/chris/eduduck/'
Presently, a user logging in is taken to their profile page. This is annoying and confusing.
Instead, default should be a redirect to the courses index page. Even better would be redirect to whatever page they were on prior to login.
At present the courses model author field is just a text field. It should be a foreign key to a user.
Implement a unit testing framework using unittest2.TestCase base-class. See link for advice on best practice for using unittest2 via django.utils.unittest
https://docs.djangoproject.com/en/1.4/topics/testing/#writing-unit-tests
Either stored locally or via a service such as gravatar, as the user prefers.
Around line 32 of course.models, course_organiser is simply a CharField. This should be a Foreign Key to a user.
There could also be a field for tutor/instructor/or lecturer if the organiser were to be a different person from the tutor. (As seems to be the case on a lot of courses, there is a sidekick for each rockstar tutor)
At the earliest opportunity we should be able to process payments. At v0.1 that is likely to be for donations or 'pay-what-you-want-or-zero' type offerings.
https://www.braintreepayments.com/
https://stripe.com/
http://www.nochex.com/apply/FREE-merchant-account/
http://www.worldpay.com/
http://www.sagepay.com/
https://www.2checkout.com/
Using google site search or similar. Should be able to restrict search to
NB that .htaccess file currently keeping eduduck.com obviously bars sitesearch.
Drop login_required for views.lesson at present.
It's a pointless restriction. Also default course view views.index should list all courses.
The existing JSON fixtures need to be updated to reflect alterations to the database structure.
Look to the excellent
http://toastdriven.com/blog/2011/apr/10/guide-to-testing-in-django/
http://toastdriven.com/blog/2011/apr/17/guide-to-testing-in-django-2/
Also, set up coverage tools to correctly analyse test coverage of eduduck code.
For example activation_complete.html doesn't override title block, looks duff.
Most of the accesses that a user makes to a lesson, attachment, video should be recorded, so as to be able to inform a user that they have
etc.
Could be implemented with a unified 'resource' model (as opposed to multiple individual table join classes ('through' models) between user and each resource table).
There is not enough logging on the dev server to troubleshoot issues (at least, not where I can find it). Django should log to file on every action. Apache access logs on the server already show which url's are being accessed, by who and http return codes.
So for example at lesson/1/lint/1, using jQuery to cycle the traffic lights has no test code.
Pretty soon, will want to switch to Django version 1.5.
A note taking facility for individual users using jQuery to make available next to resources such as Videos, as well as attached to lessons.
Should support content markdown.
Make use of elasticsearch (#17) to perform search.
http://www.elasticsearchtutorial.com/basic-elasticsearch-concepts.html
This would yield fully pluggable app modules.
Note that quiz is going to get a complete rewrite though.
To prepare for initial deployment, consult following resources:
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/
https://docs.djangoproject.com/en/dev/howto/deployment/checklist/
Get middleware operational in wsgi.py
The template sidebar has nothing in it except on the home page. It could be used, at least initially to show course progress when logged in.
It's time to move Learning Intentions, Learning Outcomes and Success Criteria to a single separate app.
This will prevent wasted effort altering interaction issue #23 etc.
http://designmodo.com/flat-design-colors
framebox.org/INYJ
We require a customer support page with admin/support email address such as
[email protected]
There is a hanging reference to this from
templates/register/activate.html
templates/register/registration_closed.html
Implement a proper user login mechanism, use two part authentication.
It will make for easier development of the style if there is a css normalize / reset loaded first.
Need for some real material that can be studied.
Design some proper templates, with some thought given to over-ridable blocks in base template.
*This will need to be done with workflow/appearance wireframes in mind.
*Target output HTML5
Use virtualenv on deployment / staging at least.
Nice on development boxes, but not essential as I tend to be quite happy to reinstall laptop / dev box every so often.
Pretty soon, I'll be using AJAX. Just need to check this is done properly. Pretty much will be done during development (which is a good thing), this is just a check.
A feature complete learning platform should include the following (may not be exhaustive)
-admissions
-lectures or lessons
-peer interaction
-teacher or tutor interaction
-problem solving
-assignments
-exams
-deadlines
-certification
Investigate suitable function pre-condition assertions and implement as appropriate.
coverage tool provides useful data on test coverage statistics.
To use it per 'two-scoops' best practice, will first require modularised settings.
What happens if a course gets deleted? Do related records with FKs get orphaned? This has not been tested.
Write tests for correct behaviour of deletion of various model instances.
There seems to be something going on with login persistence on the eduduck.com test deployment. After a following a few links or waiting a little while, the user is logged out.
I can't reproduce this locally.
Interaction module history recording uses naive timezones. Add proper timezone to history.
Should be straightforward.
https://docs.djangoproject.com/en/dev/topics/i18n/timezones/
There is no facility for a user to edit their profile after registration.
The interaction module, userlesson class supports a simple 'note' field where theuser can leave themselves a note about each lesson, such as 'revise this'.
Needs implemented in the view under courses/views
def lesson(request, course_id, lesson_id):
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.