Giter Club home page Giter Club logo

bookrentapp-chapter3's Introduction

Chapter3 - Book renting app πŸ“š

Flutter/Dart Lint Check Label issues

All Contributors

A book renting app - open a new chapter in your journey πŸ“”

  • An e-commerce application specifically made for renting books.
  • Chapter3 displays collections of top selling books as well as the option to have your taste curated and matched with a book.
  • Customers can filter and select books based on genre, after which placing immediate or deferred orders with the option to cancel.
  • If the customer isn't sure about a purchase they can add the book to a wish list or just leave it in the cart.
  • There is also a backend Flutter application present which is used by administators to maintain the collection and available stock (which is private to customers obviously πŸ˜€)

This application was built in Flutter using Dart. Firebase paired with Firestore as a noSQL database are the backend of Chapter3. Functionality has been finalized, albeit with minor issues. Refactoring and UI work is also needed on this project besides the bug fixes.

Description of the codebase

The code is well arranged into sub-directories which are -

  • Screens (all the screens of the app, which are a lot)
  • QuizScreens (the app has a quiz, which suggests you 1 or more books based on your response, this feature is relatively new and might have a lot of bugs)
  • Utility (utility files (only 1) meant for google sign in)
  • model (all the data models)
  • provider (all the providers used for state management)
  • services (all the utility functions/services corresponding to different data models)

App Screens

Setting up the project in your local environmentπŸ’»

  1. Make sure Flutter is installed in your system.
  2. Fork this repository.
  3. Clone the forked repository:
git clone https://github.com/<your github username>/BookRentApp-Chapter3
  1. Add a remote to the upstream repository:
# typing the command below should show you only 1 remote named origin with the URL of your forked repository
git remote -v
# adding a remote for the upstream repository
git remote add upstream https://github.com/Saransh-cpp/BookRentApp-Chapter3
  1. Open the repository in Android Studio or in VS Code.
  2. Run the app.
  3. Create a new issue if you face any difficulties (after browsing through StackOverflow on your own) and someone will help you 😁

Contributing to the project πŸ› 

Now that you have the project set up in your local environment, follow the steps below to contribute!

  1. Take up an already existing issue or create a new (but a valid) one.
  2. Pull the latest code in.
# make sure you are on the master branch
git pull upstream master
  1. Create a new branch.
# replace xx with the issue number you are working on and give your branch a good name
git checkout -b issue-xx-a-good-name
  1. Make your changes!
  2. Once done with a particular feature, bug fix, or a documentation part, add your changes to the staging area.
git add .
  1. Review and commit your changes.
# the message should be in present tense, for ex - "Added feature x" is not ideal but "Add feature X" is
git commit -m "a meaningful message"
  1. Push your changes!
git push --set-upstream origin <your-branch-name>
  1. Create a pull request from GitHub and wait for the review!

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Saransh

πŸ’» πŸ–‹ πŸ“– 🎨 πŸ€” 🚧 πŸ§‘β€πŸ« πŸ“† πŸ‘€ πŸ’¬

Anthony De la Torre

πŸ–‹ πŸ“– 🎨

Harshit Seksaria

πŸ’» πŸ“– πŸ› πŸ“¦

TESLA2402

πŸ’»

Vaibhav-Chopra-GT

πŸ’» πŸš‡

Pranav Pratap Singh

πŸ€” πŸ› πŸ’» 🎨

Atharv Bhadange

πŸ’»

aman2kumar

πŸ“–

mortal-ghost

πŸ› πŸ’»

Pushkar Verma

πŸ“–

raviyadav17

πŸ’» 🎨

Dhrubojeet Haldar

πŸ’»

Akshat Jain

πŸ“–

HARSH RAO

πŸ“–

Ramesh M S

πŸ‘€ πŸ§‘β€πŸ«

Arnav Sharma

πŸ§‘β€πŸ«

navee-ramesh

πŸ§‘β€πŸ«

This project follows the all-contributors specification. Contributions of any kind welcome!

bookrentapp-chapter3's People

Contributors

akshatjain1004 avatar allcontributors[bot] avatar aman2kumar avatar atharv-bhadange avatar hurshh avatar letsintegreat avatar mortal-ghost avatar noman2002 avatar pranav108 avatar pushkar2112 avatar rajoriaakash avatar raviyadav17 avatar saransh-cpp avatar starkl7 avatar tesla2402 avatar vaibhav-chopra-gt avatar youspeakcubic avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

bookrentapp-chapter3's Issues

Revamp the orders screen

Description

Right now the screen is completely blank whenever there are no orders, and still looks empty when a user has some orders.

Relevant files

  • orders.dart

Screenshot

Overflow of widgets in landscape mode

Description

The home screen and login screen has overflowing widgets in landscape mode. Other screens may be affected too.
Login screen only has overflow when typing the email and password.

Relevant files

lib/Screens/Home.dart
lib/Screens/LoginPage.dart

Screenshot

Screenshot_1639317957
Screenshot_1639318001

need improvement in deprecated syntax

Throughout the code we can see many deprecated widget (e.g. RaisedButton, showSnackBar etc .) which may cause unexpected behavior in future, so this syntax need to be replaced with their latest alternative.

Remove unnecessary imports

Description

There are a lot of unnecessary imports in almost all of the files, they should be removed.

Contact us screen gives an error / warning

Description

======== Exception caught by widgets library =======================================================
The following assertion was thrown while applying parent data.:
Incorrect use of ParentDataWidget.

The ParentDataWidget Flexible(flex: 2) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type ParentData.

Usually, this means that the Flexible widget has the wrong ancestor RenderObjectWidget. Typically, Flexible widgets are placed directly inside Flex widgets.
The offending Flexible is currently placed inside a RepaintBoundary widget.

The ownership chain for the RenderObject that received the incompatible parent data was:
  Column ← Flexible ← RepaintBoundary ← IndexedSemantics ← NotificationListener<KeepAliveNotification> ← KeepAlive ← AutomaticKeepAlive ← KeyedSubtree ← SliverList ← MediaQuery ← β‹―
When the exception was thrown, this was the stack: 
#0      RenderObjectElement._updateParentData.<anonymous closure> (package:flutter/src/widgets/framework.dart:5761:11)
#1      RenderObjectElement._updateParentData (package:flutter/src/widgets/framework.dart:5778:6)
#2      RenderObjectElement.attachRenderObject (package:flutter/src/widgets/framework.dart:5800:7)
#3      RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5470:5)
#4      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6268:11)
...     Normal element mounting (39 frames)
#43     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3631:14)
#44     Element.updateChild (package:flutter/src/widgets/framework.dart:3383:18)
#45     SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1243:37)
#46     SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1228:20)
#47     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2531:19)
#48     SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1221:12)
#49     RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:349:23)
#50     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1962:59)
#51     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:910:15)
#52     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1962:14)
#53     RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:338:5)
#54     RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:484:5)
#55     RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:239:19)
#56     RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:281:12)
#57     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#58     RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:137:12)
#59     RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:371:11)
#60     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#61     RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:510:13)
#62     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1580:12)
#63     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1489:20)
#64     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#65     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#66     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#67     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#68     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#69     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#70     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#71     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#72     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#73     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#74     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#75     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#76     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#77     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#78     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#79     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#80     RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:545:11)
#81     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#82     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#83     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#84     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#85     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#86     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12)
#87     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1005:7)
#88     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
#89     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403:14)
#90     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#91     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#92     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#93     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#94     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1376:11)
#95     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#96     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#97     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#98     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#99     RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#100    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#101    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#102    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#103    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#104    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#105    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#106    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#107    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#108    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#109    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#110    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#111    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#112    RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3426:14)
#113    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#114    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#115    RenderObject.layout (package:flutter/src/rendering/object.dart:1852:7)
#116    _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:751:15)
#117    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1707:7)
#118    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:879:18)
#119    RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:497:19)
#120    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:883:13)
#121    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#122    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1145:15)
#123    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1082:9)
#124    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5)
#128    _invoke (dart:ui/hooks.dart:150:10)
#129    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
#130    _drawFrame (dart:ui/hooks.dart:114:31)
(elided 3 frames from dart:async)
====================================================================================================

Relevant files

Contact.dart

Run the app in iOS?

Description

I don't have the resources to run the app in iOS but if someone can then it would be nice to check if everything is working smoothly, and if not, feel free to open up new issues:)

Revamp the profile screen

Description

Revamp the screen, the UI is completely up to you (tho it will require my approval). This would also require some refactoring and some fixing with the updation logic (might turn this into a bonus issue).

Relevant files

  • Profile.dart

Screenshot

deprecated `firebase_admob` package

Description

In this app we have implemented firebase_admob package for showing mobile ads on myCart screen, which is deprecated now, instead we should use google_mobile_ads package.

Relevant files

lib/Screens/YourOrders.dart

Screenshot

image

References

reference

Weird app behaviour

Description

The app is behaving very weirdly in different situations. One that I encountered -

  1. Add a book to the cart (notice how the cart icon disappears)
  2. Go to the cart screen (notice how it loads for a long time) and place an order/delete the items
  3. Go back and open any books (It won't open)
  4. The app is stuck in a weird place where nothing is working

The bug is somewhere between the commit 3a3c330 and the latest commit for sure.

Error while building the project.

We cannot build and run the project for android using the latest SDK as it uses old versions for some dependencies, e.g. win32.

Screenshot of the error message:

Add support for web.

With flutter, we can build apps for android, iOS, and web from a single code base. But, right now the project is not configured for web.

I think adding web support would be good for desktop users.

deprecation of current flutter version

Description

I have upgraded my flutter version for my android studio few days ago now when I'm trying to run the code of this app then I'm getting a warning which suggest me to migrate the project to it's updated flutter version.

Relevant files

MainActivity.java/kt
android/app/src/main/AndroidManifest.xml
Drawable
styles.xml

Screenshot

screenshot

References

more_info

Revamp `AllBooks` screen

Description

Right now the screen looks very dull. I'd like to keep the overall structure of the screen and the cards, but the rest of everything can be updated.

Mentors, drop you GitHub ID

@ SWoC mentors, please drop your GitHub username below -

  • I'll add you as a collaborator
  • The participants will know who the mentors are

Please don't merge any pull requests, I'd like to do that on my own. You can review and approve a pull request (and help the participants in every other possible way).

Build the apk in CI pipeline

Description

We don't have any tests right now, but we can build the apk to check if the app is doing well or not. Add another step in the workflow to build the apk.

Relevant files

Screenshot

Please attach screenshots for the same, if applicable

References

steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
  with:
    distribution: 'zulu'
    java-version: '11'
- uses: subosito/flutter-action@v1
  with:
    channel: 'stable' # or: 'beta', 'dev' or 'master'
- run: flutter pub get
- run: flutter test
- run: flutter build apk

Create the `About` Screen

Description

Create the About screen from scratch -

  • Come up with a short description of the app.
  • Make the screen visually appealing (you can use undraw's illustrations)
  • Make an Author section and add me (GitHub profile).
  • Make a Contributors section, and show all the contributors in a grid view using GitHub's API.

Relevant file

Reference

Revamp the Shopping Cart screen

Description

The shopping Cart screen looks very dull and the checkout button does not match the aesthetic of the app.
Also, the Your cart is empty pop-up looks plain

Screenshot

Error on register screen

Description

The register screen throws an error anytime it is opened.

Relevant files

lib/Screens/Register.dart

Screenshot

Screenshot_1639336563

Issues with signing in and signing out

Description

On signing in with incorrect credentials. the app does not display a snackbar about the failed sign in.
On signing out, the login screen is not pushed to the screen, instead it just stays signed in until we restart the app.

Relevant files

lib/Screens/LoginPage.dart
lib/Screens/Home.dart
Could be many others

Revamp the `YourOrders` screen

Description

The screen looks very bland. Some suggestions -

  • Update the button
  • Show something if the cart is empty
  • Update the app bar
  • Change the background color
  • Check how the item cards are displayed
  • Check how the alert message on ordering something is displayed
  • Background color

You might also face some issues with the written code, hence, I am putting this as a moderate level issue.

Relevant files

Reference

Adding functionality for contactUs section

Description

We have a Contact us section but it doesn't do anything yet. Adding some non-void functionality to this section will enhance the app.

Relevant files

lib/Screens/Contact.dart

Screenshot

NotApplicable

References

NotApplicable

Can't see the content of HomeScreen

For many of us we can't see the content of HomeScreen due to error with SingleChildScrollView (because it is encapsulating AppBar, Drawer, Body etc.).
Though the app is running even with this issue.
As a result we may see some error like this:
renderScreenError

Revamp the favorites screen

Description

Right now the screen is completely blank whenever there are no favorites, and still looks empty when a user has favorite books.

Relevant files

  • Favourites.dart

Screenshot

Revamp the drawer

Description

The drawer right now looks ugly, create a new design and implement it in the app. You might also need to create a new widget for the tiles and refactor some code (hence putting this issue as a hard one).

Screenshot

Logging in with Invalid Credentials

The app lets us login with invalid email and password. We can put any non-empty email like '123' and any password with more than 6 characters and sign in to the app. But the home screen and cart screen will display an error as shown ->

Overflow of widgets on Home screen

Description

Some widgets on the home screen overflow by some pixels. This occurs on 1080p and 720p screen resolution devices and does not occur on 1440p devices (tested on only these resolutions).

Relevant files

lib/Screens/Home.dart

Screenshot

Screenshot_1638961295

Create a new app in firebase before uploading the app on play store

As the package name of your android app in the firebase console is not editable, I think the best course of action would be to delete the current app from the console and add a new android app with the correct package name, then download the auto-generated google-services.json and replace it with the current one.

After some research, I found this, here an employee of firebase is also suggesting the same. Also, if we scroll a bit, we can find users who had problems after editing google-service.json manually.

Originally posted by @letsintegreat in #114 (comment)

Add Google Sign In

Description

I think the Google Sign In has been implemented but has not been added to the frontend. Add it to the Register and Log In screen with all the necessary data. Adding this as hard as this will require passing the data in between files or initializing dummy data.

Relevant files

Create an issue template

Description

Create an issue template. The template would look something like this -

Description

Relevant files

Screenshot

References

Create a pull request template

Should look something like -

Program -
Fixes

Description

Type of change

Screenshot

Checklist

  • The app builds properly
  • Code is commented in difficult to understand areas
  • Code is formatted well

Make the UI of `Register` screen uniform

Description

Right now the register screen looks really bad (well, the whole app looks really bad), for starters, we can try making the UI on a single screen a bit uniform.

  • Add white background in all the fields
  • Create a similar eye icon in confirm password field

Relevant screens

Register.dart

Screenshot

Note - You might also would need to refactor the code by creating a new widget (hence I am keeping this a moderate level issue)

Revamp the single product screen

Description

The screen where a single product is displayed (a book) looks ugly, I'll see if I can update the data, but update the UI and make it consistent throughout the screen. You might need to deep dive into the code and make sure that nothing breaks, hence, putting this as a moderate issue.

Relevant file

Screenshot

Lint all the files

Description

Right now the file names and the code is not linted properly (or does not follow the convention naming etc.). Lint all the files.

Multiple contributors

This issue can have multiple PRs but each PR should lint at least 3 files.

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.