Simon Lim (tech lead) | @nasaku898 |
---|---|
Émilie Martin | @emilie-martin |
Daniela Venuta | @daniela-venuta |
Minh-Tam Do | @mint47 |
Luc Nguyen | @1999lucnguyen |
Karin Kazarian | @Karin-kazarian |
This is a social media project based on the main features of Instagram.
This project aims for us to learn the basics of the industrial software development process and was created for the course SOEN341 - Software Processes at Concordia University.
This application is intended to implement the same core features of Instagram, such that the user is able to post a picture, follow another user, and be allowed to comment under posted pictures. The project guideline also called for the implementation of additional features.
- User Service (Registration, Login and Account Management)
- Posting pictures (if registered and logged in)
- Liking (posts & comments)
- Following other users
- Commenting (edit & delete)
- Home feed (containing posts of followed users)
- User statistics (followers, following, post count)
Frontend | Backend |
---|---|
JavaScript | Java |
React | Spring Boot |
SCSS | Maven |
MySQL | |
Mockito |
Note: Travis CI was used as Continuous Integration (CI) tool.
The client is prompted to create an account through the registration module.
Once a user has created an account, they can log in through the login module.
Once logged in, a user can upload a picture through the upload module.
The uploaded pictures will appear on the corresponding users' feed.
The uploaded pictures are sorted right to left from most dated to most recent, organized into roughly equal-heighted columns.
Once posted, an uploaded picture can be interacted with in two distinct ways: commenting and liking.
To leave a comment, a logged-in user must simply input text in the bottom-right area designed to do so and, once complete, publish their comment to the post by clicking the
POST
at the bottom-right of the post itself.
If a user likes a post or a comment (from another user or their own) they can choose to 'like' it by clicking the moon icon. When a post or comment is liked, the icon will 'light up' and beside it, the number of likes will be displayed.
At any time, a logged-in user can edit or delete their comments, be it on their own posts on another users' post. If the post belongs to the logged-in user, they also have the possibility of removing comments left by other users.
Once logged in, a user can edit their own information, from profile to account. This encompasses display name, biography, email, password, and birthday.
Once logged in, a user can follow another user. To do so, they must search a pre-existing user-name in the search bar and hit the
Search
button. If the username does not exist an error will pop up stating so, otherwise the specified user account will be shown. If the account isn't already being followed by the logged in user, the user will be able to follow the specified user. Otherwise, they will be able to unfollow them. The follower count will be adjusted accordingly. It is to note that is a user attempts to follow themself, an error will pop up.
All written tests succesfully pass when the code is run
React is a JavaScript library that boasts component reusability and is greatly used for frontend purposes.
For this project, React was bootstrapped with Create React App.
More about React
More about Create React App
Running the npm start
command will automatically start the application and open it in the user's browser.
If the project doesn't immediately open the application page, it can also be accessed through localhost:3000
.
Running the npm test
command will run all test suits in 'watch mode'.
Watch mode implies that when any part of the code is modified, the modified test suite will re-run.
Read more
Running the npm build
command builds the app for production.
It correctly bundles React in production mode and optimizes the build for the best performance.
Read more
Spring Boot is an open source Java-based framework used to create a microservice. It is developed by Pivotal Team and is used to build stand-alone and production ready spring applications.
Travis CI is a hosted continuous integration service used to build and test software projects hosted at GitHub.