🧭 Topic: Final Project
Quick Overview :
This topic presents the final project for the Advanced Programming course: building a desktop social media application inspired by X (formerly Twitter) using Java, JavaFX/Swing, and PostgreSQL/MySQL. Students work in teams to develop a complete client-server application with real-time features.
Final Project Specification
- [Download PDF - Project Specification](https://drive.usercontent.google.com/u/0/uc?id=1qo1IG_4Yb2uJ8BRU-w6hmvt-Hse9z_KP&export=download)📌 Covered in This Topic
Project Overview
- Build a desktop social media application inspired by X (formerly Twitter)
- Tech Stack: Java, JavaFX/Swing for GUI, PostgreSQL/MySQL for database
- Architecture: Client-server with JSON-based communication protocol
- Goal: Create a functional social networking platform with tweets, follows, likes, replies, and personalized feeds
Educational Objectives
- Developing client-server applications using Java sockets
- Applying object-oriented design principles
- Designing and implementing PostgreSQL/MySQL databases
- Using JDBC/ORM with parameterized queries
- Building graphical user interfaces with JavaFX/Swing
- Creating JSON-based communication protocols
- Implementing multithreading for concurrent client support
- Using Git and collaborative software development practices
- Producing technical documentation (ERD, architecture diagrams)
Main Tasks (Mandatory Features)
3.1 Client-Server Architecture
- Central server manages all users, tweets, media, and relationships
- Multiple clients connect simultaneously
- All persistent data stored centrally in PostgreSQL/MySQL
- JSON-based protocol for client-server communication
- Server supports concurrent connections using multithreading
- Real-time tweet delivery to connected users
- Real-time updates for likes, follows, notifications are bonus features
3.2 User Management
- User Registration (unique username, email, password)
- User Login / Logout with session management
- Password Security (hashing, validation)
- Profile Creation & Editing (display name, bio, profile picture)
- Avatar Upload & Display
- Profile Viewing (personal and other users)
3.3 Tweets
- Create Tweets (deliver to followers)
- View Tweets (content, author, timestamp, media)
- Delete Tweets (user’s own tweets)
- Timestamp Tracking
- Tweet Details & Replies
- User Tweet History
3.4 Tweet Interactions
- Replies (respond to tweets)
- Threaded Conversations (organized reply chains)
- Retweets/Reposts (share existing tweets)
3.5 Hashtags
- Automatic Detection within tweet text
- Hashtag Search
3.6 Media
- Image Attachments to tweets
- Multiple Images per tweet
- Image Previews in timeline
3.7 Profile Enhancements
- Banner Images for profile headers
- Profile Statistics (tweet, follower, following counts)
3.8 Social Features
- Follow / Unfollow Users
- Followers List & Following List
- Follower Count & Following Count
3.9 Likes
- Like / Unlike Tweets
- Like Counts on each tweet
3.10 Feed
- Personalized Timeline (user’s tweets + followed users’ tweets, chronological)
- Real-Time Tweet Delivery (no manual refresh required)
3.11 Search
- User Search (username or display name)
- Profile Navigation from search results
- Tweet Search (keywords)
- Hashtag Search
Bonus Features
- Direct Messaging (private communication)
- Quote Tweets (repost with commentary)
- Tweet Editing with Edit History
- User Blocking / Muting
- Verification Badge
- Notifications (real-time, new followers, likes, tweets)
- Suggested Users to Follow / Hashtags
- Hashtag Following / Trending Hashtags
- Poll Creation and Voting
- Pinned Tweets / Scheduled Tweets
- Video Attachments / GIF Support
- Image Full-Size Viewing
- Profile-Specific Search
- Character Limit Enforcement (like Twitter/X)
- Dark Mode / Theme Customization
- Responsive UI
- Creativity Bonus: Original, unexpected, or delightfully unique features
Documentation Requirements
README.md (User-Facing)
- Project Title
- Table of Contents
- Descriptions (what the project does and why)
- Usage (with code examples)
- Demo/GIFs/Images
- Credits (contributors, libraries, dependencies)
- Changelog (version changes)
- Contact Information
Report.md (Technical Documentation)
- System Architecture: Client/server components, communication flow, modules, architectural patterns (with diagrams)
- Database Design: ERD, major entities and relationships, SQL DDL scripts
- Object-Oriented Design: Class diagrams (UML), key classes and responsibilities, inheritance/composition, design patterns used
- AI Usage Disclosure: AI tools/models used, purpose, extent, examples, how generated content was reviewed/modified
Project Roadmap & Timeline
Phase 0 — Setup & Planning
- GitHub repo, branching strategy, project board
- Tech stack versions (Java, JavaFX, PostgreSQL, Gson, JDBC)
- JSON communication protocol design
- Database ERD + local PostgreSQL setup + DDL scripts
- Skeleton server (socket listener + thread pool) and client
- Deliverable: Server accepts connection, client sends “ping”, server responds; empty DB schema created
Phase 1 — Core Backend & Authentication
- User Registration (unique username/email, hashed passwords)
- User Login/Logout, session management
- Password validation rules
- Basic profile creation
- Deliverable: Users can register, log in, log out; multiple clients connect simultaneously
Phase 2 — Tweets & Feed
- Create/View/Delete Tweet, timestamp tracking
- User Tweet History
- Chronological feed (basic timeline)
- Real-time tweet delivery to connected followers
- Deliverable: Users can post tweets and see them in a feed
Phase 3 — Social Graph & Interactions
- Follow/Unfollow, Followers/Following lists + counts
- Personalized feed
- Likes/Unlike, Replies (basic thread view), Retweets
- Deliverable: Core social network + interactions fully working
Phase 4 — Final Features, Polish & Documentation
- Hashtags (detection + search), Image attachments (basic support)
- Search (users + tweets)
- UI polish, bug fixing, multi-client testing
- README, ERD, SQL scripts, Generative AI usage report
- Deliverable: Fully working, documented, submission-ready project
Bonus (Time Permitting)
- Dark mode, character limit, blocking/muting, pinned tweets, polls, GIF/video, real-time notifications
Key Notes:
- Backend + frontend developed in parallel in every phase
- Documentation updated continuously, not at the end
Useful Tools & Packages
- UUID: Generate unique IDs for objects
- Scene Builder: Visual layout tool for JavaFX FXML design
- JavaFX: Modern GUI library with CSS styling
- PostgreSQL: Open-source relational database
- Gson: Java-to-JSON serialization/deserialization
- BCrypt: Secure password hashing
Evaluation Criteria
Functionality (All Required Features)
- All required features fully implemented
- Application runs without crashes
- Core logic for user management, tweeting, social features, proper data storage
Code Quality & OOP
- Proper application of OOP principles (encapsulation, inheritance, polymorphism, abstraction)
- Clean, maintainable, readable code
- Consistent Java naming conventions
- Comments for complex logic
JavaFX GUI
- User-friendly and intuitive interface
- Responsive UI interactions
- Proper layout and clear information display
Database Design & Integration
- Efficient and logical database schema
- Secure and correct JDBC usage
- Proper data handling between app and database
Version Control & README
- Consistent Git usage with meaningful commits
- Clean branching strategy
- Complete README.md
Bonus Features
- Additional features beyond requirements
- Evaluated on complexity, implementation quality, and practical value
Submission Requirements
- GitHub Repository: Complete source code, commit history showing contributions, final develop branch merged into main
- README Documentation: Project overview, setup instructions, feature descriptions, usage guide
- Project Report: System architecture, database design (ERD + DDL), UML diagrams, AI usage disclosure
- Note: Keep repository private; grant access to teammates and mentor only
🛠️ Final Project
📋 Project: Twitter/X Clone
- No provided repository – teams create their own repositories
- Team Size: Groups of 3 (as specified earlier in course)
- Deadline: To be announced separately
- Evaluation: Functionality (50%), Code Quality & OOP, JavaFX GUI, Database Design & Integration, Version Control & README, Bonus Features
🌐 Additional Resources
- UUID in Java
- JavaFX Scene Builder
- JavaFX Learning Playlist
- PostgreSQL SQL Tutorial
- Gson Serialization Guide
- BCrypt Password Hashing
⏩ Navigation
Tip :
The final project is your opportunity to showcase everything you’ve learned! Start simple – get the client-server connection working first, then add features incrementally. Follow the suggested roadmap and develop backend and frontend in parallel. Documentation is not an afterthought – update README and report continuously. Use meaningful Git commits and a clean branching strategy. Remember, a correct, working core is worth more than broken bonus features. Good luck, and have fun building something awesome! 🚀