A real-time chat application built with Flutter (Frontend), FastAPI (Backend), and PostgreSQL (Database). Includes modern authentication, encrypted OTP/password flow, biometric login, and persistent chat rooms.
| Layer | Technology |
|---|---|
| Frontend | Flutter |
| Backend | FastAPI (WebSocket) |
| Database | PostgreSQL |
dependencies:
flutter:
http:
shared_preferences:
web_socket_channel:
intl:
local_auth:fastapi
uvicorn
sqlalchemy
psycopg2-binary
python-jose[cryptography] # for JWT
smtplib # for sending emails- JWT-based login + OTP verification (OTP & password hashed in DB)
- SharedPreferences for storing user ID and JWT token
- Password reset with OTP
- Biometric login with
local_auth
- WebSocket-based real-time messaging
- Chat inside private or group rooms
- Create & join rooms
- Persistent messages (PostgreSQL)
- Auto-scroll to latest message
- Last message + timestamp shown on chat list screen
-
SharedPreferencesto store:current_user_id- (planned:
usernamefor better UX)
lib/
├── auth/
│ └── screens/
│ ├── auth_gate.dart
│ ├── forgot_password_screen.dart
│ ├── login_screen.dart
│ ├── otpscreen.dart
│ ├── register_screen.dart
│ └── reset_password_screen.dart
│
├── chat/
│ └── screens/
│ ├── chat_screen.dart
│ ├── chats.dart
│ ├── create_group_screen.dart
│ └── fetch_users.dart
│
├── services/
│ ├── api_service.dart
│ └── biometric_auth.dart
│
└── main.dart
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reloadflutter pub get
flutter runMake sure your backend URL is correctly set in api_service.dart.
Example:
static const baseUrl = "http://<your-localhost-or-tunnel>";- Create DB & Tables (Users, Messages, Rooms, RoomMembers)
- SQLAlchemy handles schema (via
Base.metadata.create_all)
- Token is returned on successful OTP verification
- Stored in SharedPreferences
- Backend validates token on protected endpoints
- Uses
local_auth - User prompted for fingerprint before accessing app if previously authenticated
Built as an individual project for internship learning.
MIT License - feel free to fork & customize.