Skip to content

bsocius/university

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to hapijs university. This is a community learning experiment keeping to the values established through the hueniversity distributed classroom. The idea is simple - use GitHub as a platform for teaching people coding skills as a group, where everyone is both a student and a teacher. The goal is to learn how to operate such a distributed classroom and then apply that pattern to other topics by other people.

Lead Maintainer - Jon Swenson

Join the chat at https://gitter.im/hapijs/university

How the project works

  • An assignment is issued.
  • Anyone is welcome to fork the project, write code fulfilling the assignment requirements and submit a PR.
  • After PRs are submitted, we peer review each others PRs and learn from each others critiques.
  • At the end of an assignment and peer review process, we have a nice refined solution to be merged into the project.
  • Merge in a PR and move on to the next assignment.

You are welcome to join!

Assignment List

See the list of assignments for instructions on how to
checkout the project in earlier states and work on previous assignments.

What are we going to build?

Using hueniversity distributed classroom style of learning and development. We are going to build an application with the following features

  • A public page(s) accessible to all.
  • Route(s) with restricted access. Only authenticated users with correct permissions will have access to restricted routes.
  • Sessions support using "a simple cookie-based session management. The user has to be authenticated with a web form, and upon successful authentication, receive a reply with a session cookie." hapi-auth-cookie
  • form validation using joi.
  • tls / ssl support as described at: learning objectives
  • Combat Cross-Site Request Forgery (CSRF) attacks by using hapijs / crumb
  • Configure a plugin to serve static files: css, images, and JavaScript.
  • Render html templates with a configured template engine (handlebars).
  • Configure a plugin to utilize partial html templates and helpers to generate data for html templates.

In the end the application will have the following routes:

  • A home page open to the public (unrestricted) -- home.
  • A login page with login HTML form (unrestricted) -- login.
  • A logged in landing page (restricted) -- loggedin
  • The above routes would be in the "home" plugin. .
    If desired we can make the loggedin route be it's own plugin with a prefix configured. See plugins tutorial for more about prefixes.

What am I going to learn?

You will learn how to build an application server using node and hapi with the following characteristics. It will start with the basics and move on to more advance topic such as authentication, validation, application architecture, testing, and more.

What do I need to know?

You should feel comfortable writing simple functions in JavaScript, working with GitHub, using basic git commands, have a basic familiarity with node, and be able to pick up new subjects by reading tutorials and documentation.

How advanced is this course?

We'll start from the basics and make our way to the most advanced topics. The way this course is structured, you can choose which assignments to participate in, so more experienced developers can "sit out" or help others during the basic assignments and participate when it gets to areas they are not as strong in. However, since teaching is one of the most effective ways to learn, participating early will improve the existing skills of advanced developers.

The assignment will include just enough information to get you going, but you will need to do most of the learning on your own by using the wide range of online resources available. However, the real benefit of this process will come from the code review of your Pull Request. This is where expert developers will review your work and provide you specific and actionable feedback.

How does it work?

First, read the Code of Conduct!

Simple, you start by forking this repo.

Every few days a new issue will be posted with an assignment label. If you would like to participate in the assignment, try to solve it and when you are done, submit a Pull Request back to this repo. Make sure your code complies with the hapi community Style Guide.

While you wait for the assignment to close, take a look at what others are submitting and see if you can improve your own solution (borrow ideas, add tests, write examples, update the documentation). If you see ways in which others can improve their solution, comment on their Pull Request.

Each assignment will have a close date. When the issue expires, one of the Pull Requests submitted will be picked and merged. Any follow up assignments will be based on the merged code.

Before starting the next assignment, make sure your fork matches the current master since only one Pull Request can be accepted.

How can I help?

There are lots of way you can help make hapijs university succeed and help shape a new format for teaching development skills:

  • Submit Pull Requests to improve this readme, add examples, write quick tutorials on how to work with git, etc.
  • Look for issues with a help wanted label or new contributor label and help with those.
  • Randomly pick submitted Pull Request and review them, offering advice and helping others improve their skills.

Anything else?

Open an issue, it's free.

About

Community learning experiment

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 96.4%
  • HTML 3.3%
  • CSS 0.3%