项目作者: devclub-iitd

项目描述 :
ShareACab: App for sharing cab with college students
高级语言: Dart
项目地址: git://github.com/devclub-iitd/ShareACab.git
创建时间: 2020-05-10T16:42:52Z
项目社区:https://github.com/devclub-iitd/ShareACab

开源协议:MIT License

下载


ShareACab

An app for sharing cab with college students

Maintenance
issues
license
PRs Welcome

Description

Usually, after exams or when the mid-sem break begins, there is a large surge of people going back to their respective hometown by air/railways. This journey involves an initial travel where the person takes a cab to the IGI Airport or the New Delhi Railway station. A lot of times, people are forced to travel solo, if there isn’t anyone he/she knows traveling at a similar time. Also, this leads to shortage of cabs nearby and increase in waiting time. Had there been a student of IIT-D with whom the cab could have been shared, the fares would also be split and the waiting time will also reduce. Another thing is that girls prefer not to travel alone in Cabs in Delhi, so that problem will also be solved by this app.

App Preview

Directory Layout

  1. ShareACab
  2. +--- README, LICENSE // basic information
  3. +--- assets // contains all assets like images for project
  4. |
  5. +--- lib
  6. +--- models
  7. +--- alltrips.dart // (WILL BE REMOVED LATER)
  8. +--- requestdetails.dart // Request Model
  9. +--- user.dart // User Model
  10. +--- screens
  11. +--- authenticate
  12. +--- authenticate.dart // for toggling between sign in and register
  13. +--- forgotpass.dart // forgot password screen
  14. +--- register.dart // register user screen
  15. +--- sign_in.dart // sign in screen
  16. +--- verified_email_check.dart // check if user verified screen
  17. +--- chatscreen // handles the chating section
  18. +--- chat_database
  19. +--- chatservices.dart
  20. +--- database.dart
  21. +--- chat_widgets
  22. +--- chat_bubbles.dart
  23. +--- chat_tile.dart
  24. +--- chat_users_list.dart
  25. +--- message.dart
  26. +--- new_message.dart
  27. +--- chat_screen.dart
  28. +--- groupdetailscreen // handles the screen when user clicks on a card on dashboard
  29. +--- appbar.dart // group details page appbar
  30. +--- ended_group_details.dart // group details page for ended rides
  31. +--- groupdetails.dart // group details page
  32. +--- groupscreen // handles the screen when user is in a cab/group
  33. +--- group.dart // shows the current group details
  34. +--- editgroup.dart // edit group details page
  35. +--- notifications // handles notification screen
  36. +--- services
  37. +--- database.dart // handles database for notifications
  38. +--- notifservice.dart // service file for calling database functions relevant to notifications
  39. +--- widgets
  40. +--- notifslist.dart // displays list of notifications
  41. +--- notiftile.dart // UI for notification tile
  42. +--- notifications.dart // notification page
  43. +--- profile
  44. +--- userprofile.dart // handles user profile screen
  45. +--- requests // handles the requests of users screen
  46. +--- myrequests.dart // displays Ended rides
  47. +--- createtrip.dart // the screen for creating a new group
  48. +--- dashboard.dart // handles dashboard
  49. +--- edituserdetails.dart // handles edit user details page
  50. +--- filter.dart // handles filter service
  51. +--- help.dart // handles help/FAQ screen
  52. +--- messages.dart // messages screen
  53. +--- rootscreen.dart // handles navigation services
  54. +--- settings.dart // settings page to set dark mode
  55. +--- tripslist.dart // displays the list of trips on dashboard
  56. +--- wrapper.dart // handles the routing when a user is logged in
  57. +--- services
  58. +--- auth.dart // handles all authentication related services
  59. +--- database.dart // the PRIMARY database service which handles everything
  60. +--- trips.dart // for calling a function purposes
  61. +--- shared
  62. +--- loading.dart // the loading screen
  63. +--- main.dart
  64. |
  65. +--- functions // Firebase Functions Folder: automatically run backend code in response to events
  66. | // triggered by Firebase features and HTTPS requests
  67. |
  68. +--- etc

What’s working:

  • [x] Authentication

    • Sign up/Sign in using email and password. The user also needs to verify their email ID before logging in. Also given an option to reset password.
    • Frontend/Backend by @kshitijalwadhi
  • [x] Curved Navbar

    • Curved Navbar to navigate between various screens
    • UI and dummy screens implemented by @Deepanshu-Rohilla
    • Logic by @kshitijalwadhi
  • [x] Dashboard

    • Displaying the list of ongoing cabs/groups here. If the user taps on a card, the user is navigated to a screen which shows an overview of the group. On the group page, if the person clicks on join now, he’s added to that group and is navigated to a screen where the details of the group are shown. There is also a floating action button which can be used in two ways, if the person is currently not in a group, by clicking the button he can create a new one, whereas if the user is already in a group, the button navigates him/her to the group details page. There is also an option to leave the group in the group details page. The admin of the group can also edit the details of the group.
    • UI by @Ishaan21
    • Backend/Logic by @kshitijalwadhi
  • [x] Ended Rides

    • Displays completed rides of the user.
    • The user can tap on the cards to view the details.
    • Implemented by @kshitijalwadhi
  • [x] Settings

    • Currently has the ability to switch to dark mode and also report bugs.
    • Implemented by @kshitijalwadhi
  • [x] Chatting Functionality

    • Whenever a group is created, a chatbox is also created where the members of that group can chat amongst each other.
    • UI by @Ishaan21 and @Deepanshu-Rohilla
    • Backend/logic by @Ishaan21
  • [x] Profile Page

  • [x] Filter Page

    • Rides on the dashboard can be filtered according to destination and privacy setting.
  • [x] Request only groups

    • There is also a facility to create private groups which require an invite to be sent to the admin of the group and the admin needs to accept that invitation to allow the user to get in the group. This invite will be present in the Notifications screen and can be accepted/declined from there itself.

Bugs:

  • You tell us.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Check CONTRIBUTING.md for contribution rules

License

MIT