Skip to content

Instagram clone. As the final project of the advanced programming course at SBU on spring 2021

Notifications You must be signed in to change notification settings

mohammadkarbalaee/instagram-desktop-application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instagram desktop app

Developers

Update Galaxy team:

Summary

This project is developed as the final project for our advanced Java programming course at SBU.
Our application is meant to be a template of Instagram desktop application.

Features

  • Graphical User Interface

    contains an impressive GUI, designed and implemented by JavaFX technology

    • login and sign up

    • main feed

    • add post

    • user search

    • profile

    • followers and followings list

    • direct messaging

    • post

    • likes list

    • setting profile picture

    • setting bio

  • Object-orientation

this project is implemented in an absolutely object-oriented approach. since we used Java for this project, we tried to use the full power of Java in terms of object orientation. the project is very well organized and maintainable because every part of the program is developed within a separate package obviously-named. Each package consists of classes and fxml files of its own. we tried to obey the SOLID rules as much as we could in this project.

  • Version Control tools

Our team work was organized and merged and developed upon Git and we made separate branches for different kind of tasks and after implementing an specific part of the project the team members would push the changes and notifying the maintainer of the project to merge their changes after checking their provided code.

  • Team work

The entire project was developed under four main phases

  • 1st phase: designing and building an API
  • 2nd phase: implementing follow,profile,login,sign up features
  • 3rd phase: implementing direct,post,comment,like features
  • 4th phase: adding additional features and testing and debugging the whole project

Each phase very well organized and divided into separate tasks assigned to a developer and having a due date
Task Boards
Git graph
Contributions

  • Database

For this project Mysql database is used for storing data on server.
Here is the schema:

  • Socket Programming

This project consists of two different applications, a client app and a server app developed by the socket programming tools and concpets in Java

  • Multi-threading

To handle numerous clients simultaneously on server-side multi-threading concepts are used. clients are handled by being passed to a threadpool and shared methods between multiple threads are synchronized to avoid the race condition and data loss

  • Documentation

All classes and methods and packages are documented using Javadoc and used by team members during the development process
Link to documentations

Acknowledgements

I myself thank my teammates,Reyhaneh Saffar and Hasan Roknabady ,for this great cooperation and their contributions, also the high-quality codes that they provided and further developed the project.
I also should thank my mentors, Ali Aliabadi and Saeid Cheshmi, for helping me during the Advanced Programming course at SBU.
Finally I thank Prof. Kheradpisheh, the master of this course, for the great and high-quality course that they provided us with.