Git Product home page Git Product logo

testpilot's Introduction

testpilot-eol

Simpler Test Pilot site for overall program graduation.

Main features:

  1. The simple JSON file at /api/news_updates.json should provide one last fresh item to trigger the add-on badge alert.

  2. The site should automatically remove the Test Pilot add-on if it's detected on visit to the site.

Development

npm install
npm start
open https://example.com:8000/

If you haven't already followed the Test Pilot quickstart instructions for development, you'll need to use Firefox Developer Edition and enable the extensions.webapi.testing preference in about:config. This is necessary to run code for uninstalling the Test Pilot add-on.

Accepting work from l10n branch

Because this EOL mini-site is a totally different set of commits from master, accepting changes from the l10n branch is a little hacky.

Here's a quick-and-dirty way to do it:

git co l10n
git pull origin l10n
cp -r locales locales-new
git co eol
cp -r locales-new/* locales/
rm -rf locales-new
git add locales
git ci -m'Accept new l10n work'

Oh yeah, and check availableLanguages in index.html to ensure it lists all the locales where strings are available.

Building for Deployment

npm install
npm run static

This should leave you with a ready-to-deploy static site under the dist/ directory.

testpilot's People

Contributors

fzzzy avatar johngruen avatar lmorchard avatar pdehaan 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  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

testpilot's Issues

What data to collect from / questions to ask of users?

See comments in PR45. TL;DR: What data should be we collecting from users per experiment? What questions should we be asking & recording answers for?

This will determine fields added to the data model, at least. A numerical rating is in there now. Do we want to add a text field for a single comment? If we want to run surveys, that implies new chunks of server functionality to add. Anything else?

Splash page

  • Port existing splash page template (but not using jade, let's use mustache and embrace html)
  • Replace email input with addon install button
    • Detect if addon is installed
    • Detect if UA is Firefox
  • Disable button while Idea Town addon install is happening

Switch from normalize.css to normalize.scss

I think we used node-normalize-scss with success on a different project.

Plus it'd let us avoid the weird file rename steps to be able to @import the file into our other Sass files.

gulp.js Usage

Using the gulp-sass plugin.

var gulp = require('gulp');
var sass = require('gulp-sass');

gulp.task('sass', function () {
  gulp.src('path/to/input.scss')
    .pipe(sass({
      // includePaths: require('node-normalize-scss').with('other/path', 'another/path')
      // - or -
      includePaths: require('node-normalize-scss').includePaths
    }))
    .pipe(gulp.dest('path/to/output.css'));
});

— via https://github.com/ranjandatta/node-normalize-scss#gulpjs-usage

/cc @johngruen

missing css error on docker static VM startup

STR:

  • clone repo
  • docker-compose up
  • see this in stdout, perhaps a gulp race condition or some other thing happening
client_build_1 | [18:24:29] Using gulpfile /app/gulpfile.js
client_build_1 | [18:24:29] Starting 'build'...
client_build_1 | [18:24:29] Starting 'clean'...
client_build_1 | [18:24:29] Starting 'connect'...
client_build_1 | [18:24:29] Finished 'connect' after 9.72 ms
client_build_1 | [18:24:29] Server started http://localhost:9988
client_build_1 | [18:24:29] Finished 'clean' after 66 ms
client_build_1 | [18:24:29] Starting 'vendor'...
client_build_1 | [18:24:29] Starting 'npm:tabzilla:img'...
client_build_1 | [18:24:29] Starting 'npm:tabzilla:css'...
client_build_1 | [18:24:29] Starting 'npm:normalize'...
client_build_1 | [18:24:29] Finished 'npm:tabzilla:img' after 22 ms
client_build_1 | [18:24:29] Finished 'npm:tabzilla:css' after 24 ms
client_build_1 | [18:24:29] Finished 'npm:normalize' after 20 ms
client_build_1 | [18:24:29] Finished 'vendor' after 35 ms
client_build_1 | [18:24:29] Starting 'scripts'...
client_build_1 | [18:24:30] Finished 'scripts' after 1.71 s
client_build_1 | [18:24:30] Starting 'styles'...
client_build_1 | Error in plugin 'sass'
client_build_1 | Message:
client_build_1 |     static-src/styles/main.scss
client_build_1 |   4:9  file to import not found or unreadable: ../vendor/normalize.css/normalize
client_build_1 | Current dir: 
client_build_1 | [18:24:30] Finished 'styles' after 17 ms
client_build_1 | [18:24:30] Starting 'images'...
client_build_1 | [18:24:30] Finished 'images' after 17 ms
client_build_1 | [18:24:30] Finished 'build' after 1.86 s
client_build_1 | [18:24:30] Starting 'watch'...
client_build_1 | [18:24:30] Finished 'watch' after 43 ms
client_build_1 | [18:24:30] Starting 'server'...
client_build_1 | [18:24:30] Finished 'server' after 2.97 μs
client_build_1 | [18:24:30] Starting 'default'...
client_build_1 | [18:24:30] Finished 'default' after 4.13 μs

basic admin site

Figure out the minimum viable admin site to let non-devs CRUD experiments (and possibly users)

alternative install flow / individual "idea" page

Let's explore using an individual idea page (/ideas/name-of-idea?) instead of a modal to show off available Idea Town things:

  • make it visible when logged-out (shows potential users the value of the site)
  • provides expanded area for product tour (and potentially, someday, user ratings / feedback)
  • "I understand data usage" checkbox enables the install button

FxA integration

I think FxA now supports the implicit grant flow (no server needed) as well as the auth code flow (server-server secrets exchange). Auth code flow has been used longer, is probably fine as a starting point.

REST API

experiments & user info in a nice form for the main page, experiment detail page, settings page

/home page, logged-out state

  • sign in / sign up button (Firefox Accounts integration)
  • rough layout for static page (don't yet implement a carousel for the hero image area)

Docker instance doesn't respond to 0.0.0.0:8000

I was testing the Docker flow (worked well!) and noticed this one bit of confusion:

bash-3.2$ docker-compose up
Pulling db (postgres:9.3)...
9.3: Pulling from library/postgres
...
server_1 | Django version 1.8.4, using settings 'idea_town.settings'
server_1 | Starting development server at http://0.0.0.0:8000/
server_1 | Quit the server with CONTROL-C.

I wasn't able to get the server to respond on http://0.0.0.0:8000/ or http://localhost:8000/, but it did respond on http://ideatown.dev:8000/ with the following piece of HTML wizardry:

home___idea_town

FWIW, I'm currently sporting Docker 1.8.1.

bash-3.2$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ideatownserver_server    latest              6bf9322c97fa        11 minutes ago      623.1 MB

bash-3.2$ docker version
Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      darwin/amd64

Server:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      linux/amd64

Server metrics

Set up a basic pipeline to ship our server logs and server-side KPI data somewhere

"idea" uninstall flow

Again, implemented as a modal in the initial wireframes. We can explore a full-page version in #16.

  • on 'uninstall' button click, open a modal
  • two steps, again:
    • step one: some kind of feedback form
    • step two: "thx u!" gratitude communication interface
  • uninstall the idea-addon
  • toggle idea view from installed to uninstalled
  • ping the server to update user state

login / sign up flow

  • use FxA redirect flow, it's simplest
  • use the server-server resource grant (FxA provides this by default)
  • store whatever data FxA exposes on the server
  • redirect should bounce the user back to the logged-in view of /home
  • explicitly do not worry about the case where verification occurs later / in a different tab / on a different device

participatory community

Let's figure out sooner than later how users can help each other and build a beta-tester community.

  • we could have some kind of persistent product tour page for each idea
  • periodic "homework assignments" for users could be synchronous, so everyone experiences them together
    • the existing doorhanger at end of v1 wireframes alludes to ongoing feedback gathering

front-end assets

Placeholder for whatever images we want to slice out of the PSD

experiment install flow

Install an experiment, possibly triggering FxA signup, possibly triggering Idea Town addon install

/settings page

Note: we have no wireframes for this screen

  • show user info (email, display name?, avatar?)
  • edit user info (how does fxa handle email changes? if it's hard, ignore for now & file a bug)
  • delete account (for now, don't tie this together with uninstalling Idea Town addon)
  • list "ideas" the user is currently participating in

/home, logged-in view

  • add gear icon (or avatar?) in the usual top-right header spot
  • row UI displaying list of active experiments
    • data needed for each: name, description, addon URL, screenshots, count of active users (maybe)
  • install button for each experiment, for now, just links to an .xpi file (let FF handle the install process)

"idea" install flow

This is currently spec'd as a two-step modal flow. It might be lower friction to implement as a page for a single idea, but we'll figure out the alternate UI later (captured in #16).

  • implement or borrow simple lightbox
  • first step: how the idea alters Firefox (some crude product tour)
  • second step: what data is used (bulleted list?)
  • on modal success,
    • trigger idea-addon installation
    • ping server when idea-addon installation is complete
    • disable button during install process & re-enable when done (icing, skippable)

Gulp does not watch gulpfile.js and restart with changes

This is an issue already when running Gulp straight on OS X host. But, when it's in a Docker container things are worse: you have to restart the container. So, it might be handy to wrap gulp in nodemon or something and make it restart itself when gulpfile.js changes

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.