[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9255":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},9255,"timy-messenger","janoodleFTW\u002Ftimy-messenger","janoodleFTW","Timy - open source mobile app for groups to communicate and organize themselves. Built with flutter.","",null,"Dart",2108,445,63,13,0,1,29.95,"Apache License 2.0",false,"master",[23,24,25,26,27,28,29,30,31],"android","app","firebase","flutter","ios","kotlin","messaging","messenger","swift","2026-06-12 02:02:04","# Timy app\n\n[![Build Status](https:\u002F\u002Fapp.bitrise.io\u002Fapp\u002F1777d1ca81df02fb\u002Fstatus.svg?token=JR4pw9Z3dElWNrDmy3ImLA&branch=master)](https:\u002F\u002Fapp.bitrise.io\u002Fapp\u002F1777d1ca81df02fb)\n\nAn amazing open-source group messaging app build with flutter. ✨\n\n# Main Features\n\n- Multiple groups (similar to Teams in Slack).\n- Multiple *open or private* channels within groups.\n- Sharing of photos and photo collections.\n- React to messages with emoji. \n- Push-notifications for the message and channel updates.\n- Specific channels for events (e.g. containing date, venue).\n- Editing of event channels.\n- Calendar for all upcoming and past events aggregated over all groups and channels.\n- English and German localization.\n- RSVP for events.\n\n\n![screenshots](.\u002Ftimy.png)\n\n\n\n\n\n# Project Structure\n\nThis is a Flutter mobile app targeting Android and iOS.\n\nThe code for the Flutter app is contained in the folder `lib` and the\ndifferent native apps are in `android` and `ios`. Extra project assets are in\n`assets` and `fonts`.\n\nAs well, this repo hosts a series of Firebase config files and cloud functions.\n\nThe documentation for Firebase part is inside the `firebase` folder.\n\n\n# Prerequisites & Getting Started\n\n## Client \n\nTo build and run the mobile apps you’ll need to install [Flutter](https:\u002F\u002Fflutter.dev) and its dependencies. To verify your installation run in the project’s root directory:**‌**\n\n```\n$ flutter doctor\n```\n\nThe app is optimised for Android and iOS phones in portrait mode.\n\n**IMPORTANT:** The project only supports Flutter version 1.10.5, you will have to change your configuration to it.\nWe cannot make sure that other Flutter versions will work.\n\n```\n$ flutter version 1.10.5\n```\n\n**Note:** Additionally you’ll need to setup the backend and add the GoogleService-Info of your Firebase app to your clients as described below.\n\n## Backend (Firebase)\n\nThe backend is build using Firebase’s `node.js` SDK. All files are provided in the `firebase` folder. To deploy the code create an app and install the firebase CLI (See steps 1 & 2 in [Getting started](https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Ffunctions\u002Fget-started)).\n\n*Note: The following steps assume you’re using Firebases’ free `Spark Plan`. Therefore we’re performing the configuration manually.*\n\n### B1. Setup sign-in method & adding users\n\nAn initial sign-in method needs to be configured.\n\n- Select your project in [console.firebase.google.com](https:\u002F\u002Fconsole.firebase.google.com). \n- Navigate to `Authentication` \n- Select `Sign-in methods` and activate `Email \u002F Password`.\n\n**Adding a user**\n\nCurrently, users need to be added *manually*.  \n\n- In firebase navigate to `Authentication` and select `Users`. \n- Then `Add user`. \n\nPlease copy the `User-UID` of the created user. We’ll need to add this ID to a group in the next step.\n\n*Note: You’ll need to have at least one user configured to use the app.*\n\n### B2. Configure firebase app\n\nNext, you’ll need to configure your firebase app for Flutter as described in [Add Firebase to an App \u002F Flutter](https:\u002F\u002Ffirebase.google.com\u002Fdocs\u002Fflutter\u002Fsetup)\n\n**iOS**\n\n- Enter iOS-Bundle-ID: `de.janoodle.circlesApp.debug`\n- Download and rename `GoogleService-Info.plist` to  `GoogleService-Info-Dev.plist`.\n- Copy file to `ios\u002FRunner\u002FFirebase`.\n\n*NOTE: If you’re building for release you’ll additionally need to add a GoogleService-Info-Prod.plist pointing to your production Firebase app.*\n\n**Android**\n\nFollow the instructions in `android\u002FREADME.md`.\n\n### B3. Create and setup database\nIn the firebase console select `Database` under `Develop`  and create a Cloud Firestore Database. Setup database in `test mode` if you don't want to care about access permissions now.\n\nAt this point, **you need to run and perform login once** on the App, it will create a user document inside the `users` collection.\n\n**You will see an empty screen. To fix that, continue this setup.** You may need to restart the app after the setup is done.\n\n**Create group collection**\n\n- Select the database you’ve just created.\n- `Create collection` and name it `groups`.\n- Add your first group with the following properties:\n\n| name | type | value |\n|:--|:--|:--|\n| abbreviation | string | TE |\n| color | string | ffffff |\n| members | array | *User-UID we’ve retrieved in **Adding a user*** above |\n| name | string | test |\n\nWe’ve now setup our first test group. In addition to this step, we’ll need to setup a default `Channel` (e.g. something similar to `#general` in Slack).\n\n**Add the new created Group id to the User document**\n\n- Select the User you have now on your database.\n- Add a new field named `joinedGroups` and make it type `Array`\n- Add an entry in this array, with the value equal to the Group document id from Firestore.\n\n**Create channel sub-collection**\n\n- In the `groups` collection select the newly created group.  \n- `Create collection` within the group called `channels`.\n- Add your first channel with the following properties:\n\n| name | type | value |\n|:--|:--|:--|\n| name | string | general |\n| type | string | TOPIC |\n| visibility | string | OPEN |\n\n**Your Firestore database should look like this (with different ids)**\n\n![screenshots](.\u002Ffirestore-1.png)\n![screenshots](.\u002Ffirestore-2.png)\n![screenshots](.\u002Ffirestore-3.png)\n![screenshots](.\u002Ffirestore-4.png)\n\t\n### B4. Deploy firebase functions \n\nNavigate to the `firebase` directory and deploy all functions using:\n\n```\n$ firebase deploy --only functions\n```\n\nSome features of the app can be used without Cloud Functions running, but some others will not work.\nWe recommend you to perform this step to enjoy all features.\n\n### B5. Final steps\n\nLogin with the user you’ve created above.\n\nNext create your first `event` to setup the *calendar collection* in our backend. \n\n**Create an event**\n\n- In the app select the hamburger menu\n- Hit the `+` sign next to `Events`\n- Enter any data you like and hit `Create` \n\nAt the root level of your database you should now see a collection called `calendar` in your firebase console.\n\nNow we’re ready to deploy all other parts of our backend using:\n\n```\n$ firebase deploy\n```\n\n\n# Deployment\n\nThe app is setup to work with a development and production environment. We suggest you create a different Firebase app for each environment. \n\nWhen building for release the app will automatically use the production configuration that you’ve configured in step `B3`.\n\n# External resources\n\n- [Timy Messenger in itsallwidgets.com](https:\u002F\u002Fitsallwidgets.com\u002Ftimy-messenger)\n- [Building a Messaging App in Flutter — Part I: Project Structure](https:\u002F\u002Fbeltran.work\u002Fblog\u002Fbuilding-a-messaging-app-in-flutter-part-i-project-structure\u002F)\n- [Building a Messaging App in Flutter — Part II: Main Method](https:\u002F\u002Fbeltran.work\u002Fblog\u002Fbuilding-a-messaging-app-in-flutter-part-ii-main-method\u002F)\n- [Building a Messaging App in Flutter — Part III: Redux](https:\u002F\u002Fbeltran.work\u002Fblog\u002Fbuilding-a-messaging-app-in-flutter-part-iii-redux\u002F)\n\n# About\n\nThe concept for Timy was created and developed by [kaalita](https:\u002F\u002Fgithub.com\u002Fkaalita) and [philippmoeser](https:\u002F\u002Fgithub.com\u002Fphilippmoeser).\nThe initial version is a MVP messaging app focusing on organising events among groups.\n\nWe hope this project can be a reference or building block for your next flutter app. 🚀\n","Timy是一款基于Flutter开发的开源移动应用，旨在为团队提供沟通和自我组织的平台。它支持创建多个公开或私有的群组与频道，允许用户分享照片、对消息做出表情反应，并接收推送通知。此外，Timy还具备事件管理功能，包括特定于活动的频道以及一个汇总所有过去和即将到来活动的日历视图。该应用适用于需要高效内部沟通及活动安排的小型到中型企业或社团。通过使用Dart语言编写，并结合Firebase提供的后端服务，Timy能够跨Android与iOS平台运行，提供流畅稳定的用户体验。",2,"2026-06-11 03:21:53","top_language"]