Skip to content

Latest commit

 

History

History
208 lines (175 loc) · 9.9 KB

README.md

File metadata and controls

208 lines (175 loc) · 9.9 KB

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 protected]
        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!