yagnik2411 / Quiz-Genius

Introducing Quiz Genius: The ultimate Flutter quiz app with Firebase authentication, dynamic quizzes, real-time feedback, and personalized profiles. Join now to test your knowledge, track progress, and challenge friends. Clone, customize, and conquer quizzes. Start your intellectual adventure today!
https://play.google.com/store/apps/details?id=com.yagnik.quiz_genius
14 stars 25 forks source link

Enhancements Needed for Email Validation, Login Persistence, Profile Screen, and App Performance #45

Open Abhi-0987 opened 4 days ago

Abhi-0987 commented 4 days ago

Hello @yagnik2411!

I hope you're doing well. I’ve gone through the app's issues and noticed that most of them have been addressed, which is great! However, there are still a few things that need attention, and I would like to contribute to these issues.

  1. Email Validation:

    • Currently, all emails are allowed for sign-up, including disposable and non-existent ones. As @MaRyamFatima1120 mentioned, we need to implement features like "forgot password," but this is affected by the current email validation issue, which rely on valid emails. I tried to signup with the email "yogi@invalidmail.com" and it still considered it.
    • We can handle this in two ways:
      • One option is to use an API to verify if the email is valid and non-disposable, though this may incur costs.
      • Another approach is to restrict sign-ups to certain domains (e.g., @gmail.com, @outlook.com) to ensure email quality.
    • Alternatively, we can offer users the ability to "Use as Guest" by enabling anonymous login. This way, users can explore the app without needing to register with an email. With this option, disposable emails would no longer be a significant concern since guest users wouldn't require a persistent account until they choose to sign up.
  2. Login Info Not Saved Locally:

    • The app isn’t saving the user’s login info locally, requiring users to log in each time the app is reopened. This shouldn’t happen; the session should persist, ensuring users remain logged in even after the app is closed. Also after a successful login, the app should always redirect to the home screen instead of staying on the login screen when reopened.
  3. Profile Screen Improvements:

    • The profile screen could provide more user-friendly options. It should include an option for users to edit their username.
    • It would also be helpful to display additional details, such as the number of quizzes the user has participated in.
  4. Improve App Performance:

    • The app is currently using the google_fonts package, which fetches fonts from the backend on every load. Instead, we should store the font in the app’s assets and load it locally, which will improve the app’s performance.

I look forward to your thoughts on these points and any guidance you can provide on how I can best contribute. Thank you! 👍

MaRyamFatima1120 commented 4 days ago

Hi @Abhi-0987,

Thank you for your insightful feedback! I really like your ideas, especially about email validation and the guest login feature.

I had also considered using SharedPreferences to save login info locally, so it’s great to see we're on the same page. However, I’m currently focused on implementing other features in the app, so I won’t be able to collaborate on these changes right now.

Would you be interested in working on those suggestions? I appreciate your understanding and will keep your ideas in mind for future updates!

Abhi-0987 commented 4 days ago

Hi @MaRyamFatima1120

I’m glad to hear that you liked the ideas, and I’m definitely interested in working on these suggestions. I am just waiting for @yagnik2411 to approve and assign me this issue, so that I can start working on them.

yagnik2411 commented 3 days ago

@Abhi-0987 I assigned you this. but if you need help of @MaRyamFatima1120 , you can tell me so include her also.

Abhi-0987 commented 3 days ago

@Abhi-0987 I assigned you this. but if you need help of @MaRyamFatima1120 , you can tell me so include her also.

Thank you for assigning this to me! I’ll get started on it right away. However, we should have a quick discussion on the email validation part to decide what exactly we should implement, whether to go with domain restrictions, API verification, or another approach.

Looking forward to your thoughts!

MaRyamFatima1120 commented 2 days ago

Hi Abhi,

I’ve been thinking about the email validation options, and I believe the combination of Custom Validation Logic and the Guest Login Feature is a good approach. It balances cost-effectiveness with flexibility, allowing users to explore the app without immediate email verification.

I'm happy with this solution, but feel free to take a look and decide what's best overall. Let me know if you need anything from my side.

MaRyamFatima1120 commented 2 days ago

One more thing I wanted to discuss—if we go the API route for email validation, it would likely incur costs and may restrict us based on usage limits or pricing. On the other hand, the custom validation approach gives us more flexibility without those restrictions, even though it’s not as thorough as an API.

What do you think? Should we stick with custom validation and guest login, or do you feel the API is worth the added cost?

Looking forward to hearing your thoughts!

Abhi-0987 commented 2 days ago

What do you think? Should we stick with custom validation and guest login, or do you feel the API is worth the added cost?

Hi @MaRyamFatima1120,

I completely agree that custom validation and guest login are solid solutions for the project at this stage, even I thought to implement only that. I suggested the API approach as an additional option to consider for the future. The current solution works best for now, and we could explore API validation later when the app scales or becomes monetized, ensuring stronger validation when it's needed.

Abhi-0987 commented 2 days ago

Hi @yagnik2411, I’d like to discuss some issues with you when you have a moment. Also, please ensure that anonymous login is enabled in Firebase, as it’s necessary for Guest Login feature. Thank you!

MaRyamFatima1120 commented 2 days ago

@Abhi-0987, Yeah, You are absolutely right. It's great idea.

yagnik2411 commented 2 days ago

Work on custom email domain restiaction and guest account.

Abhi-0987 commented 2 days ago

Okay @yagnik2411 , I’ll do that! I just need you to enable the anonymous login in Firebase Authentication. The code is all set; I just want to check it out.

Also, about performance improvements: I noticed that a lot of the dependencies aren’t up to date, and I’m running into issues building the APK because of the lower Kotlin version plugins. It looks like the app is using some older versions of Flutter. Just wanted to ask if we can update the necessary versions to boost the app’s performance.

Let me know what you think!

yagnik2411 commented 2 days ago

make everything the latest version according to the flutter version.

yagnik2411 commented 2 days ago

@Abhi-0987 Dm on Linked, In about what you want to do in firebase.?