Code Monkey home page Code Monkey logo

codingblocks.online.projectx's Introduction

Follow @codingblocksin

Frontend for Coding Blocks online made using EmberJS.

Prerequisites

You will need the following things properly installed on your computer.

Installation

  • Make sure CodingBlocks Online Server is installed and running
  • git clone https://github.com/coding-blocks/codingblocks.online.projectx this repository
  • cd codingblocks.online.projectx
  • yarn install

Running for Development

Code Generators

Make use of the many generators for code, try ember help generate for more details

Linting

  • npm run lint:hbs
  • npm run lint:js
  • npm run lint:js -- --fix

Building (for production)

  • ember build (development)
  • ember build --environment production (production)

Deploying

Specify what it takes to deploy your app.

Further Reading / Useful Links

Engines

We are starting to use Ember Engines for this project. Some commands that can come in handy:

  • Run at application root: ember g route <route-name> -ir <engine-name> to run blueprint inside an engine

  • To add components to the in-repo addon (preferably for sharing components accross engines): ember g component -ir ember-w-pack <components> -c

codingblocks.online.projectx's People

Contributors

1arp avatar abhishek97 avatar ananay avatar architkshk avatar ashvary avatar bipinkalra avatar championswimmer avatar codingblocks-bot avatar dhroov7 avatar ember-tomster avatar firefinchdev avatar himankbhalla avatar hitesshbajaj avatar imdhruvgupta avatar ishaandhamija avatar jatinkatyal13 avatar lazy-god avatar leelatanniru avatar prajjwal avatar sanjeetboora avatar sarthak-1998 avatar sd5869 avatar strikerrus avatar tdevm avatar thenamankumar avatar trishitapingolia avatar v27u27 avatar vdvibhu20 avatar vibhorgupta-gh avatar witty123 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

Watchers

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

codingblocks.online.projectx's Issues

Handle Callback response from Dukaan

  • Add a Route /payment_webhook
  • Define queryParams: oneauth_id=xxx&transaction_id=xxx&transaction_status=xxx&product_ids=[]
  • Make request to backend POST /api/v2/run_attempts to try and create a run_attempt(s) for current user.
  • If successful, redirect to /classroom
  • If user is not loggedIn, enforce Login flow.

Replace "X" from "Table Of Content" toggle and use icon

You can use font awesome icons as they are already included as a dependency in this project.

screen shot 2018-06-22 at 11 58 41 pm

PS: The icon should change depending upon the state of the toggle, Show a hamburger for collapsed state and cross for the expanded state.

show modal with video player instructions

Show a modal with following info when user plays a self-hosted video (not during Youtube ones)

  • up/down changes video speed
  • left right seeks +/- 5 sec in video

Add a checkbox with "Do not show again" option, which if ticked, will not show again.
Save the "do not show again" boolean in user's localstorage.

Course Titles should be Hyperlinked

Course Cards should have hyperlinked titles, which should redirect to course page /courses/:id

This needs to be done for all course cards.

use svg for course content icons

image

This is 500 points because whoever solves the issues needs to come up with the svgs too :D
(Use a PNG as a fallback probably)

Provide better error messages for Otp-enroll component

Here we have our OTP-Enroll component https://github.com/coding-blocks/codingblocks.online.projectx/blob/master/app/pods/components/otp-enroll/component.js

It is concerned with two ember-concurrency tasks: sendOtpTask and verifyOtpTask. We would want to provide error messages to the user as received from the backend instead hard-coded one. The error can be a string or a is a serialized Error object. The backend response code in case of error will be 400/500.

For VerifyOtp if you get 500, simple show "Wrong Otp". For 400 you will get an Error object, use that message.

Redirect to login when Otp-enroll button on courses/:id is clicked

Currently, for loggedIn users Enroll via OTP buttons on courses/:id pages redirect to /classroom.

If the user is unauthenticated, We need to make the user go through the login flow (similar to what happens when the user clicks login)

Make sure to cover both the login buttons.

error on clicking 'resume learning'

image

11:05:44.489 Error while processing route: attempt.index t.get(...).get(...).find(...) is undefined afterModel@https://online.codingblocks.com/assets/codingblocks-online-a69fe59a16f6c296695dc52be7f44c6a.js:97:300
w</e.prototype.runSharedModelHook/i<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3551:83
w</e.prototype.runSharedModelHook@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3550:7
w</e.prototype.runAfterModelHook@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3549:37
A@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3678:23
T@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3686:5
R@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3684:43
s</e.prototype.invokeWithOnError@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1612:273
s</e.prototype.flush@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1605:147
a</e.prototype.flush@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1617:13
f</e.prototype.end@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1629:7
f</e.prototype._run@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1670:65
f</e.prototype._join@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1669:322
f</e.prototype.join@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1638:8
Qe.join@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2560:75
handleEvent/<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:256
e.flaggedInstrument@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2553:94
handleEvent@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:181
l.handleEvent@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3338:539
setupHandler/<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3347:14
dispatch@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:614:334
add/m.handle@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:609:224
i@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:6123:12
 1 vendor-ffd644ca84697c0fe352d6edf60205e6.js:6109:59
	wrapMethod/e[t] https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:6109:59
	error https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1864:8
	error/< https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2917:1
	error https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2913:75
	C https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2929:6
	d https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3507:82
	b</e.prototype.trigger https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3541:36
	e/this.promise< https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3536:231
	A https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3678:23
	T https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3686:5
	R https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3684:43
	x https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3681:136
	s</e.prototype.invokeWithOnError https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1612:273
	s</e.prototype.flush https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1605:147
	a</e.prototype.flush https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1617:13
	f</e.prototype.end https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1629:7
	f</e.prototype._run https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1670:65
	f</e.prototype._join https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1669:322
	f</e.prototype.join https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1638:8
	Qe.join https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2560:75
	handleEvent/< https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:256
	e.flaggedInstrument https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2553:94
	handleEvent https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:181
	l.handleEvent https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3338:539
	setupHandler/< https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3347:14
	dispatch https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:614:334
	add/m.handle https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:609:224
	i https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:6123:12
11:05:44.495 Error: More context objects were passed than there are dynamic segments for the route: error
Stack trace:
S</n.prototype.applyToHandlers@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3579:21
S</n.prototype.applyToState@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3576:8
P@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3599:733
transitionByIntent@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3638:344
F@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3623:367
intermediateTransitionTo@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3639:268
intermediateTransitionTo@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2873:78
error/<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2911:78
g@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2910:66
error@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2911:1
C@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2929:6
d@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3507:82
b</e.prototype.trigger@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3541:36
e/this.promise<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3536:231
A@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3678:23
T@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3686:5
R@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3684:43
x@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3681:136
s</e.prototype.invokeWithOnError@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1612:273
s</e.prototype.flush@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1605:147
a</e.prototype.flush@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1617:13
f</e.prototype.end@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1629:7
f</e.prototype._run@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1670:65
f</e.prototype._join@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1669:322
f</e.prototype.join@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1638:8
Qe.join@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2560:75
handleEvent/<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:256
e.flaggedInstrument@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2553:94
handleEvent@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:181
l.handleEvent@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3338:539
setupHandler/<@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3347:14
dispatch@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:614:334
add/m.handle@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:609:224
i@https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:6123:12
 1 vendor-ffd644ca84697c0fe352d6edf60205e6.js:6109:59
	wrapMethod/e[t] https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:6109:59
	captureException https://online.codingblocks.com/assets/codingblocks-online-a69fe59a16f6c296695dc52be7f44c6a.js:374:330
	n https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3280:7
	enableGlobalErrorCatching/Ember.onerror https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:7052:47
	s</e.prototype.invokeWithOnError https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1612:295
	s</e.prototype.flush https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1605:147
	a</e.prototype.flush https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1617:13
	f</e.prototype.end https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1629:7
	f</e.prototype._run https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1670:65
	f</e.prototype._join https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1669:322
	f</e.prototype.join https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:1638:8
	Qe.join https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2560:75
	handleEvent/< https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:256
	e.flaggedInstrument https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:2553:94
	handleEvent https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3392:181
	l.handleEvent https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3338:539
	setupHandler/< https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:3347:14
	dispatch https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:614:334
	add/m.handle https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:609:224
	i https://online.codingblocks.com/assets/vendor-ffd644ca84697c0fe352d6edf60205e6.js:6123:12

README is outdated

The project also requires you to have bower and the README does not specify that.

image

Design and Implement Search on contents

On the Course consumption screen, it will be handy to be able to search on content names.

  • Design and layout of the search UI (Bounty: 200)
  • Implementation for Design (CSS, to done via motley) (Bounty: 500)
  • Feature Implementation (Ember) (Bounty: 1000)

Note: No need to make separate API calls to get search results, assume all data to be loaded on the frontend only.

This is the course consumption screen:

screen shot 2018-06-19 at 8 12 04 pm

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.