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

From MusicBrainz Wiki
Jump to navigationJump to search
Line 14: Line 14:
Proposed Mentors: ''Monkey''<br>
Proposed Mentors: ''Monkey''<br>
Languages/skills: Node.js, PostgreSQL, Docker
Languages/skills: Node.js, PostgreSQL, Docker

[https://community.metabrainz.org/c/bookbrainz Forum for discussion]
[https://community.metabrainz.org/c/bookbrainz Forum for discussion]


Line 26: Line 27:
You will also write the accompanying tests, as well as a documentation that will be available for users.
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.
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’ hosting architecture.


=== Use Solr search engine ===

Proposed Mentors: ''Monkey''<br>
Languages/skills: Node.js, Solr, PostgreSQL, (Python, Docker)

[https://community.metabrainz.org/c/bookbrainz Forum for discussion]


BookBrainz currently uses ElasticSearch for its search engine, and we are aiming to replace it in favor of Solr.

This will allow BookBrainz to be hosted on the same infrastructure as the other MetaBrainz projects and harmonize the technologies we use, along with efficiency gains.

You will need a good understanding of NodeJS and ExpressJS to find and replace the relevant components in the web server.

Drawing inspiration and/or using existing tools from MusicBrainz, you will create the schema definitions for Solr and a dynamic reindexer, and prepare the production containers to host the server.


=== Design and implement a unified creation form ===

Proposed Mentors: ''Monkey''<br>
Languages/skills: User interfaces, User Experience, React, Node.js

[https://community.metabrainz.org/c/bookbrainz Forum for discussion]

Currently on BookBrainz, each entity type has a creation form, requiring a complex multi-step process for a simple use case of “adding a book”.

Such an evident workflow should be straightforward (especially for inexperienced users), and we propose adding a new component that will create and link together the various entities needed for adding a book in one go.

We will work iteratively during both the UX and development sections of the project, using a prototyping/wireframing tool and MetaBrainz' new React-based [https://github.com/metabrainz/design-system design system]


=== User collections ===

Proposed Mentors: ''Monkey''<br>
Languages/skills: React, Node.js, User Experience, SQL

[https://community.metabrainz.org/c/bookbrainz Forum for discussion]

With all this data available, it would be great if BookBrainz users could use the website to save the books they have read, and mark the ones they would like to read.

This will allow to build a recommendation engine in the future, along with the integration with CritiqueBrainz.

You would develop a “Bookshelf” feature in the back-end of the website, writing tests as you go.

You would also design the React components and user experience on the front-end of the website, using a prototyping/wireframing tool and MetaBrainz' new React-based [https://github.com/metabrainz/design-system design system]

Revision as of 15:13, 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’ hosting architecture.


Use Solr search engine

Proposed Mentors: Monkey
Languages/skills: Node.js, Solr, PostgreSQL, (Python, Docker)

Forum for discussion


BookBrainz currently uses ElasticSearch for its search engine, and we are aiming to replace it in favor of Solr.

This will allow BookBrainz to be hosted on the same infrastructure as the other MetaBrainz projects and harmonize the technologies we use, along with efficiency gains.

You will need a good understanding of NodeJS and ExpressJS to find and replace the relevant components in the web server.

Drawing inspiration and/or using existing tools from MusicBrainz, you will create the schema definitions for Solr and a dynamic reindexer, and prepare the production containers to host the server.


Design and implement a unified creation form

Proposed Mentors: Monkey
Languages/skills: User interfaces, User Experience, React, Node.js

Forum for discussion

Currently on BookBrainz, each entity type has a creation form, requiring a complex multi-step process for a simple use case of “adding a book”.

Such an evident workflow should be straightforward (especially for inexperienced users), and we propose adding a new component that will create and link together the various entities needed for adding a book in one go.

We will work iteratively during both the UX and development sections of the project, using a prototyping/wireframing tool and MetaBrainz' new React-based design system


User collections

Proposed Mentors: Monkey
Languages/skills: React, Node.js, User Experience, SQL

Forum for discussion

With all this data available, it would be great if BookBrainz users could use the website to save the books they have read, and mark the ones they would like to read.

This will allow to build a recommendation engine in the future, along with the integration with CritiqueBrainz.

You would develop a “Bookshelf” feature in the back-end of the website, writing tests as you go.

You would also design the React components and user experience on the front-end of the website, using a prototyping/wireframing tool and MetaBrainz' new React-based design system