Skip to content

A social media app where users express how they are feeling through a music sample and a short post. Developed Autumn 2024

Notifications You must be signed in to change notification settings

N4fta/VibeCheck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



VibeCheck

A social media app where users express how they are feeling through a music sample and a short post.

Key FeaturesHow To RunGalleryRetrospectiveCredits

demo

Key Features

  • Make posts and express your mood through songs
  • Simple, slick interface
  • Like posts and interact with comments
  • Robust, tested app
  • Infinite scroll dynamically loaded from Database for maximal performance
  • Comprehensive search

How To Run

Docker Compose

To run the application this way, you'll need Docker installed on your computer and the compose.yaml file only.

# In the same folder as the compose.yaml file you downloaded is, run
$ docker compose up

Note If you don't want to create a user, then feel free to use johnny with password password. Very secure, I know XD

Dev mode

To clone and modify this application, you'll need Git, Node.js (which comes with npm), Docker (for the MySQL database), and a Java VM, I recommend the OpenJDK 21 build from Microsoft. From your command line:

# Clone this repository
$ git clone https://github.com/N4fta/VibeCheck.git

For the frontend:

# Go into the frontend folder
$ cd VibeCheck/vibecheck_frontend

# Install dependencies
$ npm install

# Run the Vite app
$ npm run dev

For the database, the easiest way is to use the compose file in the backend folder:

# Go into the backend folder
$ cd VibeCheck/vibecheck_backend

# Start the MySQL service defined in the docker compose
$ docker compose up

Additionally, the container starts with an empty database, so the first time you start it, you should also populate it with some tables and data. This can be done by

# Execute the database-backup.sql script inside the container, this will create the tables needed as well as some users and example posts
$ docker exec -i vbc-mysql mysql -u root -pO3hlB8hciNHmFiLfgDeK vibecheck < .\db\database-backup.sql

Note Passwords are hashed. If you don't want to create a user, then feel free to use johnny with password password. Very secure, I know XD

For the backend:

# Go into the backend folder
$ cd VibeCheck/vibecheck_backend

# Run the Gradle project
$ .\gradlew bootRun

Note The backend should only be run after the MySQL database is reachable, or it will crash since it cannot connect to a database.

Gallery

screenshot

Retrospective

This is currently the project I am most proud of. I could see myself using it in my day-to-day life with some polish and a community, but it still lacks in some aspects.

This project was my first deep dive into a production pipeline. From testing, to GitLab pipelines, to SonarQube results to Docker and deployment. It was a semester full of code adjacent skills that I found extremely useful to learn. In addition to learning Java and JavaScript properly for the first time. And working with a real API for once. But this also revealed a big concern: security.

As the infinite universe expands, so does its attack surface.

In this specific project, security was not required, so, for example, my SQL DB password is in the Docker compose file. But if it was, I would need to hide it in Environment variables and copy these to all the machines in the pipeline. I can see this getting tedious very quickly with a big team. And that is just the start, Rest APIs are also vulnerable to attacks or misconfiguration, and my website also needs to be protected from threats like XSS. And ideally I should be careful of, and possibly review, all the packages I used.

That is something to consider for next time.

Credits

This software uses the following open source packages:



Created by myself at Fontys.

My Links

neo-dev.org  ·  GitHub @N4fta

About

A social media app where users express how they are feeling through a music sample and a short post. Developed Autumn 2024

Topics

Resources

Stars

Watchers

Forks