squanchy-dev / squanchy-flutter Goto Github PK
View Code? Open in Web Editor NEWFlutter implementation of the Squanchy conference app
Home Page: http://squanchy.net
License: Apache License 2.0
Flutter implementation of the Squanchy conference app
Home Page: http://squanchy.net
License: Apache License 2.0
Display MVP data about the event:
Clicking the speakers should bring up the speaker details.
Clicking the favourite button should toggle the favourite state if the user is signed in, otherwise should bring up a sign-in prompt.
🗒 Sharing an event is out of scope for this story
Please refer to @ScribblyPixels' design.
Assuming tweets are retrieved by a cloud function and they're stored in Firestore, the app should fetch them.
Details TBD.
🗒 The search results is implemented in another story, #12
Please refer to @ScribblyPixels' designs
Data:
Example:
Please refer to @ScribblyPixels' designs.
Seems the AppBarBottomWidget class no longer exist as trying to run the app throws the following error:
class FlexibleAppBarBottomWidget extends AppBarBottomWidget```
And the [flutter docs](https://docs.flutter.io/flutter/material/AppBarBottomWidget/bottomHeight.html) show a Not found error
The app should have a pluggable framework for onboarding, including:
The reference is the Android native app's onboarding framework.
In addition to what is retrieved as per #23, retrieve the following info about a session from Firestore:
Fetch speaker details from Firestore:
Display speaker details:
🗒 Displaying multiple speakers' data at once is in a separate ticket, #29
Please refer to @ScribblyPixels' design
Building upon #28, if there's more than one speaker associated with a session, the user should be able to quickly switch between the speakers. E.g., they could be in a viewpager.
Please refer to @ScribblyPixels' design
The app should obtain the schedule data from Firestore and use it to fill in the items in the schedule UI. This depends on #5
Structure:
Please refer to @ScribblyPixels' designs.
The user should get a notification when a session they have favourited is about to start (i.e., starts in 5 minutes).
We should display:
The second onboarding page is the WiFi setup page; it should look something along these lines:
Please refer to @ScribblyPixels' designs.
The "no thanks" button brings users to the next page, "yes please" starts the automatic setup process. If setup succeeds they're immediately brought to the next onboarding page (or schedule if this is the last one), otherwise they remain on the current page and some error is displayed (out of scope, see #todo).
🗒 Wi-Fi setup is only available on iOS 11+
🗒 This page can only be shown if the app has the WiFi configuration data, otherwise it must be skipped.
Fetch the following info about a session from Firestore:
🗒 Additional data could be fetched but it out of scope for MVP, see #24
Up to 10 recent searches — not backed up across devices (for now?)
🗒 The search results UI is implemented in another story, #12
Example (Android):
Please refer to @ScribblyPixels' designs
Display the venue information screen:
Please refer to @ScribblyPixels' design
The first onboarding page is the sign-in page; it should look something along these lines:
Please refer to @ScribblyPixels' designs.
The "no thanks" button brings users to the next page, "yes please" starts the sign-in process. If sign-in succeeds they're immediately brought to the next onboarding page, otherwise they remain on the current page and some error is displayer (design TBD).
When a user taps one of the tracks in the search screen initial/empty state, all talk-like events pertaining to that track will be shown in the UI
🗒 The rest of the search functionality is implemented in other stories, this is only about track search
Example (Android):
Please refer to @ScribblyPixels' designs
When the user starts the app for the first time they must be assigned an anonymous Firebase Auth identity so we can enforce access rules (e.g., allow reading but not writing).
Please refer to @ScribblyPixels' designs
When a user types 2 or more characters in the search field (or inputs using voice), we perform a search across:
🗒 The actual search is implemented in another story, #13
We then display, in separate sections (when there are hits):
🗒 Tapping these items should deep-link to the details, but it's out of scope for this issue.
Please refer to @ScribblyPixels' designs.
Please refer to @ScribblyPixels' designs
🗒 The licenses listing screen is part of another story, #34
If a user is signed in we should show them some CTA to add talks to their favourites:
If they're not signed in we should show them a CTA to sign in:
[design missing]
Please refer to @ScribblyPixels' designs
Fetch venue information from Firestore:
Data for each event in the bundle:
Example:
Please refer to @ScribblyPixels' designs.
Allow users to share links to an event using a web URL, or Firebase dynamic links.
Implement the UI (still TBD) for when the user tries searching for something and nothing matches their query.
This also includes designing and implementing other edge cases, such as:
🗒 The rest of the search functionality is implemented in other stories
The app should obtain the search data from Firestore and use it to fill in the search UI. This depends on #5
The settings screen should display a "configure conference Wi-Fi" item if the device runs iOS 11+ and the app has Wifi configuration data. If the hotspot is already configured on the device, it should be marked as "already done".
🗒 Wi-Fi setup is only available on iOS 11+
🗒 This setting can only be shown if the app has the WiFi configuration data, otherwise it must be hidden.
When a user is logged in, they should see talk-like events they have favourited in the schedule having a distinctive mark:
Please refer to @ScribblyPixels' designs.
This is blocked by #19
cloud_firestore
pluginWhenever there is data in the schedule (i.e., not in the empty state) we need to display each day in its own tab:
Please refer to @ScribblyPixels' design
When a user types 2 or more characters in the search field (or inputs using voice), we perform a search across:
The results will be presented in separate groups in the UI.
🗒 The UI is implemented in another story: #12
We should display the tweets that we retrieve as part of #39. UI TBD.
When a user is signed in we should show them their favourites, organised by day (TO BE CONFIRMED). Tapping the events brings users to the details for the event.
When there's nothing in the schedule (not loaded yet? Error fetching?) then we should show an empty state. For example:
Please refer to @ScribblyPixels' design
In addition to the Google Sign in we should provide auth using other auth providers supported by Firebase Auth:
There will be the need for sign in UI designs once we support more of these providers.
Hello,
I tried to run current app, but it crashes on Android Emulator (Android 8.0, x64)
Im pasting output log:
output.txt
And my flutter doctor results:
doctor.txt
Lets ignore InteliJ Idea info, Im using Android Studio
Let me know if I can help with debugging
Obtain the list of favourites from Firestore for a signed in user.
🗒 The UI is done in another story
The app should be able to receive data-only push notifications via FCM so that it knows to, for example, refresh the DB data, or the remote config (if used).
Data:
Example:
Please refer to @ScribblyPixels' designs.
Allow the user to be signed in with Google, to unlock features that require a non-anonymous user, such as favourites.
If in the WiFi setup things don't work we should show some error UI:
Please refer to @ScribblyPixels' designs.
The "no thanks" button dismisses the page, "open settings" opens the settings screen where users can manually add the network. The Copy button will copy the password to the clipboard.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.