A Flutter application for Muslims that help them challenge and motivate themselves and their friends to read Azkar in a fun way.

Overview

🔥 تنافسوا

Android Continuous Build and Test Notifications Disabled (for ease of open source contributions)

A Flutter application for Muslims that help them challenge and motivate themselves and their friends to read Azkar in a fun way.

On Play Store & On App Store

Also, take a look at the Backend repository.

Stats

  • 12,200 App Installs.
  • 2543 signed-in users.
  • 1113 users have at least one Azkar challenge.
  • 999 users have at least one Tafseer challenge.
  • 849 users have at least one Reading Quran challenge.
  • 205 users have friends.
logo Screenshot_1621806606 Screenshot_1621806667 Screenshot_1621806734
Screenshot_1622827279 Screenshot_1622827285 Screenshot_1623259103 Screenshot_1623334651

Setting up a Development Environment

Git

To set up a local development environment, you have to do the following :

  • Fork [tanafaso-frontend] (https://github.com/challenge-azkar/tanafaso-frontend)
  • Clone your fork using git clone https://github.com/ /tanafaso-frontend
  • Navigate to your local repository using your cmd/terminal based on your local environment
  • Check that your fork is the origin remote using git remote -v, if it is not then added using git remote add origin https://github.com/ /tanafaso-frontend
  • Add the original project as upstream remote using git remote add upstream https://github.com/challenge-azkar/tanafaso-frontend
  • Congratulations, you can start contribute now, but make sure you create branch for every proposed change you make.

Firebase Notifications Development

Please note that if you don't intend to do changes regarding notifications, you have to comment the line apply plugin: 'com.google.gms.google-services' in file android/app/build.gradle so as to be able to build the android project.

If you intend to do changes regarding notifications, please create a firebase cloud messaging testing project and then move the google-services.json file you will obtain from firebase to android/app directory.

Dependencies

Dependencies for Android

  • Android Studio IDE
  • Flutter SDK
  • Java SDK

Dependencies for IOS

  • Xcode IDE

For more information about dependencies, you can check the flutter documentation.

Code GuideLines

  • Use snake case for file names.
  • The filename should correspond to the name of the primary class in the file.
  • Names of files that contains widgets that take the whole screen should end with the suffix: _screen.dart, for example, signup or login takes up the whole screen for authentication.
  • Names of files that contains widgets that don't take the whole screen should end with the suffix: _widget.dart, for example, invite friends from facebook or twitter is a widget since it is part of the screen widget, but does not take the whole screen.
  • Use Camel Case convention for class and enum names.
  • Name (classes, variables, functions, modules) in a meaningful name which describe its functionality.
  • Make sure that all .dart files are formatted using flutter format command.

Code Structure

Assets (pictures, fonts and certificates) can be found in the assets/ folder.

As you may already know, the cool thing about flutter is that you write code once in dart and then flutter does the hard work of compiling it into native Android and iOS code. You can find the compiled native code in the following directories (Note that you would rarely need to change code in these directories):

All the dart code can be found in the lib/ directory.

  • lib/models/: Contains the definitions of all of the models used in the application (e.g. User, Challenge , etc...) and also defines how every model should be encoded and decoded.
  • lib/net/: Implements the wire between the frontend and the backend (challenge-azkar/tanafas-backend).
  • lib/utils/: Contains classes that provide utilities that will be used throughout the application code.
  • lib/views/: Contains all of the declarations of the user interface.
    • *Screen.dart: Classes that end with the suffix "Screen" are declaring a whole screen that the user will see.
    • *Widget.dart: Classes that end with the suffix "Widget" are declaring a widget that will be part of the user screen.

Contributing

(Optionally) join Tanafaso's discord server to give feedback, propose new features or ask for help.

There are a lot of ways you can contribute to this project. You can filter issues by good first issue label to get started with an issue that is easy to fix.

  • Suggest new features by filing an issue.
  • Report bugs by filing an issue.
  • Add code documentation, so that it is easier for future contributers to ramp-up.
  • Add unit tests (Read The Testing Strategy).
  • Add widget tests (Read The Testing Strategy).
  • Refactor the code to make it more readable, maintainable and scalable.
  • Add pull requests with bug fixes.
  • Add pull requests with new features.

License

The application code is licensed under MIT LICENSE.

Comments
  • google-services.json is missing

    google-services.json is missing

    the following error is returned File google-services.json is missing. The Google Services Plugin cannot function without it.

    If google-services.json file is not uploaded, I would suggest uploading it with black-box as the file contains confidential information like the API key.

    opened by 12mohaned 10
  • Trust a higher certificate than tanafaso server's certificate

    Trust a higher certificate than tanafaso server's certificate

    Tanafaso's server certificate is issued by Sectigo RSA Domain Validation Secure Server CA which, in its turn, issued by USERTrust RSA Certification Authority.

    It's better to trust these CAs instead of specifically tanafaso's certificate so that when tanafaso's certificate is updated (every 1 year), users don't lose connection and don't have to update.

    bug 
    opened by omaryasser 0
  • Migrate to using dart null-safety after all dependencies have migrated

    Migrate to using dart null-safety after all dependencies have migrated

    The dart documentation recommends waiting for all dependencies to get migrated before migrating the code to use dart null-safety.

    Using dart pub outdated --mode=null-safety, we find that only 4 dependencies haven't yet migrated. Let's wait a bit and if they don't migrate we try to get rid of them from our code.

    Package Name             Current  Upgradable  Resolvable  Latest
    
    direct dependencies:
    clear_all_notifications  ✗0.0.2   ✗0.0.2      ✗0.0.2      ✗0.0.2
    flutter_auth_buttons     ✗0.8.0   ✗0.8.0      ✗0.10.0     ✗0.10.0
    flutter_facebook_login   ✗3.0.0   ✗3.0.0      ✗3.0.0      ✗3.0.0
    flutter_statusbarcolor   ✗0.2.3   ✗0.2.3      ✗0.2.3      ✗0.2.3
    
    refactor 
    opened by omaryasser 0
  • Support adding custom reminders

    Support adding custom reminders

    Users want to be able to customize the reminders they get (e.g. customizing the text and time).

    One user asked lately: الا تستطيع تذكيري بقراءة القرآن؟

    enhancement 
    opened by omaryasser 0
  • Add

    Add "Challenge of the day/week" feature

    A challenge that appears to all users and they can see how many people in the world finished it. We can add a setting so that users control whether they want us to send them notifications for this or not.

    This issue corresponds to this issue on the backend side.

    enhancement 
    opened by omaryasser 0
  • Add user performance graphs

    Add user performance graphs

    Either in the profile page or in the main page, we can add a section that shows the user their performance. (e.g. time vs number of finished challenges)

    enhancement 
    opened by omaryasser 0
Noor is a mobile app designed to help in providing a comfortable reading experience for Muslims, by referencing the book "Hisnul Muslim", and some other references.

Noor App | تطبيق نُور Overview Noor is an islamic mobile app, consists of four main pages: home, favorite, alsabha, and settings. The data is structur

Mais Alheraki 78 Dec 22, 2022
A cross platform application written in flutter to help people stick to their routines and achieve their goals

Scheduler Scheduler is a cross platform application written in flutter to help people stick to their routines and achieve their goals. Our service inc

Sidheshwar S 3 Jan 21, 2022
An app that could help doctors better consult their patients in every way possible.

doc_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Kevin Jacob 1 Oct 15, 2021
IIITB Hogwarts is a project which aims at increasing students' interest in creating projects and giving them a platform to share them with others.

IIITB-Hogwarts This is going to be fun project for our college students. Thinking of bringing Harry Potter style group division into college. This is

Kartik Pant 5 Nov 9, 2022
Timy - open source mobile app for groups to communicate and organize themselves. Built with flutter.

Timy app An amazing open-source group messaging app build with flutter. ✨ Main Features Multiple groups (similar to Teams in Slack). Multiple open or

null 1.9k Dec 25, 2022
Flutter ShopApp, you can see products and their prices, categories and their products, search for a product, add to favorite, add to cart, sign in and sign up.

shop_app_2 A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get you started i

Muhammed Rezk Rajab 10 Aug 7, 2022
Microsoft Teams Clone is a Video conference application with a rich integrated chat experience, to connect with friends,family & colleagues. Developed as a redesign of Microsoft Teams during my menteeship at Microsoft Engage 2021

Microsoft Teams Clone by Karanjot Singh About Microsoft Teams Clone is a Video conference application with a rich integrated chat experience, to conne

Karanjot Singh 60 Dec 28, 2022
a software to connect you and your friends and others, are you guys also just tensed over the overuse of social media so we have a solution, appx (name not decided yet)

appx a software to connect you and your friends and others, are you guys also just tensed over the overuse of social media so we have a solution, appx

null 8 Jun 9, 2022
a software to connect you and your friends and others, are you guys also just tensed over the overuse of social media so we have a solution, sociio

APPX A software that will allow you to connect with your friends and family ! Are you guys also tensed over the over-use of social media ?? We have a

null 8 Jun 9, 2022
Fun cat responses - A sample Flutter application.

fun_cat_responses A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you starte

Mais Alheraki 4 Feb 4, 2022
Let me go is a mobile application which drivers can be notified when an Ambulance is near to them in a traffic.

Let Me Go Let Me Go is a mobile application which was build in order to notify vehicle drivers when an ambulance is near to them within a specific dis

Shakya Peiris 1 Dec 19, 2021
This is a bot built with Dart lang which helps you people a simple task and have fun

TeleBot This is a bot built with Dart lang which helps you people a simple task and have fun Command supported /jokes - get a random joke ?? /insult -

Rexford Asamoah 10 Oct 25, 2022
Fun translation app made with flutter 💙

Fun Translation Flutter A Flutter project to try out the UI library equinox with BLoC pattern using Fun translation API. Screenshot Getting Started Th

Venkatesh Prasad 9 Mar 12, 2021
This app developed for making fun with sms. You can send huge sms to other's number by one click. It is behaving like a bomb

SMS Bomber This app developed for making fun with sms. You can send huge sms to other's number by one click. It is behaving like a bomb Getting Starte

Md Abir Ahsan Tahmim 1 Dec 21, 2021
A simple Flutter app to Read and Download eBooks.

?? ?? Flutter eBook App A simple Flutter app to Read and Download books. The Books included in the app are from the Public Domain (Expired Copyright a

Festus Olusegun 1.9k Dec 31, 2022
Latest and easy-to-read news, all in your pocket 📱

Observer-flutter About Flutter app for getting live news in different categories Tools used Inshorts News API v2 This API's documentation Get the App

null 3 Jul 13, 2022
Firebase Login... And Data Created ,Read, Update, Delete

flutter_application_2 A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you st

Jamirul islam (Joy) 2 Nov 30, 2022
A Flutter plugin to read 🔖 metadata of 🎵 media files. Supports Windows, Linux & Android.

flutter_media_metadata A Flutter plugin to read metadata of media files. A part of Harmonoid open source project ?? Install Add in your pubspec.yaml.

Harmonoid 60 Dec 2, 2022
Flutter plugin for notification read & reply

Reflex Flutter plugin for notification read & reply. Compatibility ✅ Android ❌ i

Devs On Flutter 14 Dec 20, 2022