Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Getting started with YorubaName codebase

Getting started with YorubaName codebase

Accompanying slides to the webinar about the various technologies used to build the YorubaName dictionary (http://www.yorubaname.com/). Recorded webinar can be found here https://www.youtube.com/watch?v=BKK80MmPS9Q

dadepo

July 23, 2016
Tweet

Other Decks in Programming

Transcript

  1. Agenda • Overview of the YorubaName Applications • Overview of

    the tech stack • Overview of the architecture • Show (-how-) time! • Making Your First Pull Request • What’s in it for me • Questions
  2. Overview of the YorubaName Applications Dashboard-application Website-application (core + website)

    https://github.com/Yorubaname/yorubaname-website https://github.com/Yorubaname/yorubaname-dashboard Two distinct applications with separate codebases Two distinct deployables Used by Lexicographers to manage names in the dictionary Public facing part of the dictionary (searching, viewing, names etc)
  3. Overview of the YorubaName Applications Lexicographers add names into the

    dictionary Lexicographers publish name into ElasticSearch Users can now search for published names REST-like API provided by the core app The making of an entry: http://blog.yorubaname.com/2016/07/20/how-a-submission-becomes-an-entry/ 1 2 3 4
  4. The Tech Stack • JavaScript/HTML/CSS • AngularJs 1.x • Bower/npm

    • Grunt • Java • Spring Framework/Spring Boot • ElasticSearch (embedded) • MySQL • Maven • Etc. etc.
  5. The Tech Stack <special mentions> http://spring.io/ Spring boot Spring Security

    Spring Data https://www.elastic.co/products/elasticsearch https://angularjs.org/
  6. yorubaname-dashboard/app/scripts/app/ Overview of the Architecture<website-dashboard> Authorization functionalities Generic functionalities Geolocation

    functionalities Related to managing name entries Related to managing users Main entry to application Generic functionalities Defines the routes
  7. Overview of the Architecture<website-app> • Multi-module Maven Application Structure •

    Traditional 3 layer architecture • Employs Dependency Injection based on Spring • Data Access layer is build around Spring Data which wraps around JPA provided by Hibernate Authentication (Spring Security) Application bootstrapping functionality especially when in Development Provides the Search functionality Provides ability for publishing and subscribing to events within the application Provides ability to import names into the database from a spreadsheet Represents the data model that is persisted in the database Contains code for generating text-to-speech from the names in the dictionary Exposes the various functionality provided by the other modules via a REST-like API API client and front end code (template, styles etc) for the website
  8. Show Time • Cloning the repository • Checking all system

    requirements needed to run the dashboard • Running the dashboard application via grunt serve • Checking all system requirements to run the web application • Running the application with in memory database (plugin and IDE) • Running the application with a MySQL database
  9. Making Your First Pull Request • Fork the project(s) •

    Find a bug to fix or feature to implement by perusing the github issues • Explore the Endpoints {host}/swagger-ui.html • Swing by the dev channel on gitter https://gitter.im/yorubaname-dictionary/dev • Create a pull request https://help.github.com/articles/creating-a-pull-request/
  10. What’s in for me • If you are a novice

    in any of the technologies used, it is an avenue to learn new skills • It is also an opportunity to hone existing skills • Satisfaction of contributing towards the building of something cool that also has real cultural value