/assignment_glints_twitter

Assignment Glints Twitter

Primary LanguageDartApache License 2.0Apache-2.0

Assignment Glints Twitter

1. Introduction

Assignment based on 1-Person Twitter App.

Created By Joseph.

  • Head of Mobile @ Shopform Singapore
    • Febuary 2020 till current
  • ex Software Enginner @ Singapore SME Handshakes
    • April 2020 to December 2020 ex Flutter Engineer x Product Owner @ Hmlet Singapore
    • July 2019 to March 2020

2. Getting Started

  1. Open project folder in VsCode or any other IDEs.
  2. In terminal, run the following command
> flutter pub get
> flutter run -d <device_id|emulator_id>
  1. To login, please use the following credential
Usename Password
hello@glints.com 123456

3. In-depth Analysis

3.1. App Screenshoots

Screens Explaination
drawing Login Screen
- Login using Firebase auth.
- Either login or register with new credential
drawing Tweets Screen
- List down all tweets that are stored in Firestore
drawing Create a Tweet Screen
- Maximum of 280 characters.
- If user enters more than 280 (copy/paste), 281th character onwards will be discarded
drawing Edit a Tweet Screen
- Updated date time will be updated in Firestore document
drawing Delete a Tweet Screen
- The document by document id will be removed from Firestore.

3.2. Firestore Screenshoots

In firestore, a collection tweets contains multiple documents.

Each document has an unique auto generated id and contain the following parameters.

Key Type Description
id string The auto generated id by Firestore
content string The 280 character of tweet message
createdAt number UTC millisecond since epoch.
When tweet is first created, value will be created
createdBy string Firebase authenticated user's uid
updatedAt number UTC millisecond since epoch.
When tweet is edited and saved, this value will be created

4. Improvements

  1. Display loading indicator during data retrieval
  2. Add taggings by username and hashtags
  3. Add search for tweets based on username, tagged user and hashtags
  4. Improve UX
  5. Integate CI/CD with Codemagic / Bitrise