Giter VIP home page Giter VIP logo

gala's Introduction

Gala

GitHub release badge. Github commits (since latest release) CircleCI badge. Greenkeeper badge. license View performance data on Skylight

Gala is a platform for authoring, teaching, and sharing media-rich teaching cases and modules.

Gala is free to use at www.learngala.com and we encourage you to join the community there. A guide getting started with Gala as a user and more information about features can be found at docs.learngala.com/docs.

Dependencies

  • Docker
  • Ruby 2.7.6
  • Node 12.5.0

Using rbenv

  1. rbenv install 2.7.6
  2. rbenv shell 2.7.6
  3. gem install bundler
  4. bundle install

Using nodenv

  1. nodenv install 12.5.0
  2. nodenv shell 12.5.0
  3. npm install yarn
  4. yarn

Getting started

  • docker compose up to start the app
  • docker compose down to stop the app
  • bundle exec rspec to run the Ruby tests
  • yarn test to run the Javascript tests

Updating dependencies

When you update dependencies be sure to run these commands locally first

  • bundle install to install Ruby dependencies
  • yarn to install Javascript dependencies

Then you can run docker compose up --build to rebuild the containers with the new dependencies.

If you update Javascript dependencies, you'll need to additionally run docker compose run web yarn to install them in the web container since the node_modules directory is mounted as an anonymous volume (for performance).

Other useful commands

  • docker compose run web yarn to install new JS dependencies in the web container
  • docker compose run web bash to get a shell inside the web container
  • docker volume rm gala_db_data to delete the database volume
  • docker compose up --build to rebuild the containers

Cron jobs

The full-text case search is powered by a Postgres materialized view so it’s really fast. The consequence is that changes don’t appear in search results until the view is refreshed. Set a cron job or use Heroku Scheduler or the equivalent to run rake indices:refresh as frequently as makes sense.

To send a weekly report of usage data, run rake emails:send_weekly_report once per week.

gala's People

Contributors

cbothner avatar pearlzhuzeng avatar waisaed avatar timothyf avatar papes1ns avatar greenkeeper[bot] avatar afichter-um avatar mariehooper avatar greenkeeperio-bot avatar rahulagrbej avatar zvkemp avatar

Stargazers

unixjazz avatar  avatar  avatar Julian Cheal avatar Assyl Amanbayev avatar Francis H Joyce avatar Joshua Moses B avatar  avatar  avatar  avatar  avatar

Watchers

 avatar James Cloos avatar  avatar  avatar

gala's Issues

Make the inline forum work (better?) on mobile

Really, the ideal would probably be to make it a full screen modal for comment threads and comments within a thread (like UINavigationView), shrinking to a toolbar sort of thing for the text selection step of creating a new thread.

image

Hook up Analytics

Event names:

  • :visit_page, {case_slug:, page_id:, page_position:, duration:}
  • :visit_edgenote, {case_slug:, edgenote_slug:, duration:}
  • :visit_podcast, {case_slug:, podcast_id:, duration:}
  • :read_card, {case_slug:, card_id:, duration:}

Design CaseLog: a community of practice for those teaching the case

“Captain‘s log” or blog posts?
Slack-style conversation between instructors who've used the case?
Hybrid.

Including:

  • individual experiences of teaching and assessing the case, and of evaluating the students
  • ideas for additions/extensions/spinoffs in classroom use
  • MSC-pinned specific suggestions that emerge as exemplary

Modularize authentication providers, many-to-one with Readers as profiles

Reader should hold the user’s profile and activity information, while devise should use LoginProviders, unique on the pair (email, provider) of which a user can have many. This will deal with the problem in which a user creates an account with a password and later tries to sign in with Google or Canvas using the same email.

Workflow and interface for translating a case

There are some problems with translating cases by using a json locale-keyed dictionary for each database field.

  • Impossible to separate UI language from case language
  • An editor with their UI in French will inadvertently translate English-only cases instead of editing their English contents.
  • Can’t translate attachments
  • Can’t have different numbers of cards/pages between translations
  • Not searchable

Put these problems behind us by using different linked Case models for different translations.

  • Add a locale field and a translation_base association to Case. Translations of a case have that case’s id as their translation_base. Each untranslated case’s translation_base is itself — not nil so that we can query for the full set of translations of a case, which must include the original.
  • Get the “also available in these languages” list from the cases with the same translation_base
  • Filter the catalog by locale—with fallbacks to English if the case isn’t translated
  • Make a CaseCloner to deep-copy a case
  • Serialize urls for the translated cases and make the other available languages links work without changing the locale
  • New translation page that takes a new locale and new slug, then deep copies the case.
  • Landing page for while the user waits for their case to be copied
  • Migrate away from json type fields and extract mobility from case models
  • Longer list of languages for cases to be translated into

Code splitting

  • Common chunks, at least
  • Page level dynamic requires
    • Load only the overview when users aren’t signed in, at least

Redesign catalog

  • Discoverable cases
    • “Bottomless” featured pool (#113)
    • Map view (#133)
    • Keywords index (#192)
    • Library index (#193)
  • Searchable cases
    • And filterable, and refinable (#194)
  • Signed-out view that accomplishes platform marketing goals (#195)

Enhance the case overview so it functions as most of a teaching guide

Visible to all users of the case as metadata

  • Keywords: “what kinds of classes is this useful for?”
  • Learning objectives: clauses/bullet points
  • Suggested audience: what background knowledge + resources for those missing that

Visible only to professors:

  • Exercise instructions and answers
  • Suggested classroom timeline: reference lengths for smallest indivisible chunks of activity, grouped into sets between which it's most smooth to take a break if needed.

Build out Gala as a LTI tool provider

Michigan Sustainability Cases should be added to the course navigation sidebar, which displays the case index. Additionally, a specific case should be offered as an “External Tool” for an Assignment, in which case the user should be granted an enrollment commensurate with their Canvas role.

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.