Giter Site home page Giter Site logo

mozilla / learning.mozilla.org Goto Github PK

View Code? Open in Web Editor NEW
61.0 66.0 91.0 62.47 MB

This repo is for tracking initiatives of the Mozilla Learning Networks team.

Home Page: https://learning.mozilla.org

License: Mozilla Public License 2.0

JavaScript 88.21% CSS 11.79%

learning.mozilla.org's Introduction

Note: This project is now archived. Content can be found at https://foundation.mozilla.org/en/opportunity/web-literacy/

Learning.mozilla.org

Build Status Uses Mofo Standards Shipping fast with zenHub

This is the source code for learning.mozilla.org, using learning.mofostaging.net as staging server.

For a summary of the most recent changes to the project, please see CHANGELOG.md. It's awesome.

Overview

This software consists of two major parts:

  • A Server-side Node.js library that is used by app.js to generate static page HTML for pages bound to specific URLs.
  • Client-side JavaScript code that runs the site as an app in the user's browser, taking care of (virtual) routing and page loads after the initial server response for the URL the user first started using our site on.

Get started

Dependencies

To get a local version of the site running, you'll need to have git and node installed on your local machine.

Clone

In order to contribute to this project, you'll need to create your own fork of it and make pull-requests against our master branch.

Clone from your own fork or from the original:

git clone https://github.com/mozilla/learning.mozilla.org.git
cd learning.mozilla.org

Build and Develop

To start developing, all you need to do is run the following in the learning.mozilla.org directory you just created:

$> npm install
$> npm start

The first command installs all the dependencies for Node.js to do its thing, and the second command runs a compile for the server and client code, while also starting a local server on http://localhost:8008, with the compiles running in watch` mode, so that any changes you make to files result in the updated code getting bundled in.

Note that this is not the same as hot-reloading: you still need to manuall reload your browser window/tab to see the effects of your code updates.

A note about source maps

Because this project uses a variety of tools that transform the original source code before delivering it to the browser, it is critical for source maps to work properly in order to ensure a pleasant developer experience.

However, due to the unfortunate realities of software development, there isn't a "one size fits all" solution to this. Please be sure to read the Environment Variables section below and configure your environment as needed to ensure that you're seeing useful line numbers for whatever part of the codebase you need to change.

Directory and naming conventions

JS

  • lib/: Non-react modules, as well as entry-point modules for the client and server bundles.
  • components/: Re-usable react components that can be used throughout the site
  • pages/: React "page" components, i.e. top-level pages required by lib/router
  • hoc/: React higher-order components

Less

  • less/: This is where you should add styles. common.less is the entry-point.

Other

  • img/: For images
  • build/: used as a staging area for the server bundle This folder is gitignored, do not edit files here.
  • dist/: Generated site assets goes here. This folder is gitignored, do not edit files here.

Localization

Work in progress, but please read the documentation on how we are doing it for the site here.

Test

The code currently only comes with linting, which runs automatically as part of the webpack compile.

Environment Variables

The following environment variables can be used to modify how the software works.

Name Description
NODE_ENV set this to production to automatically minify code and remove various development-only affordances.
SHOW_DEV_RIBBON set this to on to show the "dev version" ribbon even when NODE_ENV is set to production. This can be used on staging sites.
WEBPACK_DEVTOOL determines the setting for the devtool Webpack option. In development, it defaults to eval, while in production it defaults to source-map. For more details on the trade-offs between different options, see our conversation on sourcemaps.
LESS_AUTOPREFIXER set this to off to disable the LESS autoprefixer and enable useful CSS source maps, which is a workaround for #413.
ORIGIN is the domain name of which the site is hosted. This is used in situations where absolute URLs are required, such as generating a sitemap.xml file.
MAPBOX_ACCESS_TOKEN is the Mapbox access token to use for embedded maps in the website. Optional.
MAPBOX_MAP_ID is the Mapbox map ID to use for embedded maps in the website. Optional.
TEACH_API_URL is the origin of the Teach API server. Defaults to https://teach-api.herokuapp.com.
GA_ACCOUNT is the property ID of the Google Analytics account. E.g. UA-123.... It defaults to the property ID for the Teach site. Set it to DISABLED to disable Google Analytics entirely.
GA_DEBUG When set to 'on' will output verbose info to the console about what data is being sent to Google Analytics.
NEWSLETTER_MAILINGLIST_URL is the newsletter signup form destination. If undefined, newsletter signup is simulated for development purposes.
HIDE_NEWSLETTER_SIGNUP_FORM is the flag to hide/show newsletter signup form on the site.
PORT is the port to serve the experimental lightweight dynamic server on. Defaults to 8008.
OPTIMIZELY_ID Optimizely Project ID (not a secret) e.g. '206878104'
OPTIMIZELY_ACTIVE If set to 'yes' (String) the project will include Optimizely snippet in the page load
MAKE_METADATA_URL The template source url to load users' Makes metadata. Username should be included in the URL as a variable. e.g., https://{username}.makes.org/makes.json
WORDPRESS_DOMAIN The domain to the wordpress.com site this app retrieves data from. e.g., helloworld.wordpress.com (with no protocol),
supportedLocales enables specific locales, for example: ['en-US', 'id'] will only enable 2 locales. Default value is * which will enable all locales under locales directory.
LOGIN_EMULATION determines whether or not the teach-api is used for login state management. defaults to false.
LOGIN_EMULATION_LOGGEDOUT determines whether, when login emulation is on, the login state should be logged in or out. defaults to false.
LOGIN_EMULATION_USERNAME determines the username that is used when login emulation is on and login status is not set to logged out. defaults to 'testuser'.
FULL_SUBDOMAIN_FOR_COOKIE A domain string, used by Optimizely to determine cookie domain that is used by Optimizely. defaults to 'learning.mozilla.org'
ENABLE_PONTOON set this to on to inject the Pontoon client-side localization script.
CREDLY_BASE_URL The main url that you can access the Credly interface through. Defaults to https://staging.credly.com.

Using Environment Variables in Local Development

Create a file called .env in the root of your project, and then add all the environment variables you need into this using the following format:

export GA_ACCOUNT='xxxxxxx'
export TEACH_API_URL='xxxxxxx'

Feature Flags

These are environment variables that turn on experimental features that need to be tested in a staging environment but should not show up on a production deploy. These flags need to explicitly be set for the feature to show up.

The current list of feature flags is:

Name If set, enables...
ENABLE_BADGES rendering the /badges and /badge/.... routes, and reveals the badge main page as a sidebar navigation option.

Content Security Policies

If you run into CORS or CSP issues (blocked domains trying to GET or POST, loading external scripts like X-Ray Goggles, etc) then you probably want to make sure that the Content Security Policy is set to clear whatever it is you need cleared.

We handle this in app.js, in the helmet.contentSecurityPolicy block. Typically you'll care about the connectSrc block for remote content fetching, and the scriptSrc block for injecting/loading external scripts, although you might have CSP needs outside those two categories: all of the major CSP categories have their own section and should be readily identifiable.

References

learning.mozilla.org's People

Contributors

aayushsanghavi avatar alanmoo avatar alicoding avatar andy-moz avatar bychekru avatar dilorom2017 avatar dkmoz25 avatar flukeout avatar gesa avatar gvn avatar iamjessklein avatar jurajcigan avatar kitsunenosarat avatar koehlermichael avatar maftuna2017 avatar mahinahon avatar mikkcz avatar mmmavis avatar mohammedbelkacem avatar mozilla-pontoon avatar pomax avatar ravmn avatar scottdowne avatar simonwex avatar stoyandimitrov avatar theochevalier avatar tonnesm avatar toolness avatar ujdhesa avatar vasimi 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

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  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

learning.mozilla.org's Issues

Design Mentor Profile form and viewer

RACI

Background and purpose

A primary finding from our user research is that mentors want to connect to other mentors. The Mentor Profile should facilitate that. The form should not be overly burdensome, but should allow mentors the space to express their interests and accomplishments in teaching web literacy.

Form Content

  • Name
  • Location
  • Context for teaching web literacy (e.g. in a school, in a library)
  • Particular interests (e.g. "I want my kids to feel empowered," or "I'm interested in making sure that girls are included in STEM efforts")
  • a photo

Viewer content

The viewer should include the above plus the following dynamically generated content:

  • "...I've been a mentor since [date]"
  • "Upcoming events I'm hosting"
  • "Past events I've hosted" (title, date, location)
  • "Clubs I belong to" - perhaps with a special visual designation for Club Leaders
  • "Message Me!" - note, this implies functionality that I don't believe we have. May not be necessary for v1, but I'd like to discuss the technical and privacy implications. Would likely be a user preference that the user can toggle on/off. e.g. "Allow / Don't allow other mentors to contact me"

Eventually, the profile viewer might include additional dynamically-generated content such as badges earned and curriculum modules added/remixed.

[MIGRATED] Develop tool-related activity for Maker Party

This is a placeholder ticket for now, as it's dependent on the Learning Product. The idea is to provide a piece of teaching content for Maker Party that makes good use of the new tool.

RACI

  • Phase:
  • Owner:
  • Decision Maker:
  • Design Lead:
  • Development Lead:
  • Quality Verifier:

Deliverables:

  • TBD

[MIGRATED] Create privacy badges landing page at hivetoronto.org/privacybadges

As per Planning Ticket MozillaFoundation/plan#206

  • In addition to the individual badge pages, we'll also want a landing page that shows off all three badges. That shows all three badges, with a bit of explanation, linking through to the individual badge pages.
  • After talking with Karen, we decided the best and simplest way to do this would to just update the WordPress page at hivetoronto.org/privacybadges. A simple WordPress page with some copy (that Karen will write), images and links.
  • The landing page will be created and maintained using the HiveToronto.org WordPress site. With a bit of copy explaining what the badges are, providing come context, and images of the badge designs that links out to the badges landing pages on webmaker.org
  • @smithisgeneric will write copy and own the page. A designer would be helpful to provide a bit of extra HTML expertise in the wordpress page to get it looking how we want.
  • Here's a sketch that maps out the relationship:
    hivebadgeflow

[MIGRATED] Schedule work week follow-up meetings

  • Schedule partners criteria meeting w Ben and An-me
  • Schedule M.P clarity meeting w Amira, Paul and Claw
  • Schedule metrics clarity meeting w Claw, Adam
  • Write up results of both meetings and put into a blog or wiki

[MIGRATED] Conduct Train the Trainer in Whistler for RC's

We'll invite RCs to Whistler, and will use the time to train them in the Teach Like Mozilla module so they can then go forth and train Club Leaders.

RACI

  • Phase:
  • Owner:
  • Decision Maker:
  • Design Lead:
  • Development Lead:
  • Quality Verifier:

Deliverables

  • Invite RCs to Whistler
  • Plan TTT
  • Prepare supplementary materials
  • Run the training!

Build Clubs Curriculum page

RACI

Design assets will come from #106.

Requirements

  • Responsive
  • Works in all supported browser versions
  • Does NOT need to be dynamic. The curriculum titles/images/blurbs can be static for v1.
  • Does NOT need to be l10n'ed for v1. Any translated curriculum can be linked to from the github pages themselves.

Tasks:

  • Design review
  • Content review

[MIGRATED] Update wiki with work week decisions

Wiki pages to write:

  • Insights from other models
  • Our POV
  • Our allies/audience
  • Messaging/narrative (recalling the the storytelling exercise we did at the work week)
  • Naming
  • Job descriptions
  • Metrics
  • Calendar of milestones and quarterly deliverables
  • What does success look like for each swimlane (i.e. Leadership development, online platform, curriculum, partners, mobilizing)

Add'l tasks:

  • Write blog post highlighting and pointing to all of the above

[MIGRATED] Provide expectations and resources for RCs during Maker Party

RACI

  • Phase:
  • Owner:
  • Decision Maker:
  • Design Lead: NA
  • Dev Lead: NA
  • Quality:

Deliverables

  • List of expectations for our RCs during and post-Maker Party
  • Resources to support RCs during and post Maker Party (e.g. "How to see potential in MP event hosts as CC's," "How to use the Self, Us, Now model to invigorate new recruits," and "How to expand clubs within regions")

[MIGRATED] Scope MDN intermediate Module

RACI

  • Phase:
  • Owner:
  • Decision Maker:
  • Design Lead:
  • Development Lead:
  • Quality Verifier:

Deliverables

  • clear scope for module
  • assign person to support the development of the module

Design 'Clubs' page for teach.webmaker.org

RACI

Background docs

Primary CTA - "Add your Club to the map"

  • Map with existing Clubs pinned and a CTA to "add your Club to the map"

Primary content - explanatory information about Clubs + Map

  • Suggested headline copy: Mozilla Web Literacy Clubs are local groups where learners are empowered with web literacy skills so that they have agency on the web as creators, citizens, and future leaders.
  • Suggested body copy:
    Mozilla Web Literacy Clubs:
    • have a local leader, or leaders, who work to sustain the Club over time
    • are in classrooms, libraries, and coffee shops, as well as around kitchen tables
    • make use of and contribute to our modular, remixable curricula [link to Teaching Activities page]
    • embody our approach to teaching and learning: we learn by making projects together and openly reflecting on the process in an inclusive and locally relevant environment
    • are connected to regional communities and the global community of teachers and learners through shared campaigns
  • Users should be able to see specific Club information by interacting with the map, though Club profiles and search may not be needed at launch

Secondary content - Resources [maybe these could be presented with just icons; not sure]:

  • Modular, remixable Web Literacy curriculum [link to Teaching Activities Page]
  • Connect with other Club Leaders [link to discourse thread]
  • Tips for running your Club [link to "Tips" page #62 ]

Also see the ticket for designing the "Add Your Club" workflow: #70

Future planning

  • In the future, we'll likely have rich Club pages with portfolios, members, events, etc.
  • We may also have Region pages with profiles of Regional Coordinators, and lists of all the Clubs in a certain region

[MIGRATED] Create calendar of TTW talks topics

The topic list should complement the curriculum modules.

RACI

  • Phase:
  • Owner:
  • Decision Maker:
  • Design Lead:
  • Development Lead:
  • Quality Verifier:

Deliverables

  • List of talk topics
  • Confirmed guest speakers
  • Publish calendar of upcoming talks on teach site

Explore teach.webmaker.org visual branding

Assuming this iteration of teach.webmaker.org is somewhere between Webmaker styles and a potentially new Mozilla Learning brand, what would that look like? Prob. still needs to feel like it falls within or at least beside the Webmaker brand. Could just slightly tweak different palettes and imagery, for example.

I think the deliverable for this ticket should be:

  • a revised color palette and
  • treatments for images and
  • sample illustrations.

@sabrinang I'm actually wondering if some of the Training branding you did last year could be a good jumping off point for this.

[MIGRATED] Build badge pages and enable claim codes for Hive Toronto badges

As per: MozillaFoundation/plan#206 (comment)

  • We need to build the pages @iamjessklein is designing here: #10
  • We will look to re-purpose this existing template:
    https://webmaker.org/badges/hive-community-member
  • These templates will need to be adapted to work with claim codes. The user will enter a claim code, and then be issued the badge. Note that claims codes are the only way the user can earn the badge.
  • @ScottDowne : you'll need to do some research on how claim codes work.

@simonwex : My understanding is that @ScottDowne is going to help build these pages and enable claim codes to work.

Research CMS tooling

Who / what / how frequent will changes need to be made to teach.webmaker.org?

This ticket is for researching and exploring UX around different options.

Design badge pages for Hive Toronto privacy badges

As per this planning ticket: MozillaFoundation/plan#206

cc @smithisgeneric @simonwex @ScottDowne

Design homepage for teach.webmaker.org

Kickoff notes are here: https://etherpad.mozilla.org/teach285

RESOURCES:

Teach product roadmap:
https://wiki.mozilla.org/Learning/Networks/Product-Roadmap

Interactive wireframes:
performed better: https://marvelapp.com/11ji896#2375127
https://marvelapp.com/b0ah39#2378718

Full wireframes redpen:
https://redpen.io/p/tcd5fbcae44ba63df9

HK'S User testing analysis:
Doc: https://docs.google.com/a/mozillafoundation.org/document/d/1O5XgvrTDShvipos_Ks1GeKLvewvaoBFMCQwtz0dE1Nk/edit
Presentation: https://docs.google.com/a/mozilla.com/presentation/d/1T2nhwdPjfWRNSK1FRg_yAr9Tit7TSN4GuwTfISMy3jc/edit?usp=sharing

Key insights from user testing so far:

  • mentors want to see other mentors; find people easily
  • valuable to see both full size curriculum and bite-sized activities
  • search is important; ppl will generally know what they're looking for
  • re. clubs – people care about comprehensive material, not necessarily location (could be bias here)
  • "Do you want to get involved? Here's how to do it." (easy to jump into mentor pathways)
  • Happy side effect: Tools are de-emphasized; activities / content are the focus

    Key questions:

  • Will we separate Audiences A & B (educators outside our network vs. contributors already within [hives, mdn, etc])
  • What kind of social network are we? LinkedIn vs. Quora vs. Twitter?
  • What is the best content we already have for activities and curriculum? [This is what's being tested with the Q1 pilots, right?]

Design "Teaching Activities" page

RACI

Primary content - activities!

  • The activities are being finalized in #81.

Secondary content - web literacy

  • Suggested headline copy: "What is Web Literacy?"
  • Suggested body copy: "Mozilla defines web literacy as the skills and competencies needed for reading, writing and participating on the web. Learn more" [link to Web Literacy page (to be created)]

Tertiary content - upsell Clubs

  • Suggested headline copy: "Join the global web literacy movement"
  • Suggested body copy: "We invite you to adapt the Web Literacy curriculum to meet the needs of your group of learners. Add your local group to our global network, share any remixes you create, and help grow this movement." [link to Clubs]

User-test wireframes with users outside the mozilla network

@hannahkane mentioned that it could be helpful to have insights from users who have no prior experience with Mozilla. Could we retest some of the wireframes – from https://marvelapp.com/11ji896#2375127 and https://marvelapp.com/b0ah39#2378718 – with a few new users?

FYI:
HK'S User testing analysis from Round 1:
Doc: https://docs.google.com/a/mozillafoundation.org/document/d/1O5XgvrTDShvipos_Ks1GeKLvewvaoBFMCQwtz0dE1Nk/edit
Presentation: https://docs.google.com/a/mozilla.com/presentation/d/1T2nhwdPjfWRNSK1FRg_yAr9Tit7TSN4GuwTfISMy3jc/edit?usp=sharing

[MIGRATED] Gather and collate resources for Teach Like Mozilla module

RACI

[edited by Laura]

Collections

Deliverables

Build sign-up flow

RACI

Ideally, we’ll just use the Webmaker sign-up flow, though we’ll want to change the copy. e.g. perhaps just “Create an Account” where it currently says, “Create A Webmaker Account.”

The “Send me email updates” box should add the user to the Mentor distro list in BSD.

Tasks:

  • Design review
  • Content review

Should trigger a transactional email (see email number 1 here: https://teach.etherpad.mozilla.org/clubtransactionalemails)

Change repo name to Mozilla-Learning?

As much as I love Scooby Doo and the Flintstones, I'm wondering if this repo name could be made slightly more descriptive. :) Perhaps Mozilla-Learning?

I don't know if it's possible to change a repo name, and, if it's not, I don't seem to have permissions to create a new repo within MozillaFoundation.

Please advise, @simonwex. :)

Optimize curriculum for mobile

The new template doesn't look snazzy on mobile, buttons move around etc. This issue is to make our curriculum repo mobile optimized :)

RACI

  • Phase: gathering requirements
  • Owner: @hannahkane
  • Decision Maker:
  • Design Lead: TBD
  • Development Lead: TBD
  • Quality Verifier: @cassiemc

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.