Skip to content

A movie tickets booking and management application using Flutter and NestJS. Flutter BLoC pattern and RxDart, rx_redux, stream_loader for state management. Firebase authentication, socket.io. Backend using NestJS, MongoDB database and Neo4j. Recommendation using Neo4j database and Collaborative filtering via Cypher query. Movie ticket booking fl…

License

Notifications You must be signed in to change notification settings

hoc081098/Movie-Ticket-Booking

Repository files navigation

Movie-Ticket-Booking

A movie tickets booking and management application using Flutter and NestJS.

All Contributors

Codacy Badge Hits

Features

  • Flutter BLoC pattern and RxDart, rx_redux, stream_loader for state management.
  • Firebase authentication, socket.io.
  • Backend using NestJS, MongoDB database and Neo4j.
  • Recommendation using Neo4j database and Collaborative filtering via Cypher query.

Directory structure

project
│   README.md
│
└───Backend
│   └───main                   <- [Backend]
│       │   ...
│       │   ...
│   
└───Docs
│   │   Database.zip
│   │   Diagram.png
│   │   diagram_sql.png
│
└───MobileApp
│   └───datn                   <- [User mobile app]
│   │   │   ...
│   │   │   ...
│   │
│   └───movie_admin            <- [Admin, staff mobile app]
│       │   ...
│       │   ...
│
└───Screenshots
    │   Screenshot_add_card.png
    │   Screenshot_add_comment.png
    │   ...

Setup and run

Click to expand
  • Download APK

  • Setup and run

    • Backend (You can use my url: https://datn-081098.herokuapp.com/)

      • Install Node.js, NestJS

      • Install MongoDB, Neo4j

      • Create Stripe secret API key, Create MovieDb api key

      • Create MongoDB database, (eg. movieDb), and create Neo4j database.

      • Start MongoDB and Neo4j.

      • Create .env file ./Backend/main/.env has following structure:

        MONGODB_URL=mongodb://localhost:27017/movieDb
        MOVIE_DB_API_KEY=movie_db_api_key
        STRIPE_SECRET_API=stripe_secret_api_key
        EMAIL=your_email@gmail.com
        EMAIL_PASSWORD=your_email_passwrod
        NEO4J_URL=bolt://localhost:7687
        NEO4J_USER=neo4j
        NEO4J_PASSWORD=password
      • Installation dependencies

        $ npm install
      • Running the Backend app

        # development
        $ npm run start
        
        # watch mode
        $ npm run start:dev
        
        # production mode
        $ npm run start:prod
      • Seed data (Put headers in your request Authorization: Bearer {{token}}, token can be get from Mobile App after successfully login).

        • Movies: POST http://localhost:3000/movies/seed.
        • Theatres: POST http://localhost:3000/theatres/seed.
        • Seats: POST http://localhost:3000/seats/seed, body: {"id": theatreId}.
        • Show times: POST http://localhost:3000/show-times/seed.
        • Tickets: POST http://localhost:3000/seats/seed-tickets.
        • Transfer data from MongoDB to Neo4j: POST http://localhost:3000/neo4j/transfer.
        • Comments (optional): POST http://localhost:3000/comments/seed.
        • Promotions (optional): POST http://localhost:3000/promotions/seed.
    • Flutter

      • Install Flutter.
      • Using stable channel:
        ❯ flutter channel stable
        ❯ flutter upgrade
      • Flutter version:
        ❯ flutter --version
        Flutter 2.0.0 • channel stable • https://github.com/flutter/flutter.git
        Framework • revision 60bd88df91 (8 days ago) • 2021-03-03 09:13:17 -0800
        Engine • revision 40441def69
        Tools • Dart 2.12.0
      • Install all the packages by:
        ❯ flutter packages get
      • Create .env file ./MobileApp/datn/.prod.env and ./MobileApp/movie_admin/.env has following structure:
        BASE_URL=datn-081098.herokuapp.com
        WS_URL=https://datn-081098.herokuapp.com/
        WS_PATH=/socket
        PLACES_API_KEY=your_places_api_key
      • Run app on real devices or emulator by:
        ❯ flutter run

Screenshots

User mobile app

View Screenshots

Neo4j Graph

View Images


Collaborative filtering


Jaccard index (Jaccard similarity coefficient)


Weighted content

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Petrus Nguyễn Thái Học

💻 📖 🚧

Phong

💻

Gunasekhar Ravilla

🐛 🤔

This project follows the all-contributors specification. Contributions of any kind welcome!

About

A movie tickets booking and management application using Flutter and NestJS. Flutter BLoC pattern and RxDart, rx_redux, stream_loader for state management. Firebase authentication, socket.io. Backend using NestJS, MongoDB database and Neo4j. Recommendation using Neo4j database and Collaborative filtering via Cypher query. Movie ticket booking fl…

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published