Giter Club home page Giter Club logo

piano-activity's Introduction

Sample Project: Activity to Practice Piano Notes

This project provides a work-in-progress codebase for a web-based activity that assists in learning the piano.

The project has two parts:

  • A server (written in Python using Flask) which manages the data for the application
  • A client (written in ES6 using React) which displays the activity to the user in a web browser

Getting up and running

  • Make sure python (version 3.5+) and node JS are installed on your system
  • Install Flask into the python environment using pip install flask
  • Navigate to the client folder and run npm install
  • Once dependencies are installed, run npm run build to build the client project
  • Navigate to the server folder, run python run_server.py
  • Open http://localhost:5000/ to access the activity

Task

This is a small starter project which we hope will become a fully-fledged activity. Your task is to add new functionality to this project to produce a working end product.

New Functionality to Implement

The server and client need to be finished off such that:

Server

  • notes are served in a sequence (at the moment the same note is served over and over again - perhaps this could make a tune?)
  • keys pressed by the user are checked on the server, against the current note in the sequence
  • the sequence of notes progresses when the user provides the correct key (until the end of the sequence)
  • a new method is added which provides the user with summary data of correct/incorrect attempts within the provided sequence

Client

  • when a key is pressed, it is checked with the server (using this.props.checkAnswer in App.js) to determine if this is the matching key, and feedback is given to the user (in a user-friendly manner of your design)
  • the next note is then requested from the server, and displayed to the user
  • a way for the activity to be completed, and a summary reported to the user's of their success (e.g. which keys were correct, and which they need to work on)

Extension Ideas:

Demonstrate what you can do by adding your own functionality, e.g.

  • storage of data in a data store (e.g. sqlite)
  • support for multiple users: logging into a user session and storing where each user is up to in the activity
  • improvement of look and feel, e.g. show off some CSS artisanry (or add other packages such as SCSS), or add audio when pressing the keys
  • add unit tests that provide good testing coverage
  • add a Redux store to the project such that state is no longer stored within App.js
  • user results are reported on a separate page which can also be navigated to as a single page app (SPA)
  • additional functionality of your choosing which adds educational value to the activity (be creative!)
  • add a way for users to share their results, or upload their own sequences/tunes to teach each other

Next Steps

Implement as much as you reasonably can, and document any ideas that you don't have the time to build - we may have the opportunity to try and implement some of them together.

piano-activity's People

Watchers

 avatar  avatar

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.