Development/Summer of Code/2019/BookBrainz: Difference between revisions

From MusicBrainz Wiki
Jump to navigationJump to search
(Copy-paste page from last year, but last year project.)
 
Line 12: Line 12:
=== Web API ===
=== Web API ===


Proposed Mentors: ''LordSputnik''/''Leftmost''<br>
Proposed Mentors: ''Monkey''<br>
Languages/skills: Node.js, ES6, Python, Redis, OAuth<br>
Languages/skills: Node.js, PostgreSQL, Docker
[https://community.metabrainz.org/c/bookbrainz Forum for discussion]
[https://community.metabrainz.org/c/bookbrainz Forum for discussion]


We’re currently in the process of switching to using Node.js for all server side code. As part of this, our schema has been redesigned, and the current Python-based web API will no longer work.


BookBrainz currently does not have a way to programmatically query the database.
We'd like a new and improved JSON web API to be designed and implemented. The design would clearly describe the result of each different query to the web API, and give examples of output. It would also describe the workings of any additional features to be implemented - for example, authentication, caching and rate limiting. Authentication in the web API is a particular challenge, since the current MB OAuth setup requires a GUI.


For this project, you will design a JSON web API, and implement it in NodeJS.
The web API should be written using the koa.js Node.js server framework, so that the resulting code is as clean and minimal as possible. Tests should be written in parallel with the implementation, adapting and expanding on the tests for the existing Python web API. The priority for this task is a solid plan and quality code, not a complete implementation (although that would be nice!)

The design would clearly describe the result of each different query to the web API, and give examples of output.
We do not want to impose a specific framework, but the url structure will aim to be harmonized with other MetaBrainz projects.

You will also write the accompanying tests, as well as a documentation that will be available for users.

You will also learn to prepare the Docker image we will use to run the API in production, and how to integrate it to MetaBrainz’s hosting architecture.

Revision as of 14:59, 13 February 2019

This page will discuss the current list of suggested ideas for students to develop proposals for for Google's Summer of Code. If you're a student, feel free to base your proposal on one of these ideas, or pick and entirely new idea that you think might be useful to us.

Getting Started

(see also: Getting started with GSoC)

The first thing to do to get started with BookBrainz is to clone the bookbrainz-site GitHub repository, and follow the README.md file to get the site up and running.

Come and speak to us in the MetaBrainz IRC (freenode/#metabrainz) if you finish all of that, or get stuck at any point!

Ideas

Web API

Proposed Mentors: Monkey
Languages/skills: Node.js, PostgreSQL, Docker Forum for discussion


BookBrainz currently does not have a way to programmatically query the database.

For this project, you will design a JSON web API, and implement it in NodeJS.

The design would clearly describe the result of each different query to the web API, and give examples of output. We do not want to impose a specific framework, but the url structure will aim to be harmonized with other MetaBrainz projects.

You will also write the accompanying tests, as well as a documentation that will be available for users.

You will also learn to prepare the Docker image we will use to run the API in production, and how to integrate it to MetaBrainz’s hosting architecture.