Skip to content

Instantly share code, notes, and snippets.

@shubham-padia
Last active August 25, 2018 11:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shubham-padia/77c7f0345907f1e970d813ec7c869790 to your computer and use it in GitHub Desktop.
Save shubham-padia/77c7f0345907f1e970d813ec7c869790 to your computer and use it in GitHub Desktop.
GSoC 2017 Work Product | Shubham Padia | Open Event API Server | FOSSASIA

GSoC 2017

Shubham Padia | FOSSASIA

Overview:

This summer, I worked on FOSSASIA's Open Event API server project. The Open Event API Server enables organizers to manage events from concerts to conferences and meet-ups. It offers features for events with several tracks and venues. Previously the backend and frontend for the open event organiser server were tightly coupled with each other, which resulted in the project being hard to maintain. The open event ecosystem also consists of other components such as Open Event Android, Open Event Orga App, Open Event Webapp; sharing data with these components was difficult in the tightly coupled system.

The main goal of this year's GSoC was to decouple the project into separate frontend and backend components. For the API server, JSON API specification was followed.The primary things required in an API framework out of the box to fulfill our needs were:

  • Proper relationship definitions
  • Sorting
  • Filtering
  • Pagination

Flask-REST-JSONAPI was chosen as the API framework, it being the only one to fulfill all the above needs. For the API documentation, we used API-blueprint, a powerful high-level API description language for web APIs. The API documentation being one of the most important parts of any API, to make sure that the API documentation remained updated with the backend implementation of the API, Dredd was used as testing framework for the same.

Major Areas Of My Contributions:

Community Bonding:

  • Fix any existing bugs in the old version(the one with backend and frontend tightly coupled) and release a stable version for the same.
  • Refactors to make the project ready to switch to work as only the API server. These refactors also included refactoring the database, so as to adher to a single uniform naming schema.

Phase 1:

  • Flask-REST-JSONAPI, though fulfilling almost all our needs, was missing support for certain desired features like dasherized attributes and some other bugs.I worked on making changes to the API framework itself to achieve the aforementioned features, on the fork maintained for the open event ecosystem.
  • After completing the above and making sure that the framework was ready enough to work with, I worked on setting up the basic layout of the APIs and JWT Authentication.
  • Start work on creating API endpoints for the open event ecosystem.

Phase 2:

  • Continue work on creation of various API endpoints along with their documentation and proper permission.
  • Setup Dredd as a testing framework for the API-Blueprint documentation.

Phase 3:

  • Continue work on creation of various API endpoints along with their documentation, dredd tests and proper permissions.
  • Bug fixes of work done in phase 2 and phase 3 in order to produce a stable end product.
  • Perform multiple refactors to ensure better code quality for easy maintenance of the project in the future.

Code Contributions:

Open Event API Server:

Flask-REST-JSONAPI:

Other:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment