Skip to main content

Dance Project - Development Documentation

Document Description

The development documentation is designed to outline the development method and to explain some technical aspects.

Technical Instructions

This project will maintain high standards throughout its development process, keeping the software quality and development speed at it’s best. Using Clean Code practices as well as Clean Architecture software design will prevent development from slowing down over time.
To run the project, the machine must have Flutter installed. To do this, follow the instructions shown on this link. If the developer is using Android Studio, he would have to install the Flutter plugin available on the Plugins section of the platform. If the developer is using Visual Studio Code, he would have to install the Flutter plugin available on the Extensions part of the platform.
After this, the developer would need to have access to our google_services.json file and put it in the Android folder or if the developer is using an Apple machine, he would have to put the GoogleService-Info.plist file in the iOS folder, so all of the Firebase services (Authentication and Cloud Firestore) can be up and running. Here is how to set up Firebase on Flutter.
To use all of the project’s packages, the developer needs to run the “flutter pub get” command on the machine’s terminal so that all of the project dependencies are up to date and ready to run.
Since we are going to use the MobX state management, the developer needs to run the following script:
flutter pub run build_runner watch --delete-conflicting-outputs
or
flutter pub run build_runner build --delete-conflicting-outputs
This script needs to be executed on the terminal to update all of the files used in the project as well as generate all of the .g.dart files.

System Requirements

The project will run on Android Devices with API version higher than 19 and iOS devices with API version higher than 10.0. Despite the fact that the minimum iOS version that Flutter supports is 8.0, we are going to use the Firebase server, and the minimum version that Firebase requires is 10.0 or higher. That’s not a problem because most of the iOS devices used today support versions higher than 10.0, knowing that even iPhone 5s can be updated to this software version. For the purpose of keeping the cost down, we will target low-end Android phones for the demo.

Software architecture

We choose Clean Architecture as our coding design because we want to have the most organized code possible in a way that keeps the business logic separated from the UI’s part of the application.
In a long term project (we hope this project will get bigger after the prototype) you will need to have an organized code to be able to scale the features. The Clean Architecture method also includes Test Driven Development; using this technique we are able to anticipate bugs before they end up in the user’s hands.

Management

To deliver our product at the highest possible value, we are going to use the Scrum agile methodology, so we can manage our software development and solve our problems as new tasks will appear. Scrum is the practice of setting weekly or bi-monthly goals. Scrums and the project itself will be managed by Murilo Giordano and evaluated by Mendy Marcus.

Practices

At the end of each day all developers must push all their code to the private GitHub repository even if they have not finalized what they are in the process of working on. If you are an employee at Calm Experts you must follow the company’s clean architecture and security guidelines and rules. If you are connected to this project in any other way, we strongly recommend these security measures to be taken.
Should any questions arise, the project manager is always available to answer them. Each developer will provide a detailed update each week and the manager will provide a summarized update to the client and will maintain the Jira project up to date.

Source code document

We will be using Flutter for frontend development, Dart as the programming language and Firebasefor backend. Google Cloud Platform will be used for the server and GitHub will be our code manager. We will use Google chat to communicate internally and email for any official business questions or requests as well as all external communication such as with the client, suppliers, customers, etc. All documents will be stored and managed on Google Drive.
Firebase has many tools that we can use to ensure that the data is safe and our team knows how to make it as safe as possible.

Help and maintenance

We will make the best product for this project following all the best practices of programming. This means that there won't be many bugs. As this is a prototype, bugs and glitches may occur however the final product will not have any. We will provide 200 hours of maintenance, after which a maintenance agreement will need to be signed. We can also provide services for new features you may want according to a new agreement.

Strategy
We have one overall strategy for completing the prototype but is better managed on a small scale on each Product separately.

Data

There is one database and one structure for both the Dance Console and Dance app. However some of the data utilized in the Dance Project third-partyis from third party API. Below are the sources, structure and all data related information.

Database

In order to save time and keep the focus and resources on developing the prototype we have opted to use Firebase (Cloud Firestore) as the database. While this is not thecost-effective most cost effective option, it is the most efficient for the moment. As soon as the resources are available and/or we start to increase traffic to Dance we will then move our database over to Google Cloud Platform. There are many options that arecost-effective more cost effective and have greater capabilities, however it will be time and resource consuming as it would require us to develop our own infrastructure (e.g. firewalls, APIs, security measures, etc.).

Data Sources

Calm Layouts API: We will be using the Calm Layouts API to enable the arena creation customization and display.
Calm Library API: Since we could not find an API that will provide full details about tickets we will create our own and use it here. This will only be necessary should we want to sell tickets in the app.We will also use the library to store shared information; any information that doesn't belong to the project will be stored in Library, and any business or proprietary data will be kept secured in the Dance project Database.
Banuba APK: We will use Banuba to enable camera filters and even AR shopping features.

Data Structure

  • User
    • Calm Authentication
  • TOURS
    • Id
    • Name
    • List of data IDs (show, files, etc.)
  • SHOWS
    • Id
    • Name
    • Arena Id
    • Date (UTC-based time)
    • List of data IDs (songs, chases, etc.)
  • CHASES
    • Id
    • Name
    • List of sequenced scenes
  • SCENES
    • Id
    • Name
    • List of coordinate-color pair values
    • Time duration
  • SONGS
    • Id
    • Sound track
    • Chase id
  • Devices
    • Device name
    • Manufacturer
    • OS
    • User ID
    • Active (True/False)
    • Access
      • Mic
      • Screen
      • Brightness
      • Battery
    • History (Collection)
    • Seat ID

This concludes the Development Document. To fully understand the work that has gone into creating this document see Dance Project - Research. To have greater insight into a particular Product, see the product’s User Documentation: Dance - User Documentation and Dance Console - User Documentation.