Topic - Lua Client for Strava V3 API
GSoC 2017
Akshaynath R
B.Tech in Computer Science Engineering,
Government Engineering College Thrissur,India
Personal Information
Email Address
Mobile
7012848971
9562620753
Basics
akshaynathr@gmail.com
Blog: akshaynathr.wordpress.com
Github: https://github.com/akshaynathr
I am currently doing my final year in Computer science and engineering (BTech) from India.
CGPA(7.73/10) Government Engineering College Thrissur,Kerala - Calicut University.
My college exam ends in April. After that i am free for next 3 months without any commitments.In April i can find time for GSoC project.(Approximate 2 to 3 hours per day).
Experience
I mostly use python for my works. I have over 5 years of experience in working with python in full stack web development. I am also good in c++ and c(used mostly for programming competitions). Our team participated in ACM ICPC regionals last year in India with a rank of 301.
I started learning Lua a couple of months back for a ML based project using Torch library.I also work in Java, Javascript and bash scripts.
I use flask and django framework for development in web. I am a lover of Vim editor. For bigger projects I use sublime editor.
I started learning Lua a couple of months back for a ML based project using Torch library. I am still learning it and have not developed a full application. Currently i am following the book “Programming in Lua”.
I have worked with startups as intern. I have developed many projects as a team , which are used by hundreds of people.
I have also worked as the head of technical team in our college Techfest, in building the management system which was used by more than 2000 people.
I cofounded a mobile based startup named “Walat” in my 2nd year in college. It was an android application that connects with ATM machine and allows cardless transaction for users.I coded the backend system and also worked with the UI for the mobile application.
Walat was incubated in SV.co (incubator) and we were able to work with top notch entrepreneurs and programmers in building the system.
I have not contributed for open source before.I have open sourced some of my hobby projects in github which include a geo location based social networking system, Pocket app like news feed platform ,Joke sharing platform similar to 9gags etc. All of this can be found in my github profile.
Project
Yes.I am very interested in this project "Lua Client for Strava V3 API". I have developed API client Libraries before in python and have sufficient experience. I think i can work in this project with ease.
I am also interested because the library that i build for Lua can be used by a large number of other developers.
Project Details and Schedule.
Strava.
Strava is the social network for athletes. It’s a global community of millions of runners, cyclists and triathletes, united by the camaraderie of sport. Strava website and mobile apps bring athletes together from all walks of life and inspire them to unlock their potential – both as individuals and as communities.
Strava V3 API
The Strava V3 API is a publicly available interface allowing developers access to the rich Strava dataset. The interface is stable and currently used by the Strava mobile applications.
Language Libraries
Currently the library support is available for the following languages.
Android C# Clojure ColdFusion Elixir Erlang Golang
Haskell iOS Java .Net Node Perl PHP Python Ruby
Rust Scala
Project Proposal
The proposal for this project is to build a strava library in Lua language and thereafter build a demo application using the library. Currently there is no Lua library built for strava. Since Lua is a fast growing language , library in Lua will help a lot of Lua developers to work on Strava applications.
It is decided to build a web application called Race Listing.It lists all the races happening in the world registered with strava. User can also see detailed information about a specific race
Features planned to be implemented.
Strava V3 api provides the following features
Authentication Athletes
Activities Clubs
Gear Routes
Running Races Segments
Segment Efforts Streams
Uploads Webhook Events
Python library
I have used strava’s python library as a starting point reference. It supports only a limited number of features as given below.
Authentication
Athletes
Activities
Because of the time limit of the GSoC program i find that it might not be possible to include all the features provided by the strava V3 Api. So i am planning to include the following set of important features in the Lua library.
Authentication Athletes
Activities Clubs
Gear Routes
Running Races
Details
Authentication-
Strava uses OAuth2 as an authentication protocol. It allows external applications to request authorization to a user’s private data without requiring their Strava username and password. It allows users to grant and revoke API access on a per-application basis and keeps users’ authentication details safe.
All developers need to register their application before getting started. A registered application will be assigned a Client ID and Client SECRET
Athletes -
Athletes are Strava users.All Strava users are considered as athletes. This feature helps to retrieve details about a user.It can also update the details about an athlete.
Activities -
Activities are the base object for Strava runs, rides, swims etc.This feature helps to retrieve activity information related to athletes and friends. It also allows to create , update,retrieve and delete activities.
It supports to retrieve comments, kudos and photos
Club -
Clubs represent groups of athletes on Strava. They can be public or private. It supports group event which are optionally recurring events for club members. This feature helps users to retrieve club details , join and leave club etc
Gear-
Gear represents equipment used during an activity. Retrieve details about a specific item of gear.
Routes -
Routes are manually-created paths made up of sections called legs. Currently it is only possible to create routes using the Routebuilder web interface.Users can list and retrieve routes with this feature.
Running races -
A featured set of running races taking place across the world. Each race has an associated race page with course information, athlete goals, and results.
Other Lua tools/modules/libraries required
Unit testing -Luaunit
Package manager -Luarocks
Web Framework -Sailor
HTTP module -Lua-http
JSON Parsing -Lua-CJSON
Doctest -Lua-doctest
Database -LuaSQL
Project Plan
May 22-May 29 Community Bonding Period
- Get in touch with community
- Get familiar with codebase, standards followed.
- Start working on the library module
- Complete the authentication and authorization functions
May 30 - June 28 Athletes feature (Following Functions are planned to implement)
- Metrics
- Retrieve current athlete
- Retrieve another athlete
-Update current athlete
- Zones
- Totals and stats
- List Athletes
-Tests suite, error analysis for the module.
-Documentation for the module.
Activities feature(Following functions are planned to implemented)
-Create,Retrieve,Delete,Update activities
-Comments (List activity comments)
-Kudos (List activity kudoers)
-Photos( Retrieve Photos)
-List athletes activities
-List related activities
-List friend’s activities
-Tests suite for the module.
-Documentation for the module
Clubs feature(Following functions are planned to implement)
- Retrieve a club
- List club announcements
- List athlete clubs
- List Club members
- List club admins
- List club activities
- Join and Leave club
-Tests suite for the module
-Documentations for the module
June 28 - July 10 Gear feature(Following functions are planned to implement)
-Retrieve gear details
Routes feature(Following functions are planned to implement)
-Retrieve routes
-List routes
July 10 - July 28 Running race feature(Following functions are planned to implement)
-List races
-Retrieve race details
Error handling classes
-Network Error
-Internal Error
-Invalid Response Error
Application based on the library in Lua
-Race Listing
Lists all the races happening in the world registered with strava. User can also see detailed information about a specific race
July 28 - August 20 Finishing Touch
- Fix open issues, bugs
- Documentation
I am planning to complete the following core functionalities within 1 month.
These are the most important functionalities of Strava API.
I plan to complete most of the coding for Lua library within 2 months and give time for testing , documentation and any improvements possible. Also planning to build the demo application based on the library. Please see the project schedule plan for more details.
No. This is my first experience in GSoC.Last year i tried to apply for Mailman project. But did not apply because of some personal reasons.
No.
No.