LetsTalk is a Java Swing desktop chat and photo-sharing application backed by a MySQL relational database. The repository includes the application source code, database scripts, ERD/report artifacts.
| Layer | Technology |
|---|---|
| UI | Java Swing |
| Application | Java 8, Maven |
| Persistence | JDBC |
| Database | MySQL |
| Media handling | Java ImageIO, BLOB storage |
.
+-- src/main/java
| +-- Constants
| +-- Helper
| +-- JDBC
| +-- Panels
| +-- TableStruture
| +-- Thread
| +-- Main.java
+-- src/main/resources/Image
+-- document
| +-- LetsTalk Data Script.sql
| +-- LetsTalk Query List.pdf
| +-- LetsTalk Tables Script.pdf
| +-- LetsTalkERD.pdf
| +-- report.pdf
| +-- screenshots
+-- pom.xml
+-- LetsTalk_Executable.jar
- User registration and login
- Profile editing with avatar upload
- Friend management and group creation
- One-to-one chat history retrieval
- Text and image message sending
- Emoji ownership and selection
- Photo post upload and browsing
- Analytical SQL queries used for project reporting, such as average user age by gender and users with complete friendship coverage
For the full usage report, see document/report.pdf.
The project is organized around three main layers:
Panels: Swing UI screens and interaction flows.JDBC: database connection and query operations.TableStruture: Java model classes that map to database tables.
Typical chat flow:
MainPanelmanages the current application state.ChatSelectPanelchooses a friend conversation.ChatPanelrenders messages and sends new messages.Insertwrites message, text/image subtype, and communication event rows.Readloads conversation history and enriches it with sender and timestamp data.MessageReceiverrefreshes the active conversation periodically.
Prerequisites:
- JDK 8 or newer
- Maven
- MySQL 8.x
Create a MySQL database named letstalk, recreate the schema from document/LetsTalk Tables Script.pdf, then load the seed data from document/LetsTalk Data Script.sql if you want the demo records.
Configure the database connection with environment variables:
$env:LETSTALK_DB_URL="jdbc:mysql://localhost:3306/letstalk"
$env:LETSTALK_DB_USER="letstalk"
$env:LETSTALK_DB_PASSWORD="your-password"Build and run:
mvn clean package
java -jar target/LetsTalk-jar-with-dependencies.jar- Add password hashing instead of storing raw passwords.
- Replace polling refresh with WebSocket or server-push messaging.
- Add automated tests around JDBC operations with a local test database.
- Move image resizing and file conversion into a reusable media service.
- Add schema SQL as a plain
.sqlfile instead of relying on PDF artifacts. - Introduce a clearer MVC or service-layer boundary between Swing panels and persistence code.
Built by Sibei Zhou, Gray Keng, and Lester Li.




