Đồ án tốt nghiệp: Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động

Khám phá đồ án xây dựng ứng dụng tìm phòng trọ di động bằng Flutter, Firebase. Luận văn chi tiết chức năng tìm kiếm, so sánh và trang quản lý.

Chuyên ngành

Công nghệ phần mềm

Người đăng

Ẩn danh

Thể loại

Khoá luận tốt nghiệp

2020

117
1
0

Phí lưu trữ

35 Point

Tóm tắt

I. Tổng quan về Đồ án App tìm phòng trọ Flutter Firebase

Đồ án App tìm phòng trọ bằng FlutterFirebase là một giải pháp công nghệ hiện đại nhằm giải quyết bài toán tìm kiếm chỗ ở cho sinh viên và lao động di cư. Dự án được thực hiện tại Trường Đại học Sư Phạm Kỹ Thuật TP. HCM, khoa Công nghệ Thông tin, với mục tiêu xây dựng một ứng dụng di động toàn diện kết hợp công nghệ Flutter cho giao diện người dùng và Firebase cho quản lý dữ liệu backend. Hệ thống cung cấp các tính năng như đăng nhập, xem danh sách phòng trọ, tìm kiếm dựa trị vị trí, so sánh thông tin phòng, và tham gia cộng đồng thông qua diễn đàn. Ứng dụng được thiết kế với kiến trúc hiện đại, tối ưu hóa hiệu suất và trải nghiệm người dùng.

1.1. Công nghệ Flutter trong phát triển ứng dụng di động

Flutter là framework open-source của Google cho phép phát triển ứng dụng di động đa nền tảng từ một codebase duy nhất. Với Dart làm ngôn ngữ lập trình, Flutter mang lại hiệu suất cao, giao diện đẹp mắt và thời gian phát triển nhanh chóng. Framework này được sử dụng rộng rãi trong các dự án ứng dụng tìm kiếm phòng trọ vì khả năng tạo UI linh hoạt, hỗ trợ Google Maps API tốt, và cộng đồng phát triển lớn mạnh.

1.2. Firebase Nền tảng backend toàn diện

Firebase của Google cung cấp các dịch vụ backend cloud bao gồm Firestore Database, Authentication, Storage, và RemoteConfig. Trong đồ án này, Firebase được sử dụng để quản lý tài khoản người dùng, lưu trữ thông tin phòng trọ, xử lý bình luận và đánh giá, cung cấp khả năng real-time và bảo mật dữ liệu cao.

II. Các tính năng chính của ứng dụng tìm phòng trọ

Ứng dụng tìm phòng trọ được phát triển với FlutterFirebase bao gồm nhiều tính năng thiết thực giúp người dùng tìm kiếm nơi ở một cách hiệu quả. Hệ thống cung cấp giao diện trực quan, các công cụ tìm kiếm nâng cao, và cộng đồng tương tác sôi động. Mỗi tính năng được thiết kế dựa trên khảo sát nhu cầu thực tế của người tìm trọ, đảm bảo ứng dụng phù hợp với thị trường Việt Nam. Những tính năng này giúp rút ngắn thời gian tìm kiếm phòng và nâng cao độ tin cậy trong quá trình giao dịch.

2.1. Tính năng xác thực và quản lý tài khoản

Hệ thống đăng nhập, đăng ký và đăng xuất được bảo vệ bởi Firebase Authentication. Người dùng có thể tạo tài khoản bằng email, thiết lập mật khẩu mạnh và quản lý hồ sơ cá nhân. Firebase đảm bảo dữ liệu người dùng được mã hóa và bảo mật theo tiêu chuẩn quốc tế, nâng cao độ tin tưởng của người dùng.

2.2. Tìm kiếm và lọc phòng trọ theo tiêu chí

Ứng dụng cung cấp tính năng tìm kiếm phòng trọ nâng cao với các bộ lọc theo giá tiền, diện tích, khu vực, tiện nghi (điện, nước, phòng ghép, ban công). Người dùng có thể tìm kiếm theo vị trị GPS để phát hiện các phòng gần vị trí hiện tại. Google Maps API được tích hợp để hiển thị bản đồ tương tác, giúp người dùng hình dung vị trí địa lý.

2.3. So sánh và đánh giá phòng trọ

Tính năng so sánh hai phòng trọ cho phép người dùng đặt cạnh nhau thông tin chi tiết của 2 phòng để quyết định dễ dàng hơn. Hệ thống bình luận và đánh giá trong diễn đàn giúp người dùng chia sẻ kinh nghiệm, hỏi đáp và xây dựng cộng đồng tin tưởng xung quanh các phòng trọ.

III. Kiến trúc kỹ thuật và cơ sở dữ liệu

Kiến trúc hệ thống của đồ án được thiết kế theo mô hình client-server hiện đại, với Flutter xử lý phía client và Firebase xử lý phía backend. Cơ sở dữ liệu Firestore được sử dụng để lưu trữ thông tin phòng trọ, tài khoản người dùng, bài viết diễn đàn và bình luận. Kiến trúc này đảm bảo tính mở rộng cao, khả năng chịu tải tốtđồng bộ dữ liệu real-time. Ngoài ra, hệ thống sử dụng Redux để quản lý state ứng dụng, TypeScriptNextJS cho trang web quản lý Admin, cung cấp trải nghiệm lập trình type-safe và hiệu suất cao.

3.1. Firestore Database Quản lý dữ liệu NoSQL

Firestorecơ sở dữ liệu NoSQL cloud của Firebase, cho phép lưu trữ dữ liệu theo collectionsdocuments. Hệ thống sử dụng Firestore để lưu thông tin phòng trọ (tiêu đề, giá, diện tích, tiện nghi), tài khoản người dùng, và bài viết diễn đàn. Real-time synchronization của Firestore đảm bảo dữ liệu luôn cập nhật trên tất cả thiết bị của người dùng.

3.2. Trang web Admin với NextJS và TypeScript

Trang web quản lý Admin được xây dựng bằng NextJS, framework React hỗ trợ Server-side Rendering (SSR). Sử dụng TypeScript giúp code type-safe, giảm lỗi runtime. Admin có thể quản lý phòng trọ, sửa thông tin tài khoản, và quản lý bài viết diễn đàn. NextJS cung cấp hiệu suất tối ưu với static generationincremental static regeneration.

IV. Kết quả đạt được và hướng phát triển tương lai

Đồ án App tìm phòng trọ Flutter Firebase đã hoàn thành thành công với tất cả các tính năng yêu cầu. Hệ thống được kiểm thử toàn diện trên Android và iOS, đảm bảo tính ổn định và trải nghiệm người dùng tối ưu. Ứng dụng đã được triển khai trên Firebase HostingGoogle Play Store, sẵn sàng cho người dùng thực tế. Mặc dù hoàn thành tốt các mục tiêu chính, dự án vẫn có những hạn chế như chưa tích hợp thanh toán trực tuyến đầy đủ và chưa có tính năng machine learning để gợi ý phòng cá nhân hóa. Trong tương lai, nhóm dự định thêm chat real-time giữa chủ phòng và người tìm trọ, xác thực danh tính bằng AI, video tour 360 độ cho phòng trọ, và tích hợp thanh toán đa cách để nâng cao tiện lợi cho người dùng.

4.1. Những kết quả đạt được trong đồ án

Nhóm đã thành công xây dựng ứng dụng di động đầy đủ tính năng từ phân tích yêu cầu đến kiểm thử. Firebase RemoteConfig được tích hợp để quản lý các cấu hình ứng dụng linh hoạt. Giao diện Sidebar được tối ưu hóa cho trải nghiệm người dùng tốt. Hệ thống diễn đàn tích hợp TinyMCE cho phép người dùng đăng bài viết với định dạng phong phú.

4.2. Hướng phát triển và cải tiến trong tương lai

Trong giai đoạn tới, dự án sẽ tích hợp chatbot AI để hỗ trợ người dùng tìm phòng, xác thực chủ phòng bằng AI, thêm video tour 360 độ cho mỗi phòng. Hệ thống thanh toán trực tuyến sẽ được nâng cấp hỗ trợ nhiều phương thức. Ngoài ra, machine learning recommendation sẽ gợi ý phòng phù hợp dựa trên lịch sử tìm kiếm của người dùng.

28/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT TỔNG QUAN VỀ FLUTTER Giới thiệu Flutter[1] Flutter được Google giới thiệu là một bộ SDK(Software Development Kit) mới trong giới phát triển ứng dụng di động. Là một SDK mới của Google dành cho các thiết bị di động giúp nhà phát triển và nhà thiết kế xây dựng nhanh chóng ứng dụng dành cho các thiết bị di động (Android, iOS). Nó như một thủ thuật khôn khéo để tương thích được với framework UI trên cả hai hệ điều hành này.

Các ứng dụng Flutter không biên dịch trực tiếp với các ứng dụng native của Android và iOS. Thay vào đó, chúng chạy trên engine render Flutter (được viết bằng C++) và Flutter Framework (được viết bằng Dart, cũng như các ứng dụng Flutter), cả hai bộ này đều được đóng gói cùng với mọi ứng dụng. Sau đó bộ SDK sẽ đóng gói lại vào trong một ứng dụng để sẵn sàng chạy trên mỗi nền tảng. Bạn tạo ra ứng dụng của mình, một engine mới sẽ chạy các đoạn code của Flutter, và các đoạn mã nguồn vừa đủ để nền tảng Flutter chạy trên cả Android và iOS.

Flutter được phát triển nhằm giải quyết bài toán thường gặp trong thiết bị di động là Fast Development và Native Performance. Nếu như React Native chỉ đảm bảo Fast Development và mã nguồn thuần chỉ đảm bảo Native Performance thì Flutter làm được cả 2 điều trên. Lịch sử phát triển của Flutter[2] Phiên bản đầu tiên của Flutter được gọi là "Sky" và chạy trên hệ điều hành Android. Flutter được công bố tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết xuất ổn định ở mức 120 khung hình trên giây.

Trong bài phát biểu chính ở hội nghị Google Developer Days tại Thượng Hải, Google công bố phiên bản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1. Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter Live, là phiên bản "ổn định" đầu tiên của khung ứng dụng này. 5 Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Đặc điểm chính của Flutter[3] • Ngôn ngữ Dart. Dart là ngôn ngữ hướng đối tượng (OOP), định nghĩa lớp (class defined), thu gom rác (garbage-collected) và được xem như là ngôn ngữ lập trình tối ưu hóa phía client (client-optimized programming language) cho các ứng dụng chạy đa nền tảng.

Được phát triển bời Google, Dart nói chung và Flutter nói riêng được hỗ trợ bởi nhà phát triền lớn mạnh và cộng đồng rộng lớn, nó hỗ trợ interfaces, mixins, abstract classes, reified generics, stactic typing. Dart chủ yếu được sử dụng để phát triền ứng dụng di động, ngoài ra thì nó cũng được sử dụng trong ứng dụng desktop, phát triển hệ thống backend và ứng dụng web application. • Các IDE được khuyến nghị với Flutter là Android Studio, Intellij Idea hoặc đơn giản và phổ biến hơn là Visual Studio Code. • Về cầu nối đối với những ứng dụng di động đa nền tảng, Flutter sử dụng Dart, so với đối thủ lớn nhất hiện giờ là React Native sử dụng Javascript, Flutter đảm bảo được hiệu năng và đảm bảo nó tốt hơn so với React Native.

• React Native và Flutter chia sẻ các mô hình tương tự như trình xử lý sự kiện và mở rộng lớp. • Điểm mạnh nhất của Flutter được giới thiệu chính là Fast Development, Native Performance và dễ dàng tạo xây dựng giao diện bắt mắt, biểu cảm. Ưu, nhược điểm của Flutter[3] Ưu điểm • Ngôn ngữ Dart: Dart - OOP, nó khá dài, nhưng những người quen viết bằng Java / C # sẽ hài lòng với Dart. • Ít phải config khi tạo project mới theo cách thủ công, ngược lại với React Native.

• Chỉ cần tải về Flutter từ git, chạy “flutter doctor”, và nó sẽ cho bạn biết những loại vấn đề bạn có thể có trong hệ thống. Sau đó, tạo một project từ Android 6 Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Studio hoặc bất kỳ IDE nào sau khi cài đặt Flutter Plug-in sơ bộ và start project. Ngoài ra nó còn có Hot-reload giống như trong React-Native. • Hỗ trợ tuyệt vời cho IDE (Android Studio, IDE IntelliJ, VSCode) • Trình điều hướng tích hợp sẵn.

Sau khi tạo ra một ứng dụng trên Flutter, bạn có thể thấy nó có Navigator được xây dựng sẵn. Bạn có thể tạo một route mới mà không cần kết nối bất kỳ thứ gì (không giống như trong RN, nơi bạn cần kết nối bất kỳ package điều hướng gốc nào vv). • Giải pháp quản lý dữ liệu được tạo sẵn, ví dụ trong Flutter này là "Mọi thứ đều có một Widget" cho nó. Có một StatefulWidget đặc biệt, với sự giúp đỡ của nó mà chúng ta có thể quản lý trạng thái widget và thay đổi nó một cách năng động.

Nhược điểm • Có một rào cản lớn cho những người chỉ học JS, hoặc đến từ RN. Do thực tế là Dart được sử dụng với sự thừa kế, đa hình của nó và tất cả các thứ về OOP. • Không có JSX mà tất cả chúng ta đã quen khi làm RN. Nhìn vào tệp Dart trong đó không có phân chia thành template, styling và data, nó trở nên khó chịu.

• Styling là một nhược điểm. Thực tế là không có sự tách biệt thành Styles, templates và controller, có một vấn đề khi mô tả một thành phần thì chúng ta cũng cần mô tả các styles cùng một lúc. • Animation còn khó khăn hơn. Mặc dù nó có một animation tốt, nhưng nó sẽ khó hơn khi tạo hiệu ứng động, không giống như trong RN.

Trong Flutter, chỉ có thừa kế widget với các điều kiện có thể thay đổi (trạng thái) và không thể thay đổi (không trạng thái). Trong khi ở React- Native chúng ta có thể quản lý vòng đời. Ngoài ra, một nhược điểm lớn là thiếu các công cụ để lưu trạng thái của ứng dụng, vấn đề này có thể, tuy nhiên, được giải quyết bằng cách tuần tự hóa trạng thái hiện tại. 7 Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động TỔNG QUAN VỀ GOOGLE FIREBASE Giới thiệu về Google Firebase[4] Firebase là một dịch vụ điện toán đám được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng di động, đơn giản và hiệu quả cao, tương tác tốt với thời gian thực.

Với nhiều dịch vụ chất lượng cao Firebase đã và đang, không chỉ là sự lựa chọn hàng đầu cho các lập trình viên, các công ty khởi nghiệp, mà các công ty, tổ chức lớn có tên tuổi cũng sử dụng Firebase để xây dựng các tính năng, các chương trình mới, cũng như chuyển đổi các dịch vụ trước đây sang hệ thống của Firebase. Cơ sở dữ liệu của Firebase là NoSQL, được tổ chức theo kiểu trees, parent- children. Dịch vụ Firebase Lịch sử của Firebase[4] Firebase (tiền thân là Evolve) được thành lập vào năm 2011. Ban đầu, Evolve chỉ cung cấp cơ sở dữ liệu để các lập trình viên thiết kế các ứng dụng chat.

Tuy nhiên, họ nhanh chóng nhận ra tiềm năng sản phẩm của mình khi nhận thấy các khách hàng không sử dụng cơ sở dữ liệu để làm ứng dụng chat, mà thay vào đó, để lưu các thông tin như game progress. Bộ đôi Lee và Tamplin quyết định tách mảng Realtime ra để thành lập một công ty độc lập – chính là Firebase – vào tháng 4 năm 2012. 8 Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Sau nhiều lần huy động vốn và gặt hái được những thành công nổi bật, Firebase đã được Google để ý. Vào tháng 10 năm 2014, Firebase gia nhập gia đình Google.

Chức năng chính của Firebase[4] Firebase là sự kết hợp giữa nền tảng cloud với hệ thống máy chủ cực kì mạnh mẽ tới từ Google, để cung cấp những API đơn giản, mạnh mẽ và đa nền tảng trong việc quản lý, sử dụng database. • Firebase Cloud Firestore[5] Cloud Firestore là một Realtime Database linh hoạt và dễ mở rộng cho mobile, Web và server được phát triển từ Firebase và Google Cloud Platform. Cũng giống như Firebase Realtime Database, nhưng là phiên bản nâng cấp và mạnh mẽ hơn, Firestore giúp cho việc đồng bộ dữ liệu giữa các ứng dụng phía khách hàng một các nhanh chóng (Realtime) và hộ trợ lưu offline data trong ứng dụng. Firestore đã và đang dần cải thiện những yếu điểm mà người anh tiền nhiệm Realtime Database còn mắc phải như các truy vấn, kiểu dữ liệu,… Cloud Firestore là một cloud-hosted, NoSQL database mà các ứng dụng phía client có thể trực tiếp truy cập thông qua native SDKs.

Nó lưu dữ liệu theo mô hình dữ liệu NoSQL. Dữ liệu được lưu trữ trong các file tài liệu chứa các trường được ánh xạ vào các giá trị. Các file tài liệu này được lưu trữ trong các tập hợp chúng có thể sử dụng nó để tổ chức dữ liệu và truy vấn dữ liệu. Cloud Firestore hỗ trợ rất nhiều kiểu dữ liệu từ đơn giản như String, Integer hay những kiểu dữ liệu phức tạp như các đối tượng lồng nhau.

• Firebase authentication – Hệ thống xác thực của Firebase Có thể dễ dàng tích hợp các công nghệ xác thực của Google, Facebook, Twitter… hoặc một hệ thống xác thực mà tự tạo ra ở bất kì nền tảng nào như Android, iOS hoặc Web. • Firebase storage Có thể lưu trữ dữ liệu trực tiếp trên server của firebase như hình ảnh, video, tập tin một cách dễ dàng. Firebase còn bổ sung Google security để tải lên và tải về các ứng dụng firebase, để lưu trữ hình ảnh, âm thanh, video hoặc nội dung do người dùng tạo ra. 9 Xây dựng hệ thống ứng dụng tìm phòng trọ trên di động Đặc điểm nổi bật của Firebase[4] • Triển khai ứng dụng nhanh Có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase.

Hỗ trợ đa nền tảng giúp thuận lợi và tiết kiệm thời gian trong việc xây dựng ứng dụng đa nền tảng. • Bảo mật Bảo mật tốt do Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức bảo mật SSL. Cho phép phân quyền người dùng database bằng cú pháp javascipt. • Tính linh hoạt và khả năng mở rộng Firebase sẽ giúp đơn giản hóa việc nâng cấp hay mở rộng dịch vụ, cho phép xây dựng server của riêng.

Việc Firebase sử dụng NoSQL, giúp cho database không bị bó buộc trong các bảng và các trường mà có thể tùy ý xây dựng database theo cấu trúc của riêng. • Ổn định Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như không phải lo lắng về việc sập server, tấn công mạng như DDOS. Hoạt động trên nền tảng Cloud giúp việc nâng cấp, bảo trì server diễn ra đơn giản, không cần phải dừng server để nâng cấp như truyền thống.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ