GithubHelp home page GithubHelp logo

glennquah / connectcard Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 12.94 MB

ConnectCard offers a simple solution: scan physical name cards with your phone camera to create digital cards in the app. Keep your contacts updated with your real time information and add friends by scanning and sharing your QR code. Simplify your wallet and stay connected effortlessly.

Kotlin 0.04% Swift 0.61% Objective-C 0.01% Dart 83.82% CMake 5.77% C++ 7.31% C 0.44% HTML 0.78% Ruby 0.95% JavaScript 0.06% CSS 0.23%
connect dart firebase flutter friends namecard opticalcharacterrecognition qrcode scanning social-media social-network

connectcard's Introduction

connect_card_logo

National University of Singapore (NUS)

CP2106 (Orbital)

Team ID: 5548

Team Members:

  1. Quah Han Rong, Glenn (Skylab ID: 5132)
  2. Tan Zhi Wei (Skylab ID: 5133)

Proposed Level of Achievement: Apollo 11

Difficulty Attempted: Advanced

Year: 2023

Table of content

Foreword by Developers

Welcome to ConnectCard! This namecard application is designed to revolutionize the way you exchange and manage contact information.

As developers, we embarked on this journey with a simple yet powerful idea – to create a seamless and digital solution for sharing your professional identity. In today's fast-paced world, where networking and connections play a vital role, we recognized the need for a modern approach to exchanging contact details.

Gone are the days where you carry around a physical namecard. With ConnectCard, you are able to showcase your unique brand and professional identity anytime and anywhere. By seamlessly scanning a QR Code, your namecard information can be exchanged easily.

We have poured our hearts and expertise into every aspect of this application, ensuring that it delivers a delightful user experience. Our focus on simplicity and intuitive design means that anyone, regardless of their technical proficiency, can effortlessly navigate and make the most of our application.

But our journey does not end here. We are committed to continuous improvement and evolution, guided by your valuable feedback and suggestions. Our passion for innovation and our dedication to providing a cutting-edge product drive us to push the boundaries of what this application can achieve.

So, without further ado, welcome to ConnectCard – Networking made easy

Regards,

Glenn Quah

Linkedln: https://www.linkedin.com/in/glenn-quah-59390a18b/

Github: https://github.com/glennquah

Tan Zhi Wei

Linkedln: https://www.linkedin.com/in/zhi-wei-tan-92b02525b/

Github: https://github.com/ZhiWei1010

Poster & Video

Poster

poster

LiftOff

Elevator Pitch Video: https://drive.google.com/file/d/1KqCCN2fL1QiHnOnuNatBzYJn6tmiY9W4/view?usp=share_link

Poster: https://drive.google.com/file/d/1Xfcv88yRIS-P9JojkY_17qMARUUyWp3c/view?usp=share_link

Milestone 1

Figma Design: https://www.figma.com/file/hVvHnTKv5smJBOPmTPnpZP/Connect-Card?type=design&node-id=0%3A1&t=8YLkiicqGAFXCIrQ-1

Project Demo: https://drive.google.com/file/d/1_FYtio2JPChTIyvzL8KLP-Jp_Hdezmzm/view?usp=sharing

Milestone 1 Prototype: https://drive.google.com/file/d/1_FYtio2JPChTIyvzL8KLP-Jp_Hdezmzm/view?usp=sharing

Milestone 2

A1 Poster: https://drive.google.com/file/d/1ClhH5edK67TUENlC-zsqnikMv52tSPE3/view?usp=sharing

Project Demo: https://drive.google.com/file/d/1rrZD2IqqNtiWg3TsZ2e1fOy9HcUg8kcs/view?usp=sharing

App APK: https://drive.google.com/drive/folders/1gHe2YpPyJYLERWdhZ95dpLA-nPWfbCxl

Milestone 3

A1 Poster: https://drive.google.com/file/d/1ClhH5edK67TUENlC-zsqnikMv52tSPE3/view?usp=sharing

Project Demo: https://drive.google.com/file/d/1bNgsbRKgLQ5-xu79HLYNc3w_j2NT44GG/view?usp=drive_link

App APK: https://drive.google.com/drive/folders/1sdKgctwhZuty5yzFxVUUMiuW6nRoqbCH?usp=drive_link

SplashDown

A1 Poster: https://drive.google.com/file/d/1ClhH5edK67TUENlC-zsqnikMv52tSPE3/view?usp=sharing

Project Demo: https://drive.google.com/file/d/1tOFcYpV6C37tilautMI-HuXwmJSZrXCN/view?usp=sharing

App APK: https://drive.google.com/drive/folders/1O12f7ssKgRxBMdYrVPpWWC6XTMhmSG5b?usp=sharing

Deployment

ConnectCard is currently only available on android. For users without an android device, you may download the app through an Android Emulator which can be downloaded from Android Studio. Otherwise, you may read the App Demo/Walkthrough or watch our App Demo Video which can be accessed under Poster & Video.

ConnectCard is packaged into an APK file, where you can download and install the APK on your android device directly.

Link to APK: https://drive.google.com/drive/folders/1O12f7ssKgRxBMdYrVPpWWC6XTMhmSG5b?usp=sharing

Motivation

Problem:

Carrying physical name cards and membership/loyalty cards can be burdensome, leading to lost contact information and a cluttered wallet. It is inconvenient for individuals who meet new people, engage in business interactions, or collect various membership cards to manage and access these cards efficiently.

Solution:

ConnectCard provides a convenient solution by allowing users to scan physical name cards using their phone camera and convert them into digital cards stored within the application. Users can easily update their personal digital name cards, keeping their contact information up to date for seamless interactions. The application also enables users to add other users as friends easily by scanning a QR Code and sending the QR code through social media such as telegram and whatsapp. With our app, individuals can simplify their wallet, stay connected with ease, and take full advantage of membership benefits without the hassle of physical cards.

Aim

The primary objective of our Orbital project is to develop a sophisticated mobile application that facilitates effortless storage and management of personal name cards, along with seamless user connectivity. Our ultimate vision is to eliminate the reliance on physical name cards and alleviate the inconvenience of carrying a bulky wallet through the streamlined functionality of this app. Designed for recruiters, professionals, job seekers, and everyone else. Simplify networking, all in one place.

How are we different from Existing Platforms

Description

ConnectCard utilizes Firebase for data storage and manipulation, and Flutter for the user interface design. It offers various features such as scanning and storing name card information, linking the app to communication platforms like Telegram, Whatsapp, Phone, and Email, updating existing data, and QR Code technology for easy name card exchange.

Need:

Currently, there are existing name card applications that provide features such as storing and managing digital name cards of self and others. However, there are some few applications that satisfy some features that are important in a digital name card application.

Existing name card applications have limited functionality in these areas:

  • Converting current physical name cards into digital name cards easily
  • Sharing digital name cards with others easily

Key Technologies

Optical Character Recognition (OCR)

ConnectCard utilizes OCR technology to extract text and relevant information from scanned name cards. This technology enables automatic data entry and ensures accurate digitization of the name card details.

Image Processing

Image processing techniques are employed to enhance the scanned name card images, improve readability, and optimize the visual quality of the digitized cards. This helps in creating clear and professional-looking digital name cards.

Mobile Camera Integration

ConnectCard seamlessly integrates with the mobile device's camera functionality, allowing users to capture images of physical name cards directly within the app. This integration simplifies the scanning process, making it convenient for users to convert physical cards into digital format effortlessly.

Cloud Storage and Synchronization (Firebase)

To ensure data accessibility across multiple devices, our application integrates with cloud storage services. The digital name cards and associated data are securely stored in the cloud, enabling users to access and manage their cards from any device with the application installed. Synchronization functionality ensures that any updates made to the cards are reflected across all devices.

QR Code Sharing

ConnectCard leverages QR code technology for the seamless exchange of digital name cards between users. Users can instantly add other users as friends by scanning their QR code, or even share their own personal QR code via social media such as telegram and whatsapp, fostering efficient networking and eliminating the need for manual contact input.

Notes:

We decided to swap out the initially planned out NFC technology for the seamless exchange of digital name cards for QR Code Sharing. This is because QR Code is a widely used technology that users are used to using. Additionally, we are also using the camera for other functions such as the OCR to convert physical name cards into digital name cards, which means users would be more familiar with the scanning action with the camera, allowing easier familiarization of the app.

Tech Stack

  1. Figma: Prototyping and Frontend UI Design
  2. Flutter: Frontend UI Framework
  3. Firebase: Authentication & Database (Backend)

User Stories

  1. As a working adult, I want to be able to sign up to have my own account, login and logout of the application.
  2. As a working adult, I want to be able to have a profile page where I can upload my profile picture, name and headline.
  3. As a working adult, I want to be able to get customer support easily.
  4. As a working adult, I want to be able to create, edit and delete digital name cards easily.
  5. As a working adult, I want to be able to connect with other users easily.
  6. As a working adult, I want to be able to convert physical name cards into digital name cards easily.
  7. As a working adult, I want to be able to view the scanned named cards easily.

Project Scope

Milestone 1

  1. UI/UX of Application: Finalized the design using FIGMA to be used as a template to guide
  2. Login / Registration: By using an email & password to login

Milestone 2

  1. Database: The app uses Firebase as the backend database to store and manipulate data, ensuring efficient data management and retrieval.
  2. Updating existing Data: Users have the flexibility to update their personal digital name cards at any time. This feature is especially useful when users experience changes in their job positions or roles within their existing company.
  3. Scanning Feature: Users can use their device's camera to scan name cards and extract relevant information. Users cannot do anything with the extracted text just yet, but in Milestone 3, Users will be able to use the extracted information to create their own personal name cards or a friends’ name card.

Milestone 3

  1. Friends system The app uses Firebase as a backend database to store friend's card. Users can send, accept or reject friend requests.
  2. Communication Integration (QR Code): The app allows users to add other users as friends seamlessly by scanning their personal QR code. The app is also integrated with popular communication platforms such as Telegram, Whatsapp, Phone, and Email, where they can send their personal QR code easily . This enables users to easily connect with their clients directly from the app.
  3. Scanning and storing feature (continuation from Milestone 2): Users can now use the extracted text from the OCR feature to create new personal name cards or friend’s name cards which will be stored in the firebase.

App Demo & Walkthrough

Login Page

login

Allows users to log in to their ConnectCard account using their email and password.

Provides a toggle option to switch to the Registration page for new users.

Registration Page

signup

Allows new users to create a Connect Card account by providing their email and password.

Validates the user's email and password to ensure they meet the necessary requirements.

Profile Page

profile page

Allows users to select options such as editing profiles, contacting customer support, or logging out.

Edit Profile Page

edit profile page

Allows users to edit their profile picture, name, and headline, which will be displayed when other users want to add them as friends.

Home Page

Card View

Card View

List View

List View

Displays a list or card view of the user's stored name cards, showing basic information such as name, organization, position, phone number, and email address for each card.

Includes a bottom navigation bar to access other pages.

Provides a profile bar at the top to access the user's profile page.

Provides a help icon at the top right for instructions on how to use the app.

Provides an edit icon at the top right, bringing them to the card editor form page.

More Details Card Page

more details

Users can view their cards in more details by clicking into them.

Card Editor Form Page

drop down

Allows users to add new name cards and edit the selected name cards.

Validates the entered information and displays error messages if required fields are not filled.

Card Editor Page

card editor

Loads the selected name card information from the database.

Allows users to add a display picture and update various information fields.

Provides an option to delete name cards, with a snack box appearing when attempting to delete the last card.

Updated Data in Firebase

firebase

After editing the card details, it is automatically updated on Firebase.

When adding new cards, the List of Cards will add on

Communication Integration

comm int

Each User will have their unique QR Code that can be accessed by clicking on the ‘connect’ button.

Users can choose to scan another user’s QR Code to them as a friend or send their QR code via social media

Communication Integration (Adding friends by Scanning QR Code)

scan qr

After users click the ‘Scan’ button, they can scan other user’s QR codes to add them as friend

Communication Integration

share QR tele

Users can also choose to click the ‘Share’ button to share their personal QR code with other users via social media

Text Recog Page

text recog

Requests permission to use the camera for name card scanning.

Enables users to capture a photo of a name card.

Utilizes Google ML Kit and text recognition technology to convert the image into text and extract relevant information.

Users can click on the help icon at the top right for instructions on how to use this feature.

Text Recog Results Page

ocr result personal or friend

Displays the results of the text conversion and extraction process.

Filters out Phone number, Address, Email, and Website and prefills in the scanned card editor page.

When they click add card, an alert dialog appears and users can choose to add the scanned card as their own personal card or a friend’s card.

Adding Scanned Cards

edit_scanned_card editscannedcard

The phone number, email, website and address are prefilled automatically prefilled.

All other extracted text will be prefilled inside the more information area and users can cut and paste the information into the relevant fields.

Personal

Users are able to select personal card and the card will be added into their list of cards

Friend

Users are able to select friend card and the card will be added into the cards tab where they can view the information.

This allows users to digitalize their name card, having easy access whenever or wherever they are

Scanned Card Page

scanned card page scanned card pop up

Users are able to view the list of scanned cards on the scanned card page.

A search function is also included for users to easily find the scanned card

Users will be able to edit or view the scanned card in more detail when they click on each card.

View Scanned Card Page

scanned card more details

Users are able to view the scanned card with more detailed information after clicking on the card.

View Friends

scanned card more details

Users list of friends will appear in the friends tab. User is able to press onto the list view to their friends cards

User can click into the card to view more information

scanned card more details

Friend Request Received

scanned card more details

When user receives a friend request, the friend request tab will turn red and indicate the number of request he has.

User can choose to accept or decline the request

After accepting the request, the person is now your friend and you are able to view their cards

Adding Friend

scanned card more details

scanned card more details

User is able to view the list of users using connect card, with the ability to search for their friend via their name, headline or UID.

After finding your friend, you can send them a friend request

You can view the request pending tab and you can see that the list of request pending

System Design

Application Flow

1

Authentication

When the ConnectCard app is opened, it checks for persistent login information. If the user is already logged in, they are directed to the Home Page. Otherwise, they are brought to the Login Page to authenticate their credentials.

On the Login Page, users have the option to toggle between the Login and Register pages. After inputting the correct email and password values, the app authenticates these values with Firebase. If the email and password are correct, the user is directed to the Home Page. If the authentication fails, the user is given the opportunity to try again.

View Profile

By pressing the top app bar button, the user is able to edit their profile, including their name, headline, and profile picture. Users can also click the "Contact Us" button to get in touch with customer service via email or phone or log out of the application.

Card Editing

Users have the ability to edit their card information, add and delete new cards.

Home Page

On the Home Page, users can view their existing cards in either a list or card view. The cards display basic information such as name, organization, position, phone number, and email address. By clicking on a card, they will be directed to another screen showing detailed information, with the ability to interact with the phone number, email, and website for communication.

Connect

By clicking on the "Connect" button, the QR Code generator will be triggered, and a personalized QR Code will appear. Users can choose to scan other users' QR Codes to add them as friends or share them via social media, enabling others to connect with them.

OCR Image to Text converter

The Scan Cards Page requires permission from the user to access the camera. Once permission is granted, users can take a photo of a name card. The app utilizes Google ML Kit and text recognition technology to convert the image into text, extracting relevant information from the name card. It filters the phone number, email address, website, and address. Users can choose to add the information as a personal card, which will be reflected in their list of cards, or as a friend's card, which will appear in the cards tab for easy reference. This allows users to digitize all their name cards, capturing them as pictures for convenient access in case of discrepancies.

Card Tab

After scanning other users' physical name cards, the user can view or edit the following cards.

Adding friend

By clicking on the blue button, users can easily search for friends as it displays the full list of users using ConnectCard. Additionally, they can search for friends through their UID, name, and headline. After finding their profile, users can send a friend request. Upon receiving a friend request, the friend request tab turns red, indicating the number of requests. Users are able to accept or decline the friend requests.

Viewing friend cards

After the request is accepted, users can click on their friend's profile and look through their list of cards. The color of the card will be different to indicate that it belongs to the friend, not the user.

Class Relationship / Database ER Diagram

2

3

Every user document is split into 2 collection. “Friends” and “UserData”. This is to ensure security, easy access to specific data and to reduce impact on existing functionalities when updating user information.

Enhanced Security

To separate sensitive data, ensuring that users only have access to the information they are authorized to see. This prevent potential security breaches and unauthorized access to sensitive ser relationship

Easier access to specific Data

By having a dedicated “Friends” collection, it allows for efficient querying and retrieval of friend related information. When a user wants to retrieve their list of friends, accept or decline friend requests, or perform any action related to their friends, the system can directly access the "Friends" collection without needing to fetch unnecessary data from the "UserData" collection. This separation simplifies data retrieval and improves the overall performance of friend-related operations.

Reduced impact on updates

When a user updates their profile information (e.g., name, headline, profile picture), having a separate "UserData" collection ensures that changes to user-specific data won't interfere with friend-related data. This separation minimizes the risk of accidental data corruption or inconsistencies. Additionally, it simplifies the process of updating user data without affecting friend connections or vice versa.

Simplified User Management

Splitting data into logical collections can improve the management of user-related data. Administrators or developers can focus on specific tasks related to friends and friend requests without having to navigate through unrelated user data. This compartmentalization streamlines maintenance and development processes.

Software Architecture

1

Software Engineering Practices

Here are some of the software engineering practices that we used for our Orbital project.

Project Management with GitHub Projects

Github Milestones

When embarking on a new feature, we establish dedicated milestones that align with the overarching project goals. Each milestone serves as a crucial stepping stone towards the successful completion of the feature, ensuring that our efforts are focused and well-organized.

1

Issues

As part of our milestone-driven development process, we leverage Git issues to effectively manage and track the progress of our work. Once we have established milestones, we break down feature development into smaller, manageable tasks and create Git issues to encapsulate them. This granular breakdown enables us to focus on specific aspects of the feature, promoting efficiency and collaboration among team members. Moreover, we will delegate the tasks, apply labels for easy categorization, and assign them to our project for efficient project management.

2

Labels

By using Git labels, after creating each issue, we will apply different labels to categorize it based on its content. This will help us easily understand what each issue is about and organize them accordingly.

3

Work allocation

By utilizing a Git project spreadsheet, we can have an overview of the work allocation. All the issues are listed down as tasks, and we can track the status of each task. This provides a clear picture of how the work is distributed among team members and helps us monitor progress efficiently. The spreadsheet allows us to keep track of completed tasks, ongoing work, and pending items, ensuring that the project stays on track and all team members are aligned with their assigned tasks.

4

Version Control

Branching

By utilizing the branching feature in Git, we ensure a structured and organized development process. Whenever we work on a new feature or bug fix, we create a separate branch for it. This approach allows multiple team members to work on different features concurrently without causing conflicts or discrepancies in the codebase.

Each branch represents a specific task or feature, which helps us maintain code isolation and makes it easier to review and test changes independently. Once the feature is completed or the bug is fixed, we thoroughly test the code to ensure its functionality and reliability.

Only after testing and verification, we proceed with creating a pull request to merge the branch into the main branch. By following this branching workflow, we minimize the risk of introducing bugs and maintain a stable main branch that represents the most up-to-date and tested version of the project. It promotes collaboration, transparency, and effective code management throughout the development process.

5

Pull request

We follow a structured approach by first testing our branches thoroughly. Instead of directly updating the main branch, we utilize Git pull requests. This enables others to review the code and helps prevent any discrepancies before merging. This collaborative process ensures code quality and maintains a stable main branch.

6

7

Releases / Tags

By creating releases and tagging them with version numbers via milestones, it becomes easy to track and manage different versions of the software. This helps in keeping a clear record of each release and allows us to revert to specific versions if needed.

8

Testing

For testing, we have split it into 2, automated testing and user testing.

  1. Automated TestingUnit test: To test a single function, method or class
  2. Integration test: to test the complete app or a large part of the app
  3. User Testing
  • Scenario based testing: design test scenarios that replicate real-world situation that users might encounter
  • Diverse user representation: including different demographics, skill levels and backgrounds
  • Bug reporting and tracking: provide a simple and clear way for users to report bus and issues through a google form

1

Please visit the link to view more information on our testing! Link: https://docs.google.com/document/d/1GVsOisbiYp4yAPMlSFgj1nU5VWP4nFaO/view#bookmark=id.1d90lqkwji6o

Screenshots of Google Responses

Please visit this link to view more information on our Google survey form responses. Link: https://docs.google.com/document/d/1GVsOisbiYp4yAPMlSFgj1nU5VWP4nFaO/view#bookmark=id.d6e3y2etbxv

Changes made through development

Please visit this link to see the changes made through development! Link: https://docs.google.com/document/d/1GVsOisbiYp4yAPMlSFgj1nU5VWP4nFaO/edit#bookmark=id.5dnbtaz1ches

Challenges faced

Here are some challenges that we have faced during our journey of creating ConnectCard.

ID Challenges Explanation and Actions taken
1 We had a huge commit issue on github due to a circleci.yaml file that existed in our repo when we did not even set it up. Research on circleci, github commit & also seek advice from our advisor, Ruby. Manage to remove the circleci.yaml file and resolve the commit issue.
2 OCR integration into our app. Using the camera in the phone requires appropriate permissions and life cycles to be set up. It was not easy to set up the OCR integration into our app. After setting up the appropriate permissions and life cycle for using the phone camera, we were able to recognise the text successfully with rather decent accuracy. However, to filter out the appropriate information that should be used to pre-fill the fields for our name card forms is a huge challenge to us as we were not familiar with AI/ML. Instead we decided to use a simple regex of finding matching patterns to filter out the appropriate information such as ‘+65’ for phone numbers, ‘@’ for email address and 6 digit numbers (postal code) for address. In the future, we are planning to use some Large language models to more accurately filter out the appropriate information to pre-fill the fields correctly and filter out unnecessary information.
3 App crashing bug. During the start of Milestone 3, there was a bug with the app where the app would crash everytime a new page is opened. We explored around with the app to try to find out when the crash happened. Initially, we thought that the cause of the crash was from the inappropriate life cycle set up for using the phone camera in the OCR function. However, we found out that any other tabs also caused the crash of the app, which means that the crash was not due to the inappropriate life cycle. We then decided to trace back the commits to find out when the bug first appeared. This would help us find out which code is causing the crash of the app. We also researched the error message shown. Turns out that there was some dependency issue, and it was solved quickly after.
4 NFC integration into our app. Currently, flutter only has packages that support NFC communication between a NFC Device and a NFC tag. For peer to peer communication via NFC, it is basically not possible. Also, after careful consideration, we felt that using QR code is instead a better alternative as compared to NFC as QR code is a widely used technology that almost everyone is familiar with. This allows new users to easily learn how to use the feature without much learning curve. In addition, we are already using the phone camera for the OCR feature, this provides an extra layer of familiarity for the users, allowing them to get familiar with using the app quickly.
5 Bluetooth integration into our app. Bluetooth integration was another alternative that we considered during our discussion to replace the NFC technology. However, after careful considerations, we felt that QR code technology is still the ideal alternative due to the same reasons stated in point 4.
6 Deployment of app in both Android and IOS. Initially, our app is supposed to be deployed on both IOS and Android. However, due to many dependency, permissions conflicts as well as time constraints, we were only able to deploy the app on android devices. We decided to follow through the development in Android devices and only fix up the IOS deployment in the future when we have more time.

Project Log

Link: https://docs.google.com/spreadsheets/d/1aPRcCrV2DgaXbIsEnaVfjLGABb_CIqXqBk_hmSb5DgI/edit?usp=sharing

Sources & References

  1. https://www.youtube.com/watch?v=1ukSR1GRtMU&list=PL4cUxeGkcC9jLYyp2Aoh6hcWuxFDX6PBJ
  2. https://www.youtube.com/watch?v=sfA3NWDBPZ4&list=PL4cUxeGkcC9j--TKIdkb3ISfRbJeJYQwC
  3. https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels
  4. https://docs.github.com/en/organizations/managing-organization-settings/managing-default-labels-for-repositories-in-your-organization
  5. https://docs.github.com/en/rest/issues/assignees?apiVersion=2022-11-28
  6. https://docs.github.com/en/rest/git/tags?apiVersion=2022-11-28
  7. https://docs.github.com/en/actions/managing-issues-and-pull-requests/adding-labels-to-issues
  8. https://pub.dev/packages/google_nav_bar
  9. https://www.youtube.com/watch?v=Uw0T4ZIgFgs
  10. https://davidserrano.io/text-recognition-in-flutter-create-ocr-scanner-app
  11. https://pub.dev/packages/google_mlkit_text_recognition
  12. https://pub.dev/packages/permission_handler
  13. https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html
  14. https://pub.dev/packages/camera
  15. https://medium.flutterdevs.com/nfc-in-flutter-43e419f48b47
  16. https://pub.dev/packages/nfc_manager
  17. https://pub.dev/packages/showcaseview
  18. https://resocoder.com/2021/08/03/flutter-showcaseview-tutorial-introduce-app-features-to-your-users/
  19. https://docs.flutter.dev/cookbook/testing/unit/introduction
  20. https://medium.com/@a.poichet/flutter-and-the-practical-test-pyramid-with-the-bloc-pattern-6e6bf10dda9d
  21. https://www.youtube.com/watch?v=GuGdIg4iH_k
  22. https://www.youtube.com/watch?v=jSaoTC1ULB8
  23. https://www.youtube.com/watch?v=TQhMCFGaIOQ&t=2712s&ab_channel=SYLVAINTAIO
  24. https://www.youtube.com/watch?v=RwsDVQFrH2o&ab_channel=QRTIGER-QRCodeGenerator
  25. https://www.youtube.com/watch?v=tGSWzsxJCsA&ab_channel=BaabaDevs
  26. https://www.youtube.com/watch?v=WTSPwr0vJmM&t=792s&ab_channel=JensTofte
  27. https://www.youtube.com/watch?v=o1XuW6DKkEs&t=530s&ab_channel=SujanBhattarai
  28. https://www.youtube.com/watch?v=11OoD1rhV9I&ab_channel=ChidiebereEdeh
  29. https://www.youtube.com/watch?v=4YxGA3OC0c4&t=341s&ab_channel=TheTechBrothers
  30. https://www.youtube.com/watch?v=N8x63LJlpD0&ab_channel=dbestech
  31. https://www.youtube.com/watch?v=7Z2Wqm8waSM&t=952s&ab_channel=DevMo
  32. https://www.youtube.com/watch?v=haMOUb3KVSo&ab_channel=Firebase
  33. https://www.youtube.com/watch?v=S-8v9nOCUfw&t=27s&ab_channel=TrueCoders
  34. https://www.youtube.com/watch?v=QyChOayFQDk&ab_channel=CodingCafe
  35. https://www.youtube.com/watch?v=P6OTh-5NDN4&ab_channel=HMTutorials
  36. https://www.youtube.com/watch?v=LlQimtjqZ9A&ab_channel=CodingWithTea
  37. https://www.youtube.com/watch?v=F_OUGeNyiMk&t=6s&ab_channel=TechnicalSkillz
  38. Special mention to Ruby our orbital advisor for comments, feedback and guidance!

connectcard's People

Contributors

glennquah avatar zhiwei1010 avatar

Watchers

 avatar

connectcard's Issues

Milestone 2

  • Designing A1 poster
  • Creating Project Demo (Video)
  • Update and refine Readme & documentation

Add & Select multiple Cards

To store information of 1 card into an object (Card) and store it as a List so that 1 user can store multiple cards

Friend List

Able to show list of friends & their cards & each information breakdown. When adding of friend & approval, the uid of the user is added into the list & user is able to access the information via snapshot

Profile Bar

Made as a widget & able to import it to every page to access the profile bar

OCR Feature

  • Scan physical name card and convert text into digital text.
  • Pre-fill text into the edit card fields

Milestone 1

  • Create A4 Poster
  • Create project demo (Video)
  • Update and refine readme & documentation
  • General group discussion for alignment
  • Milestone 1 submission

Accept / Decline friend request

Able to show list of friend request & able to accept / decline it.
When adding of friend, uid is added into the list of friend request, if user accepts it then it goes to the list of friends

Base pages + Navigation of App

  • Create base pages
  • Fix button to access base page
  • Fix navigation bar to access pages
  • Fix profile bar + navi bar for all pages

Edit Profile

User is able to edit profile such as display picture, name & headline. It will be reflected throughout all the profile bar

Adding of friend

Ability to see all the users in the database & to add them as friend (only showing their name, headline & profile pic)

View Profile

Able to view profile when clicking on the card / list view
Create profile template

Bottom Navigation bar

  • Add bottom navigation bar for users to switch to different pages in the app easily

Milestone 2

  • Create A1 Poster
  • Create Project Demo (Video)
  • Update Readme & documentation
  • General project discussion for alignment
  • Submission of Milestone 2

Splash Screen / Registration / Log In

Familiarisation of Flutter and Firebase by learning tutorials on Youtube.

Met up physically @ Zhiwei House
Finished the Loading Screen, Registration & Log In Page. Initialized Firebase for database Management

Storing of Display Pictures

Users are able to select a picture from their gallery, saving it into firebase. This allows the picture to be shown in the home page at the card information

  1. User selects picture
  2. Stores in firebase
  3. Converts picture into a path that is accessible for future use

Editing of Profile

Users are able to edit information on their profile, reflecting on Firebase.

When user edits again, current information will automatically displayed

Contact Us

When pressing the contact us button, user is able to select between calling / email. It will bring user to the phone with the number & to the customer service email address with the subject prefilled

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.