Coder Social home page Coder Social logo

cruise's Introduction

cruise-video.mp4

Cruise

Cruise is a web and mobile app inspired by Uber and Lift, developed as our college project. So if you're up for a ride, let's cruise! ๐Ÿš— ๐Ÿ’จ

Structure

Cruise is entirety of 5 classes that we took this semester:

  • Software Backend Engenieering
  • Software Frontend Engenieering
  • Mobile Application Engenieering
  • Software Tests Engenieering
  • Agile Software Managemant

๐ŸŽ BONUS: For purpose of showing rides on map, we have developed a python script that simulates cars movements.

In the following sections we want to present you some core concepts that we have enjoyed implementing. ๐Ÿ˜‰

Backend layer

Our REST API is developed in Java's Spring Boot framework. This is the first time that we were introduced to the concept of Dependency Injection, and how it is implemented in Spring with the use of Aspect-oriented programming coupled with Annotations. In our app there are 3 user roles: Admin ๐Ÿ‘จโ€๐Ÿ’ผ, Driver ๐Ÿ‘ฎโ€โ™‚๏ธ and Passenger ๐Ÿ™‹โ€โ™€๏ธ, and all of them are authenticated and authorized by JWT. For communication with the database, we took advantage of Spring's JPQL and wrote our custom queries and methods. Finally, for the experience of seamless communication between passenger and driver, while riding together, we implemented web sockets.

Frontend layer

Our client application is developed in the Angular framework, where we learned a lot about JavaScript and TypeScript, client-side rendering, component tree, HTTP communication, and observables. In the pictures below we tried to show you that our Driver and Passenger have real-time communication when riding together, and for achieving such functionality we used STOMP protocol over WebSoket. In the end, we concluded that Angular is good if you want to separate UI logic and template generating, but for some more dynamic UI, frameworks like React may do a better job. ๐Ÿค”

Mobile App

Our mobile application is developed as an Android native app ๐Ÿ“ฑ and published to Google Play Store, so if you want check it out. The main concept that we got to experience in practise is how Android Activity and Fragment Lifecycles โ™ป๏ธ work and what kind of job is suited for each one of them. Also, we implemented chat communication where users receive and send messages in real-time, by making use of basic Java WebSockets and their sessions.

Testing

We wanted to ensure that our core functionality works properly, so we provided unit(JUnit 5), integration (JUnit 5, Jasmin๐ŸŒธ and Karma), and end-to-end (Selenium) tests. We started by testing our Spring Boot repositories then proceeded to mock and stub for our service unit tests and concluded with an integrated mvc test of our controllers. Testing angular components with Jasmin was peace of cake ๐Ÿง and for more production-like circumstances we tested passenger ride requests and different ride states with end-to-end tests.

Scrum

The whole process of our app development was tracked on the project management tool ClickUp ๐Ÿ‘†. Each week we had a meeting for sprint planning with our "Scrum master" where we agreed on goals for the next sprint. Each sprint was evaluated by definition of done and internally reviewed and retrospected by our development team.

cruise's People

Contributors

tamarailic avatar upocek avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

bmijanovic

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.