LabLua - Project proposal

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

        

        akshaynathr@gmail.com

        theidealidiot@gmail.com

Mobile

        7012848971

          9562620753

Basics

  1. What is your preferred e-mail address?

                 akshaynathr@gmail.com

       

  1. What is your web page / blog / github?

                Blog:         akshaynathr.wordpress.com

                Github:     https://github.com/akshaynathr

  1. What is your academic background?

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.       

     

  1. What other time commitments, such as school work, another job (GSoC is a full-time activity!), or planned vacations will you have during the period of GSoC?

         

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

  1. What programming languages are you fluent in? Which tools do you normally use for development?

        

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.

  1. Are you familiar with the Lua programming language? Have you developed any projects using Lua?

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”.

  1. Have you developed software in a team environment before? Any projects with actual users?

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.

  1. What kinds of projects/software have you worked on previously? (anything larger than a class project: academic research, internships, freelance, hobby projects, etc.)

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.

  1. Are you (or have you been) involved with any open source development project? If so, briefly describe the project and the scope of your involvement.

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

  1. Did you select a project from our list? If yes, which project did you select? Why did you choose this project? If you are proposing a project, give a description of your proposal, including the expected results.

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

  1. Please provide a schedule with dates and important milestones/deliverables, in two week increments).

        

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

  1. What will be showable one month into the project?

                I am planning to complete the following core functionalities within 1 month.      

  • Authorization and Authentication
  • Athletes Feature
  • Activities Feature
  • Clubs Feature

                These are the most important functionalities of Strava API.

  1. What will be showable two months into the project?

                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.

GSoC

  1. Have you participated as a student in GSoC before? If so, How many times, which year, which project?

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.

  1. Have you applied but were not selected? When?

No.

  1. Did you apply this year to any other organizations?

No.