تنافسوا

一个面向穆斯林的 Flutter 应用程序,帮助他们以有趣的方式挑战和激励自己以及他们的朋友诵读 Azkar。

在 Play 商店 & 在 App 商店

另外,请查看 后端 仓库。

统计数据

  • 12,200 次应用安装。
  • 2543 已登录用户。
  • 1113 用户至少有一个 Azkar 挑战。
  • 999 用户至少有一个 Tafseer 挑战。
  • 849 用户至少有一个阅读古兰经挑战。
  • 205 用户有朋友。
logo Screenshot_1621806606 Screenshot_1621806667 Screenshot_1621806734
Screenshot_1622827279 Screenshot_1622827285 Screenshot_1623259103 Screenshot_1623334651

设置开发环境

Git

要设置本地开发环境,您需要执行以下操作:

  • Fork [tanafaso-frontend] (https://github.com/challenge-azkar/tanafaso-frontend)
  • 使用 git clone https://github.com/<your-github-username>/tanafaso-frontend 克隆您的 fork
  • 根据您的本地环境,使用 cmd/终端导航到您的本地存储库
  • 使用 git remote -v 检查您的 fork 是否为 origin 远程,如果不是,则使用 git remote add origin https://github.com/<your-github-username>/tanafaso-frontend 添加
  • 使用 git remote add upstream https://github.com/challenge-azkar/tanafaso-frontend 将原始项目添加为 upstream 远程
  • 恭喜,您现在可以开始贡献了,但请确保为您提出的每个更改创建一个分支。

Firebase 通知开发

请注意,如果您无意更改通知相关内容,则必须在文件 android/app/build.gradle 中注释掉 apply plugin: 'com.google.gms.google-services' 这一行,以便能够构建 Android 项目。

如果您打算更改通知相关内容,请创建一个 firebase cloud messaging 测试项目,然后将您从 firebase 获取的 google-services.json 文件移动到 android/app 目录。

依赖项

Android 依赖项

  • Android Studio IDE
  • Flutter SDK
  • Java SDK

IOS 依赖项

  • Xcode IDE

有关依赖项的更多信息,您可以查看 Flutter 文档

代码规范

  • 对文件名使用 snake_case
  • 文件名应对应文件中主类的名称。
  • 包含整个屏幕的 widget 的文件名应以后缀:_screen.dart 结尾,例如,用于身份验证的 signup 或 login 会占据整个屏幕。
  • 包含不占据整个屏幕的 widget 的文件名应以后缀:_widget.dart 结尾,例如,从 Facebook 或 Twitter 邀请朋友是一个 widget,因为它是一个屏幕 widget 的一部分,但它不占据整个屏幕。
  • 对类名和枚举名使用 驼峰命名法
  • 对名称(类、变量、函数、模块)使用有意义的名称,以描述其功能。
  • 确保所有 .dart 文件都使用 flutter format 命令进行格式化。

代码结构

资源文件(图片、字体和证书)可以在 assets/ 文件夹中找到。

正如您可能已经知道的,Flutter 的厉害之处在于您只需编写一次 Dart 代码,
然后 Flutter 会努力将其编译成本地 Android 和 iOS 代码。您可以在
以下目录中找到编译后的本地代码(请注意,您很少需要
更改这些
目录中的代码)

所有 dart 代码都可以在 lib/ 目录中找到。

  • lib/models/:包含应用程序中使用的所有模型的定义(例如,User、Challenge
    等),还定义了每个模型应如何进行编码和解码。
  • lib/net/:实现前端与后端(challenge-azkar/tanafaso-backend)之间的连接。
  • lib/utils/:包含在整个应用程序代码中使用的工具类。
  • lib/views/:包含所有用户界面的声明。
    • *Screen.dart:以“Screen”后缀结尾的类声明了用户将看到的整个屏幕。
      用户将看到的。
    • *Widget.dart:以“Widget”后缀结尾的类声明了一个将成为用户屏幕一部分的 widget。
      屏幕的一部分。

贡献

(可选)加入 Tanafaso 的 Discord 服务器 以提供反馈、提出新功能或寻求帮助。

有很多方法可以为这个项目做出贡献。您可以按 good first issue 标签过滤 issues,以开始处理一个易于修复的问题。

  • 通过提交 issue 来建议新功能。
  • 通过提交 issue 来报告 bug。
  • 添加代码文档,以便未来的贡献者更容易上手。
  • 添加单元测试(请阅读 测试策略)。
  • 添加 widget 测试(请阅读 测试策略)。
  • 重构代码,使其更具可读性、可维护性和可扩展性。
  • 添加包含 bug 修复的 pull requests。
  • 添加包含新功能的 pull requests。

许可证

应用程序代码根据 MIT 许可证 获得许可。

GitHub

https://github.com/tanafaso/tanafaso-frontend