This directory contains the client-side implementation of our chatApp built with PyQt6.
src/client/
├── components/ # Reusable UI components
├── pages/ # Individual application pages/screens
├── __init__.py
├── client.py # Network client implementation
├── logic.py # Business logic layer TODO: to be combined w/ client.py
├── main.py # Application entry point
├── ui.py # Main window and UI orchestration
├── utils.py # Utility functions
├── chats.json # Local chat history storage TODO: To be removed
└── users.json # Local user data storage TODO: To be removed
main.py
: Application entry point that initializes the PyQt applicationui.py
: Main window implementation with dark theme styling and page managementlogic.py
: Business logic for chat operations, user management, and application stateclient.py
: Handles network communication with the chat server
pages/
: Contains different screens of the application:HomePage
: Main landing pageChatPage
: Chat interfaceLoginPage
: User authenticationUsersPage
: User managementSignupPage
: New user registrationSettingsPage
: Application settings
- Install dependencies:
make install
- Run the application:
make run-client-gui
TODO: To be updated make run-client
once it can communicate to the server.
The application follows these design principles:
- Modular architecture with clear separation of concerns
- Separation of UI logic from business logic
- Component-based UI design using PyQt6
- Dark theme by default for better user experience
- For new UI components, add them to the
components/
directory - For new screens, create them in the
pages/
directory - Update
ui.py
to integrate new pages into the navigation system - Add business logic in
logic.py
- Update data models in
client.py
if needed
Tests for the client application can be found in the tests/client/
directory.