Coder Social home page Coder Social logo

community-platform's Introduction

Zen, the CoderDojo Community Platform

Join the chat at https://gitter.im/CoderDojo/community-platform

Welcome to "Zen"! You can see the live site at zen.coderdojo.com.

This repository is the documentation for the project. We log issues in this repository.

There are also three microservice repositories and a frontend repository.

If you want to jump straight in to getting your development environment set up, visit the development environment repository here.

About the project

CoderDojo is a network of free computer programming clubs for youths aged 7-17. It is a global charity and we currently have more than 900 clubs in over 63 countries!

Zen was originally set up to track new "Dojos" (coding clubs) and help the CoderDojo Foundation track new clubs being set up worldwide. In 2015, it was redeveloped to be a fully fledged community platform. It is built entirely in javascript using NodeJS and AngularJS.

It includes:

  • Ability to search for a Dojo (coding club) and join the club
  • A bespoke ticketing system where parents and mentors can book tickets for their local club
  • Profile pages for parents, mentors and youths
  • Two forums (Over 13 and community forum), running on NodeBB.
  • Mozilla Open Badges integration.

Most of the technology we use is open source, and we are proud of it! For CoderDojo related questions, contact [email protected]. Get in touch with [email protected] with any technical questions.

Contributing to Zen

There are various ways to contribute to Zen:

  • as a developer, instructions for creating a local development environment can be found in the cp-local-development repository. You may also wish to read the contributing guide.
  • as a translator, we use CrowdIn to help manage localisation, please sign up and help out!
  • issue management, we keep track of all our issues in GitHub in this repo, help out here
  • documentation, by contributing to the documentation in this repository.

Where to begin

View our Speaker Deck!

There are a few labels in particular that are very useful if you are new to Zen:

  • The beginner label marks anything considered easy enough for a first time contributor.
  • The request for comments label is great for non-coders or people wishing to get familiar with the system. These are often features we are not sure if we want to produce yet, or issues that require clearer implementation guidelines.
  • The hints provided label is attached to anything which has been given a technical spec by someone on the development team.
  • View this document for a brief overview of the sections of the system and how to access them with the test account.

Bug fixes

  • Ideally all of the bugs are the most important issues to fix. They are categorised by priority.
  • There is a critical bugs milestone for the most important bugs.
  • Some bugs are smaller CSS issues that are marked low priority and so are not as important to work on.

Priorities for the project

Once you're familiar with the codebase, there are a number of labels/milestones to guide you through our roadmap.

Still not sure? Get in touch, let us know what you are interested in working on and we're happy to provide guidance.

Working on an issue?

  • Comment on it and let us know so we don't duplicate any effort.
  • We can add you to the official CoderDojo development team so you can assign yourself issues.
  • Please add unit tests where possible to your code. There is an end to end test repository for front end testing. There is also a tests directory in the root directory of each service and in the front end repository.
  • Tag @tangentfairy if you have any questions.

Developer Support

  • The CoderDojo Foundation Technical Lead is available to help you get set up.
  • Join the gitter chat if you have any questions.
  • Those who have committed to the project can be added to the Foundation Slack community for daily communications. Please get in touch to be added!
  • To get in touch, email us at [email protected]
  • To deploy a change, you'll need to get in touch as only those with commit access can do so.
  • Have a read through closed pull requests in the frontend repository to get a feel for what we have been working on.

License

The Community Platform (Zen) is copyright The CoderDojo Foundation, and open sourced under the MIT license.

Documentation

The following is a list of further reading:

  • Architecture - a high level overview of the system, the code layout, etc
  • Localisation - some notes on localisation
  • Forums - some developer notes on the forums

community-platform's People

Contributors

ckiss avatar corypanderson avatar danielbrierton avatar dberesford avatar dmk12 avatar gitter-badger avatar giustina avatar glentiki avatar iantocristian avatar mihaidma avatar nathanpower avatar niccokunzmann avatar raboof avatar sigismondm avatar taranjeet avatar wardormeur avatar yezooz 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

community-platform's Issues

AWS setup..

  • need account admin access
  • need basic deployment diagram
  • need vpc/iam/nscale/etc deployment setup

Mentor profiles

High level ticket for Mentor Profiles.

Dojo Mentors can be invited to join the platform by their Dojo Champion or request to join a Dojo and once approved can create profiles and access adult forum and Dojo ticket viewing and booking.

SFM-05 in the requirements doc.

screen shot 2015-05-18 at 09 16 07

Dojo Admin

High level ticket for Administering a Dojo, requirement FM-06:

screen shot 2015-05-18 at 09 36 29

Add terms and conditions to registration form

We need to have a tickbox at the bottom of the registration form asking you to accept the terms and conditions. The "terms and conditions" text will link to an external page with the terms.

This is separate from the charter page. You accept the charter on a separate page and it is a separate document. The terms and conditions is a legal document, and the charter is a separate agreement.

Create second dojo

After I have submitted my first champion application, I clicked on "create dojo" again, and it brought me to a page with a bunch of templates. See below:

create-second-dojo

The same happens when I go to "my dojos" and click "edit" on an existing dojo.

Microservices should use their own database

Each microservice should be configured to use their own database.

  • break down /scripts/database/pg/create-schema.sql, move to service repos
  • call db-create in each service repo when setting up

Dojo Email

High level ticket for Dojo Email - FM-07 in the requirements:

screen shot 2015-05-18 at 09 32 56

Privacy statement page

In addition to the cookie banner, we'll need a page listing all of the cookies we'll be using on the site, as per regulations.

We can fit this in as part of the privacy statement Rosa is drafting

Will assign myself this one for now.

Existing dojos do not generate coordinates

I tried inputting the locations of two existing dojos but I don't get any results. This is on the staging server.

This is related to what I was saying about possible "edge case" coordinates - but it seems like these existing dojos should still work. Both areas are easily found on Google maps.

First, our existing dojo in Argentina:

Then I tried an existing dojo in Japan

The location is a large area in Google Maps so I'm not sure why we can't geocode it.
google-maps-tokyo

Oauth/Login

High level ticket for Oauth/Login, including:

seneca/passport.js related work
mediawiki
login
registration

Shell for cp-zen-platform

Main repo for the 'logged in' (i.e. angular) part of the platform, this repo will tie all the plugins together. Each plugin will be its own repo consisting of both angular and seneca back end

Dojo Listing

High level ticket for the original 'Dojo Listing' in the project plan estimates.

Nits from weekly demo 14/5

  • make phone number clearly optional
  • reduce padding in register dojo
  • register button needs padding (too tight to last field)
  • problem with the slow loading of the map
  • 'login' link shouldn't say login
  • Remove link to Charter in top menu

Dojo Leads Data Visualization

Currently there is no way to view the Dojo lead data submitted via the wizard.
This data will eventually be sent to sales force but do we also need to show this data somewhere in the zen-platform?
If so, should this be a new view e.g. Manage Dojo Leads ? or should this be integrated into the Manage Dojos view?

New workflow for register dojo

Email & screenshot from Kevin:

4 sections that can be expanded and contracted. The contents of each section are checkboxes and text boxes which may be interdependent and should be configurable.

2 requirements.
When you open section 1 there is a next button that will indicate if all mandatory data has been entered, and , if so, will close section 1 and open section 2. Same for each section.
User can also manually open each section by clicking on the button in the picture.

newworkflow

Data migration script: myslq -> json

The old zen platform stores it's data in mysql. We have a dump of this data today, and we a migration process to go from mysql into mongo or whatever database we go with. For now, lets go with exporting the mysql data to json. We also need real world data to being development.

So:

  • I will send you a dump of the zen mysql database
  • import it into your local mysql
  • come up with a way of exporting the data to json e.g. http://lmgtfy.com/?q=dump+mysql+to+json :-)
  • or write a small node cli that will do the job
  • ideally we want to be able to specify the tables to export to json, or if no tables specified, export the full database

cp-zen-platform - package.json tidy up

There are two package.json files in the cp-zen-platform, one in the root directory and one in the web folder, we should merge these files to only have one package.json file.

Continious Integration server setup

Need to install Jenkins on a dedicated vm in aws:

We also need jobs for running integration tests and end to end tests, and also for deploying to production (the exact requirements here will be fleshed out in phase1 go live).

Publish all github repos

All references to github repos should be removed and the github repos referenced need to be published to npm.

The direct repos we're using are:

"git://github.com/sigismondm/seneca-elasticsearch.git",
"git://github.com/iantocristian/seneca-postgresql-store.git",
"git://github.com/iantocristian/seneca-mail.git#0.1.6",
"git://github.com/iantocristian/seneca-ng-web.git",
"git://github.com/iantocristian/seneca-perm.git",

Feedback issues 5/5/2105

Feedback email from @tangentfairy and the team:

Here's some feedback from myself, the main issue being that at the moment I cannot get past the "Champion Registration" step. I know it was working last week so something must have changed.

  1. I cannot input email address and full name. Form doesn't allow me. See screenshot. This works if I refresh the page, then those fields are prefilled with what I entered on the previous page. - Fixed

I cannot select a country on this page either. It works if I refresh too. Laura says it does not work for her on refresh. - Fixed

  1. The loading of the page looks very odd when I refresh. If I have already gotten to step 2, it appears to load step 1 and then redirect and load step 2. Can we make it just appear to load step 2? - Fixed

  2. The date of birth field looks great with the calendar, but if I am on City/Town, I fill out City/Town and then I tab to the next field, the calendar doesn't come up. Can we change this so the calendar comes up when you tab to the to Date of Birth field?

  3. If I enter a town that doesn't exist in the geocoder, E.g. "Catania" in "Italy" - then it blanks out my entry when I go to another text field. Are we allowed to enter a dojo that isn't geocoded? If it doesn't show up can we have a map show up to pinpoint the town?

It seems really difficult to understand that you need to pick an option from the list for the city/town field. If I typed in "Enniscorthy" and then didn't select "Enniscorthy, Loch Garman, Leinster", then how do I know I have to select that option?
we need to fix the validation here, the place field is required but it's not working properly

Would like to know what Eugene thinks about those points.

  1. City/Town lookup is case sensitive - can we capitalize the word and do the lookup OR lowercase lookups being returned? I don't expect the user to capitalize it themselves.

  2. Date of birth field is automatically set to the current date. Can we set it to at least 18 years ago.

  3. Register button doesn't work. I see an ajax call to save_dojo_lead but the form doesn't go to the next page. Tried this in Chrome and Firefox. - Fixed

Rosa did get to look at it last week so her feedback includes the steps past Champion Registration. I'll provide more feedback when it is fixed.

Here's a list of feedback from Rosa:

  • DOB - should be able to be entered by text - not just flick through calendar - I have added date dropdown select menus instead of the calendar. I don't think it's a good idea to let the user type in a date as there needs to be a consistency with date format. Let me know what you think.
  • Phone Number - Should not autofill, don't know if this is just me or not but other peoples numbers are appearing below here :/ May just be random numbers stored on this comp somewhere :/ - Fixed
  • Get rid of team & venue question on the Reg form - Fixed
  • Add the 2 additional fields (from our salesforce form) beside tech mentors & venue checkboxes where people have text fields to explain where or a bit on their team. - Fixed
  • Gather Team and Find Venue are interchangable - you should be able to move from one to the other without completing the other - The wizard works by applying validation at each step when the user clicks submit. We have two required fields in the Gather Team step (Gather Team checkbox and Find Mentors checkbox), so allowing the user to continue without completing this step would mean making these fields optional. An alternative would be to merge the Gather Team and Find Venue into one step
  • Proof/sentence on how your team is background checked. - Fixed
  • Background checking is an optional field (unfortunately)
  • Dojo Content should be changed to Plan your Dojo with the following checkboxes;-Fixed
    Plan how frequently you will run*
    Social Media (optional)
    Website (optional)
    Set the date*
    first date of your Dojo is;
  • Plan the content you will use - Fixed
  • Confused about the Place field on Dojo listing - not necessary
  • Should we move status messages/ supporters image url into central field? People often miss this at the minute and ignore changing this from default.
  • Supporters image URL - could also include upload image.
  • Mailing list has no tick box :( -Fixed

Testing infrastructure

In broad terms we aim to have a classic 'snow cone' testing pyramid: http://martinfowler.com/bliki/TestPyramid.html

  • microservice unit tests: all microservice will have a baseline of unit tests, this can be run independently of other microservices or any other dependencies. These should have code coverage stats to show how much of the service is covered. This will be run directly on the CI server.
  • UI unit tests: angular unit tests, should be very lightweight. These should address UI validation type of testing and again should have no external dependencies
  • service/integration tests: small number of end to end tests that can be run on staging, have had good experience with http://nightwatchjs.org/ in the past for these.
  • production tests: very small number of end to end tests for production, should bare happy path and non-destructive

Forums for adults

High level ticket to implement NodeBB for the adult forums.

Rough list of tasks:

  • dockerise nodebb and get it deployable via nscale
  • integrate it with the main platform:
    • 'Forums' link should bring you to nodebb service (via nginx routing
      presumably)
    • investigate what we need to do login and users wise
    • investigate what we need styling wise to make it look like the rest of CD

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.