Coder Social home page Coder Social logo

ucfopen / obojobo Goto Github PK

View Code? Open in Web Editor NEW
69.0 16.0 34.0 33.82 MB

Next generation course content for your LMS. Easy for beginners, but powerful enough for researchers.

Home Page: https://ucfopen.github.io/Obojobo-Docs/

License: GNU Affero General Public License v3.0

JavaScript 94.05% SCSS 5.55% Dockerfile 0.05% EJS 0.36% Procfile 0.01%
hacktoberfest education edtech canvaslms lti lms react slatejs

obojobo's Introduction

Obojobo Next

All Contributors

Obojobo Next is a modern educational content ecosystem. Obojobo documents are programmable, extend-able, and heavily fortified with data analytics.

Our focus is on making and delivering fantastic learning content to students. Obojobo is not a Learning Management System. Rather, it's an incredibly powerful content engine for use inside your LMS.

View the Obojobo Next Documentation.

Join UCF Open Slack Discussions Join UCF Open Slack Discussions

The previous version of Obojobo, renamed to Obojobo Classic, is located here: https://github.com/ucfopen/Obojobo-Classic

The Obojobo Mission

To keep our collective efforts aimed in the same direction, we've outlined what we want Obojobo to be:

  1. UI/UX focused design that ensures a satisfying & enjoyable student experience.
  2. Low barrier of entry for content creators. Creating content is as easy as writing a document in Word.
  3. Research centric design. Obojobo aims to be the premiere research-enabling learning platform by providing high resolution data, partnering with researchers, and including proven research outcomes back into the platform.
  4. Extraordinary practice and assessment tools that enable emerging teaching and learning models.
  5. Provide innovative new capabilities in online, blended, and mixed mode courses.
  6. Architecturally extensible and modular. Obojobo Next is easy to customize and extend.

Requirements

Quick Heroku Deploy

We added Heroku support as an easy way to give Obojobo a free test drive (or scale it up for production use).

Deploy Obojobo to Heroku

Heroku is a cloud service that lets you host web apps in the cloud without having to worry so much about the infrastructure.

Development Setup

  1. Clone this repo
  2. Run yarn install to install dependencies
  3. Run yarn db:rebuild to setup the database in a Docker container
  4. Run yarn dev to start the development express server
  5. Visit https://127.0.0.1:8080 - You should see "Welcome to Obojobo Next"

Familiarize yourself with the scripts section of package.json.

Dev Shortcuts

https://127.0.0.1:8080/dev has a bunch of links that'll simulate all of the LTI integrations Obojobo supports. Use these to quickly log in and test out the different launch modes.

This route is only available in development mode. In production, the only way to log in is through an LTI launch from an LMS.

Logging in

To view the example object you need to login via an LTI launch. Instructions are available in Obojobo: https://127.0.0.1:8080/lti

Create New Documents:

Once logged in, visit https://127.0.0.1:8080/editor. Click + Create New Draft to get started.

Testing

yarn test or yarn test:ci

Special Thanks

Support for this work was provided by the National Science Foundation Scholarships in Science, Technology, Engineering, and Mathematics (S-STEM) program under Award No.1643835. Any opinions, findings, conclusions and recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Contributors โœจ

Thanks goes to these wonderful people (emoji key):


deundrewilliams

๐Ÿ’ป ๐Ÿ‘€ โš ๏ธ

Steve Jacques

๐Ÿ’ป โš ๏ธ ๐Ÿ‘€ ๐Ÿ›

walid-i

๐Ÿ’ป โš ๏ธ

Jacob Peterson

๐Ÿ’ป โš ๏ธ ๐Ÿ‘€ ๐Ÿ›

Mauricio Costa

๐Ÿ’ป โš ๏ธ ๐Ÿ‘€ ๐Ÿ›

Toan Vu

๐Ÿ’ป ๐Ÿค” ๐Ÿ‘€ โš ๏ธ

Cameron Cuff

๐Ÿ’ป ๐Ÿค” ๐Ÿ‘€ โš ๏ธ

AnthonyRodriguez726

๐Ÿ’ป ๐Ÿ‘€ โš ๏ธ

Ralph Baird

๐Ÿ’ป ๐Ÿ‘€ โš ๏ธ

Corey Peterson

๐Ÿ’ป

Sid

๐Ÿ’ป โš ๏ธ

Jonathan Guilbe

๐Ÿ’ป โš ๏ธ

Keegan Berry

๐Ÿ’ป โš ๏ธ

Adrian Fish

๐Ÿ’ป ๐Ÿ› ๐Ÿค”

Brandon Stull

๐Ÿ› ๐Ÿ’ป ๐Ÿ“– ๐Ÿค” ๐Ÿšง ๐Ÿ“† โš ๏ธ ๐Ÿ”ง ๐Ÿ‘€

Shea

๐Ÿ“–

Samuel Belcastro

๐Ÿ’ป โš ๏ธ

Ryan Eppers

๐Ÿ› ๐Ÿ’ป ๐Ÿ“– ๐Ÿค” ๐Ÿšง ๐Ÿ“ฆ ๐Ÿ’ฌ ๐Ÿ‘€ ๐Ÿ”ง ๐Ÿ‘€

Elli Howard

๏ธ๏ธ๏ธ๏ธโ™ฟ๏ธ ๐Ÿ’ป ๐Ÿ“– ๐Ÿค” ๐Ÿšง ๐Ÿ‘€ โš ๏ธ

Ian Turgeon

๐Ÿ’ป ๐Ÿ“– โš ๏ธ ๐Ÿค” ๐Ÿš‡ ๐Ÿ“ฆ ๐Ÿ“† ๐Ÿšง ๐Ÿ‘€ ๐Ÿ”ง

Zachary Berry

๐Ÿ’ป ๐Ÿ–‹ ๐Ÿ“– ๐ŸŽจ ๐Ÿค” ๐Ÿ“† ๐Ÿ‘€ ๐Ÿ”ง

This project follows the all-contributors specification. Contributions of any kind welcome!

obojobo's People

Contributors

adrianfish avatar allcontributors[bot] avatar anthonyrodriguez726 avatar clpetersonucf avatar ctcuff avatar dependabot[bot] avatar deundrewilliams avatar frenjaminbanklin avatar gitnix avatar iturgeon avatar jpeterson976 avatar katherinecrose avatar keeeeeegan avatar keidakira avatar maufcost avatar mbusch3 avatar qwertynerd97 avatar racheldau avatar sidtheengineer avatar sjjacques avatar ssilverm avatar ucfcdl-robot avatar vutoan1245 avatar walid-i avatar zachberry 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

Watchers

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

obojobo's Issues

/feature/caliper Event versioning

Issue by zachberry
Thursday Nov 02, 2017 at 18:46 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/issues/49


Need an event version property both in Obo events so that we can keep track of the event structures that change over time.

So for example here would be an event payload:

{
  action: `video:play`,
  payload: {
    videoId: 1234,
  },
  ...,
  eventVersion: '3.0.0'
}

This event version would be specific to the video:play event. The first value would match the software version (Obojobo 3). Second value would be major updates to the event, last value would be minor updates to the event (SemVer standards).

If the video:play event was changed in the future, for example a property was added (non-breaking change) it might look like

{
  action: `video:play`,
  payload: {
    videoId: 1234,
    videoTitle: 'My video',
  },
  ...,
  eventVersion: '3.0.1'
}

If the video:play event was changed again, for example a property was modified (breaking change) such as changing videoTitle to videoName it might look like

{
  action: `video:play`,
  payload: {
    videoId: 1234,
    videoName: 'My video',
  },
  ...,
  eventVersion: '3.1.0'
}

Then we can document these changes making it obvious as to how to read them.

Enforce Canvas assignment close dates via LTI custom fields / variable substitutions

Issue by zachberry
Friday Nov 03, 2017 at 19:26 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/issues/51


Problem: Canvas allows LTI replaceResult messages to succeed even after an assignment is "closed".

We can use Canvas substitutions to bring in information like assignment close dates and add logic to not send a replaceResult.

Configuration example:

<blti:custom>
  <lticm:property name="dueat">$Canvas.assignment.dueAt.iso8601</lticm:property>
  <lticm:property name="lock">$Canvas.assignment.lockAt.iso8601</lticm:property>
  <lticm:property name="unlock">$Canvas.assignment.unlockAt.iso8601</lticm:property>
</blti:custom>

Test cases: https://gist.github.com/iturgeon/1e8b5d1be2d5145740510cf44ea00788

Substitution documentation: https://canvas.instructure.com/doc/api/file.tools_variable_substitutions.html

Update sample draft insertion

Issue by gitnix
Tuesday Aug 15, 2017 at 17:12 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/pull/18


When sample_draft is given a defaultId, correct insertions are made for drafts and drafts_content table. (The draft_id was not set to the defaultId in the drafts_content table prior to this, also it didn't like db.one on UPDATE) SQL UPDATEs remain in write_json_draft_to_db.js. If it is better, a third argument can be added to insertNewDraft of draftId. A few convenience scripts were added to package.json Adjusted logger to console so output can be seen.


gitnix included the following code: https://github.com/ucfcdl/Obojobo-Next/pull/18/commits

Feature/editor improvements

Issue by zachberry
Thursday Sep 28, 2017 at 15:26 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/pull/37


  • CodeMirror replaces textarea for XML/JSON editing
  • Ctrl+S implemented to save drafts
  • Editor made larger
  • Draft list now in sidebar which doesn't modify the position of the editor
  • Refreshing the page selects the previously selected draft
  • Less important info more hidden from view
  • Deleting drafts now asks you to confirm the delete to protect against accidental clicks

zachberry included the following code: https://github.com/ucfcdl/Obojobo-Next/pull/37/commits

LTI score pass back sometimes fails

Issue by iturgeon
Thursday Oct 26, 2017 at 01:37 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/issues/42


Right now, lti pass back is based entirely on searching for the most recent lti launch for the same user + draft_id as long as it's less then 5 hours ago.

Obo Next doesn't log you out currently, so it looks like some students open the lti assignment in a tab, and occasionally complete it much much later. Everything works, but the query where it tries to figure out where to send the lti pass back fails to find a place to send it.

This needs to be re-built so that the currently open tab knows what lti launch session it's associated with. I'm currently thinking the end attempt call requires the client to send the launch id.

Change preview mode attempts to work the same as non-preview

Issue by zachberry
Friday Aug 18, 2017 at 13:36 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/issues/19


Having special cases for preview mode is complex and causes issue:

  • Viewer can show things like 'Attempt -2 of 3'. The module developer has to trust that this won't happen in non-preview mode.
  • Attempt start and end events can't get a correct value for the number of attempts taken and simply sent count to -1 to handle this.

Instead would like to remove all of these special cases and have the preview mode 'Reset attempts' button to just do a DELETE

Restore (Resume) attempts

Issue by zachberry
Tuesday Nov 07, 2017 at 23:31 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/issues/53


With this added,

  • If a user leaves a draft while in Assessment and returns to the draft their draft should be restored.
  • They should also be locked into the Assessment as if they hadn't left
  • Some modal dialog should alert them that they were in the middle of an assessment attempt and that they will continue

Update route flow

Issue by gitnix
Wednesday Aug 09, 2017 at 15:15 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/pull/17


Calls to next are not made once the response is set. 404s will resolve in 404 handler in App.js without complaints about headers being set. Also added a file __mock_express.js to the __mocks__ folder (to DRY up tests) which tests can import to set up mock router methods.


gitnix included the following code: https://github.com/ucfcdl/Obojobo-Next/pull/17/commits

Add ability to put XML in editor and transform to JSON

Issue by SidTheEngineer
Monday Jun 12, 2017 at 19:28 GMT
Originally opened as https://github.com/ucfcdl/Obojobo-Next/issues/8


Right now, the editor only accepts JSON as input. We can add the ability to also accept XML and have it inserted into the DB via sending to server, or performing XML to JSON transformation client-side and only have JSON in DB.

Performing XML to JSON transformation server-side seems like the better option at the moment so we can save the inputted XML.

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.