# Projet-AcLab The concept of the app would be to offer a solution to people who want to watch movies together but can't agree on the movie. Similarly to Tinder, people would swipe through a list of films and when a match would occur they'd be notified. The list of film can be based on any film available on any streaming platform (ex : Netflix, Disney+, Amazon Prime...), filtered (type of film, duration, minimum note on review site) or not. Of course the implementation of Streaming-platform-linked features will require the use of external APIs or an open movie DB. ## How does the app work ? If we suppose that everyone of the group has the app installed on their mobile phone. One of them would first create a room and give the code to the others so they may join the room. Then, they shall proceed to choose which platform they would want to see the film on (Eg : Disney+, Netflix or even a film that is not on these platform) (*N.B: Multiple platforms/services can be chosen*). Then, if they want to, they can filter with a vote which categories of movie they would like to see in priority (Eg: Action, Humor, SF..). Once the filtering done they would be able to launch the process which means that the app will propose to everyone a set of movies based on filters and platforms selected then they would be able to swipe (left or right) if they want to see it or not. If there's a match which means everyone wants to see the film, the process stop and the app would show the movie detail and the platform they can see the film on. If there's not a match the process would continue. ## Prerequisites ## Technologies ### What are we using ? * [Spring-Boot](https://spring.io/projects/spring-boot) for the backend API * [Flutter](https://flutter.dev/) for the frontend * [MongoDB](https://www.mongodb.com) for the data base * [Docker](https://www.docker.com) for the DevOps * [AndroidStudio](https://developer.android.com/studio) for the emulation ### => Why these choices ? #### Flutter We've chosen Flutter as our frontend framework because it's designed for fast development and comes with some customizable widgets and the possibilty to use hot reload. Finaly the most important feature with Flutter is Hybrid development, meaning it allows to develop both for ios and Android. Flutter also integrates intern development tools such as CI and test tools whereas react-native doesn't #### Spring Boot Spring boot is a Java framework, as we already all know a little bit of Java, plus we have a course about at the University, using it in this project is a great opportunity to train our skills on this framework. Also there are lots of libraries that could be useful. Furthermore, Java is statically-typed (type-safety) and has a good support for multi-threading. The framework also promote a long-term support and maintabillity. #### MongoDB MongoDB is an open-source document database built on a scale-out architecture. We've chosen MongoDB as our Database for this project because MongoDB has a worldwide community of developers and consultants, so it is easy to get help, his document data model is a powerful way to store and retrieve data that allows developers to move fast. Moreover, MongoDB supports and hybrid and multi-cloud applications. #### Docker #### AndroidStudio ### => Why not others techs ? ### Front #### React Native The major competitor to Flutter is react-native. One of the main reason we haven't chosen r-n over flutter is because it deals with a javascript bridge making it less smooth and efficient than flutter with their full native components. Furthermore, #### Cordova Although Cordova allows devs to deploy their apps on multiple platforms (desktop, mobile, web) it hasn't native parts (wrapped in web) and therefore is very slow compared to what we have today. #### Ionic Almost same as Cordova, plus it's not free ### Back #### SQL Databases Any sql database would have forced us to create sql scripts and would have taken some time to implement while mongoDB ## Running the app ## Others ### Authors * [@Galimede](https://github.com/Galimede) (Mathieu Degand) * [@Un-dev](https://github.com/Un-dev) (François Lannoy) * [@Verzelea](https://github.com/Verzelea) (Arthur Verzele) * [@Skiadram](https://github.com/Skiadram) (Neel Coffin) * [@sipe-daniel](https://github.com/sipe-daniel) (Daniel Sipe) * [@KheliaNibaruta](https://github.com/KheliaNibaruta) (Khelia Niburata) ### Journal [Project's Journal](https://github.com/Un-dev/Projet-AcLab/tree/main/Journal)