Git Product home page Git Product logo

codelife's People

Stargazers

 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

codelife's Issues

Flat file browser

User's will have a collection of pages in their studio associated to them, as such they will need a means of viewing them, creating new ones and deleting them.

  • view list of files
  • select file to open it
  • click x to delete file
  • change url on file-open to support permalinks
  • make editor readonly if no file is open
  • confirmation on change file (changes will be lost!)
  • confirmation on delete file (are you sure?)
  • enforce unique naming of files

Cheat sheet

Needs a slide type (shall always be second to last slide of final mini-island). This is then considered "unlocked" and should be accessible from the island's home.

  • load cheat sheet from db into a variable on codeblock editor
  • load cheat sheet from db into a variable in studio
  • put cheatsheet into modal popover in editor
  • put cheatsheet into modal popover in studio

Styles for form controls

More blueprintjs UI elements that need styles, you will see examples of all the ones we'll need on the site at /form.

Bring over splash page accounts

We will need to incorporate the accounts from the old splash page. This could be written as a script or a one time DB dump.

Caveats here are that we will most likely need to update the current codelife user accounts table.

Hold Pointer to Last User State

Create a DB element (probably in userprofiles) that holds latest lesson.

  • Create db column
  • Save to user when minilesson is visited
  • Show "continue latest lesson" link somewhere

Tooltip

This should be a generic component which will end up being invoked in a bunch of different places, probably as mouseovers and via clicking. If invoked via clicking, we will need a document listening to remove the tooltip if the user clicks anywhere else on the page.

Profile Page Revamp

Profile page will need to be revamped. This includes:

  • Profile Picture upload
  • Form for writing bio
  • Display of badges based on completion (dbtable: userprogress)
  • "Resume" components
  • Coin totals
  • List of Codeblocks/Projects

Define Gem Rule Dynamics and implement

If we are using Gems/Coins, we need to define how users get them and spend them

  • Decide on rules for reward. 1 per slide? what about quizzes? right the first time vs second time?
  • Add db columns to track gems/coins
  • Increment coins once (and only once) for passing a lesson, requires db checking
  • Show coins in profile/resume
  • coin animation (optional)

Visual rework of Studio

Studio.jsx has some basic file exploration functionality. One can insert snippets using Snippets.jsx and open/close projects using Projects.jsx.

A CSS / visual first pass is needed to place DOM elements according to sketch/invision

Style dialog modal overlay

This is a blueprint UI element (see example in /ui). It would be nice to match the previous palette of the site and to embody the rounded corners, fun, light, kid friendly style from melissa's old mockups:

screen shot 2017-07-19 at 4 58 58 pm

Modal windows

Another UI element which will end up being invoked in many different location and as such should be a generic component. The first use case will be for users to view snippets on the island page.

Apply stricter schemas to ingest.py

Currently tools/ingest.py provides no schema and therefore fills the db with default BIGINT and TEXT types. Need to provide proper schema for each table to properly type inserts.

Enforce unique username in account signup

This could be something done at canon level or enforced by the codelife app. Although it is not necessary for DB integrity reasons (since the user will always have a unique id), it will be necessary for the codelife app since we will want to provide pretty public urls for every user. Eg /john_doe123/profile

Snippet error checking

User's need to know if they pass or not! The snippets cannot be saved until they are in a passing state thus blocking them from future islands.

This will require coordination from a set of "rules" in the db that should ALL be passing.

This will also require very clear instructions and error messages if submission is attempted and fails.

Overworld map to always show description and lock icon

As per Cesar's suggestions, lets show a lock icon on the overworld islands that the user is blocked from. Also, lets always show the description text for these blocked islands so users can know what they'll be able to learn and incentivize to continue!

Revisit Test Passing Code

Currently the "test passing" state relies on a series of rules. It would be nice to break these out into individual descriptions and live-update what is wrong with your code. For example:

✓ includes html tag
✓ includes body tag
✗ missing h1 tag

To accomplish this:

  • Change rulejson to include prompts for positive and negative states
  • Break out checking code to have individual passing/failing states
  • Reduce checking frequency so it doesn't check on every keystroke

Basic UI re-skin stylesheet

Hey dave, blueprint has a really ugle basic stylesheet so we'll need to create a basic override stylesheet of our own.

If you look at /ui you'll see a few examples.

Filtering other user's snippets

There are 2 means of filtering other people's snippets for an island: by school and by municipality.

  • insert drop down component
  • have dropdown pull from db
  • actually filter on click
  • "show more" limiting

Shown below:

screen shot 2017-07-18 at 11 11 50 am

Create new db column for islands to hold color palette

We can use postgreSQL's baked in ARRAY type to store a list of hex values. See below:

Defining array column types

The way we tell PostgreSQL that a column type is an array is by simply appending [] at the end of the type, such as the following:

CREATE TABLE things (
  id SERIAL PRIMARY KEY,
  names VARCHAR(255)[],
  numbers INT[],
  descriptions TEXT[]
);

API endpoints for fetching and filtering all snippets

Create an API route that can accept a lessonid and show all other snippets, or optionally, only the snippets in your school or municipality

  • endpoint for all other snippets by lessonid
  • filtering by school or municipality

View other people's snippets on Island Page

From the island's home, a user should be able to view other people's snippets. They should be able to view other people's snippets at all times (to inspire them as they're completing the island) but only be able to see other people's code once they've completed their own.

  • view other people's snippets
  • show the user's name as part of the snippet (requires db join)
  • add view source button
  • restrict view source until they've beaten it (blocked by #28)
  • "show more" limiting
  • pop it out (blocked by #14)

Show banner over island after first-time Codeblock completion

Once the user successfully passes their test, we need a congratulatory message and give a follow-up action. Something akin to:

screen shot 2017-07-18 at 11 29 39 am

  • create hook that only fires after first completion
  • find someplace to store win messages
  • write copy (blocked)
  • stylize popover (blocked)

Increase visual "invitation" of next lesson

Had a quick convo with alex, for this release, we will be doing less of a "warp straight to where I left off" and more of a "here is quite obviously your next lesson." This only requires us to ham up the click-me-itude of the Next Level or Next Island. We should probably give it a hoppy animation or some extra signaling.

This effectively replaces issue #32

About page

Take all the text from the current codelife splash about page

Visual rework of slidetypes

The slidetypes contained in app/components/slidetypes are very basic, using float:left and float:right to separate sections. All these slidetypes will need CSS reworking

  • TextImage
  • ImageText
  • TextText
  • TextCode
  • InputCode
  • RenderCode
  • Quiz
  • CheatSheet

Log "likes" or "stars" or "views" on Codeblocks

Add new db columns to store social activity and decide when to increment them and show them.

  • add db column for views (likes already exists in userprofiles)
  • add element in DOM to pull and show this number
  • add button to increment likes on Other People's snippets
  • limit likes to one per user (yuck)
  • add functionality to increment "forks" in studio (?)

resize code editor and rendered page on slides

Chloe and I noticed that the code editor and rendered page are too small on the slides right now, especially when there's more code

We were wondering if it would be better to scrape the title (or make it smaller) since it takes up space and doesn't always impart much information

View your own snippet associated to an island

From the island's home, a user should be able to view their own snippet (which is also the final slide of the last mini-island).

  • Insert Link under island with function to fetch snippet contents
  • Integrate modal box for pop-over display

Privacy policy

Bring over all the content from the splash page's privacy policy page.

Revisit Error Checking

Right now the error checking that I get from ace editor is a little hard to understand, and exists in a popup (and is in English!)

Question for @alexandersimoes - I can get an array of Validation Errors from ace-editor, but where should these live? Would they even be helpful for Portuguese students? For example, will an error that mentions you've left out the DOCTYPE at the top of the file be more helpful or hurtful?

Islands homepage layout

Need a layout for the islands page once the user has logged in.

For now (since all the islands aren't complete) we can reuse one example island. We will need to have 3 different classes though: complete, next and blocked.

Server Routine for Screenshots

Given a string of html and inline css code, we need a process by which we can save blob-image previews to a database.

  • configure headless js library (dave)
  • create function to pass htmlcode and return imgblob (dave)
  • create db column to store preview images and update endpoints (jimmy)
  • load screenshot in snippet listings (island view and possibly studio) (jimmy)

Save Answers from Blocking slides

In a given session, save passing state from blocking slides so that going back doesn't make you answer blocking questions again.

  • decide on state variable format
  • remove blocking if state allows it
  • fix back/forward bug

Track user progress

As a user completes an island and its mini-islands, this progress will need to be logged to the DB in some fashion and accrued as they continue for us to indicate visually.

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.