Flyr - Open-Source Bike-Sharing
Flyr is an open-source attempt to re-implement Lime, Bird or your favourite bike-sharing platform.
Tech Stack
Back-End
- Microservices
- Phoenix Framework
- Apache Kafka
- Redis / PostreSQL
Front-End
- Mithril.js
- bss
NTWoC Project Details
Abstract
Flyr is yet another bike-sharing platform, built for profit learning, understanding and re-implementing the robust engineering of such highly available systems. 'Flyr' stupidly means an open-source commute project. The project team aims to write the microservices from scratch, implement bike-sharing algorithms, do a lot of scalability and security engineering. The final product will 'at least' be able to demonstrate bike-booking, bike-pricing and time-and-route-estimations.
Responsibilities
- Back-End Developer
$$$$
- Front-End Developer
$$
- Algorithms Developer
$$$
- Integration & Testing
$$$
$ strictly indicates the difficulty of a responsibility and commitment ∝ responsibility
Ideas to be implemented
- Phoenix Framework is the best-in-class web-framework that powers the entire application and it uses Elixir* programming language. We need to define routes, construct the data pipeline and connect back-end pieces to front-end.
- Microservices architecture - Distributed i.e. each µservice independently responsible for programmed functions. We need to program every µservice and get them communicating with each other.
- Kafka is the stream-processing middleware to allow load-balancing in handling the requests from the front-end to the microservices. We'll need to implement the producer-consumer model to push-pull messages efficiently.
- Algorithms for bike-booking (finding the nearest bike-stand), bike-pricing (based on time of the day, service etc), route estimations (best route for one to reach the destination) are needed to be implemented after being thoroughly researched.
*Opinions
The Phoenix-Elixir stack is definitely the best-in-class yet learning Erlang / Elixir has a quite high learning curve. This is an issue that needs to be discussed and figured out. If the project contributors aren't at all familiar with this stack, we might need to use Node.js or Django or Flask as the back-end framework.
New ideas
New ideas are always welcome. We'll discuss feasibility of acceptance of new ideas based on status of completion of the project and the contribution curve.
NTWoC Guidelines for this project
Anyone can choose to participate in NTWoC from SRM. It is free, it is open and everyone gets a fair chance.
- No plaigarism. Try to work on your project without stealing credits or code.
- Fellow participants are not competitors. Work alongside them, and build a very good project.
- Try to finish the tasks at hand that are assigned to you or are self-assigned.
- Own the project. If you are putting hard work into it, its definitely your (and other fellow contributors') product to showcase.
Contributing to this Project
Read CONTRIBUTING.md to learn more about making pull requests, and contributing in general. Also, to know more of your commitments, eligibility, takeaways of the project, you should read this post.
Resources
- Basics of Elixir - Elixir School
- Learn Erlang - LYSE, Sample Code
- Understand the fundamentals of Kafka here and here . Experiment with Kafka here and see a sample project
- Read about Microservices at Netflix and SoundCloud
- Learn Mithril.js and bss
Project Maintainers
The project is currently being maintained by :
- Rounak Datta (rounakdatta) - Next Tech Lab