Vision-Week-Virtual-Exploration

Vision Week

Play Live 🚀

Logo

Contributors Issues Forks Stars License

Overview

Vision Week is an innovative web and mobile application offering a unique virtual zoo experience through VR headsets. Explore various paths with curated video content at each point of interest, available through a monthly subscription.

Vision Week est une application web et mobile innovante offrant une expérience de zoo virtuel unique avec des casques VR. Explorez divers chemins avec du contenu vidéo à chaque point d’intérêt, accessible via un abonnement mensuel.

Presentation

About the Project

Vision Week ran from March 1, 2024, to July 1, 2024. It seamlessly combines virtual exploration with real-world interactions, drawing inspiration from Apple Vision Pro and Meta.

Vision Week s’est déroulé du 1er mars 2024 au 1er juillet 2024, combinant une exploration virtuelle avec des interactions réelles, inspiré par Apple Vision Pro et Meta.

For a detailed overview of the project’s architecture, please see ARCHITECTURE.md.

Table of Contents

Features

Technologies

Prototype

Installation

Installation Process

Prerequisites

Steps

  1. Clone the repository:
    git clone https://github.com/Kvnbbg/Vision-Week-Virtual-Exploration.git
    cd Vision-Week-Virtual-Exploration
    
  2. Run the Application:
    • Alternative:
       chmod +x start_app.py
       ./start_app.py
      
    • Web:
      flutter build web
      flutter run -d web
      
    • Web Mobile:
      flutter run -d chrome
      
    • Android/iOS (Release with Obfuscation): For enhanced security, build your release versions with obfuscation:
      # For Android APK
      flutter build apk --obfuscate --split-debug-info=./build/app/outputs/symbols
      # For Android App Bundle
      flutter build appbundle --obfuscate --split-debug-info=./build/app/outputs/symbols
      # For iOS
      flutter build ios --obfuscate --split-debug-info=./build/app/outputs/symbols
      

      (Note: Adjust --split-debug-info path as needed.)

    • Desktop:
      flutter build windows
      flutter build macos
      flutter build linux
      

      (Consider applying obfuscation to desktop builds if sensitive logic is present.)

Running the Backend

  1. Install PHP:
    • Download and install from php.net.
  2. Configure Database (MySQL):
    • Create a new database (e.g., vision_week_db) and user on your MySQL server.
    • Import SQL Schemas: You will need to import the table structures. SQL files are located in the lib/database/ directory. This includes:
      • zoo.sql (example, if it contains main app schema)
      • animals.sql (example)
      • videos.sql (example)
      • messaging_schema.sql (for the new messaging features)
      • And any other relevant .sql files for table creation. (Example import command: mysql -u youruser -p your_database_name < lib/database/your_schema_file.sql)
    • Update the database credentials in public/src/db_config.php by setting the appropriate environment variables as outlined in that file.
  3. Start the HTTP API Server (Slim Application):
    • Navigate to the project root directory.
    • Ensure PHP is installed and accessible.
    • Start the server (which serves from the public directory):
      php -S localhost:8000 -t public
      
    • API Documentation: As API endpoints are developed in the Slim framework, they should be documented using OpenAPI (Swagger) specifications. Refer to ARCHITECTURE.md for more details.

Running the WebSocket Server (for Real-time Messaging)

The real-time messaging features are handled by a separate WebSocket server.

  1. Ensure Composer Dependencies are Installed: If you haven’t already, install PHP dependencies:
    composer install
    
  2. Start the WebSocket Server: Navigate to the project root directory and run:
    php server/websocket_server.php
    

    This will typically start the server on port 8080 (as configured in the script). Check the console output for the exact port.

    Note: This server needs to be running alongside the main web server (PHP Slim application) for messaging features to work.

Testing & CI

Contributing

We welcome contributions to improve this project! Feel free to fork the repository and submit pull requests with your enhancements.

Refer to our CONTRIBUTING guide for more details.

Future Development & MVP Focus

The goal is to deliver a compelling Minimum Viable Product (MVP) that validates the core virtual zoo experience and subscription model. Future development will be prioritized accordingly:

Core MVP Features (Must-Haves):

Post-MVP Enhancements (Should/Could-Haves, for iterative development):

User Documentation

To ensure a positive user experience, especially for the novel VR interactions, consider:

Your sponsorship helps cover hosting, domain registration, and development tools.

Read more on SPONSORING Vision Week.

Thank you for your support!

Acknowledgements

This project was created by Kevin MARVILLE for STUDI. Many thanks to STUDI for their support.

Learn More

For more information, visit kvnbbg.fr.

Contributors

GitHub contributors

We appreciate all contributors who have helped improve this project.

For a consistent development environment, you can use Docker and Docker Compose to run the backend services (Slim API, WebSocket Server, MySQL Database).

Prerequisites

Steps

  1. Navigate to the project root directory (where docker-compose.yml is located).
  2. Build and start the services:
    docker-compose up --build
    
    • The --build flag ensures images are built if they don’t exist or if Dockerfiles have changed.
    • To run in detached mode (in the background), use docker-compose up -d --build.
  3. Accessing services:
    • Slim API: http://localhost:8000
    • WebSocket Server: ws://localhost:8080
    • MySQL Database: Connect using a MySQL client to localhost:3306 (credentials are in docker-compose.yml and used by the PHP services via environment variables).
  4. Stopping the services:
    docker-compose down
    
    • To stop and remove volumes (like mysql_data): docker-compose down -v

Note on Database Initialization: The docker-compose.yml for mysql_db can be configured to automatically import .sql, .sql.gz, or .sh scripts placed in a directory mounted to /docker-entrypoint-initdb.d in the MySQL container. You might want to copy your schema files (e.g., from lib/database/) into a dedicated docker-init-db/ folder in your project root and then add this volume mount to the mysql_db service in docker-compose.yml:

# In docker-compose.yml, under services.mysql_db.volumes:
# - ./docker-init-db:/docker-entrypoint-initdb.d

This will ensure your database schema is created when the MySQL container starts for the first time.

Author / Credits

This project is developed and maintained by Kevin Marville.

Side Project for Fun

Check out my side project, TurboZoo:

Deployment Strategy

A robust deployment strategy is key for delivering updates efficiently and maintaining stability. Consider the following:

Current Considerations (as per project setup):

Recommendations:

Note on Current Deployment Section in README: The current “Deployment” section mentions Netlify (good for Flutter web) and Back4App (for Docker containers - could host the PHP backend). The “Alternative Deployment Options” for Vercel also suits Flutter web. This strategy should be expanded with CI/CD and other best practices mentioned above. The reference to “Node.js application” for Back4App/Vercel should be updated if the primary backend is PHP.