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.
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.
git clone https://github.com/Kvnbbg/Vision-Week-Virtual-Exploration.git
cd Vision-Week-Virtual-Exploration
chmod +x start_app.py
./start_app.py
flutter build web
flutter run -d web
flutter run -d chrome
# 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.)
flutter build windows
flutter build macos
flutter build linux
(Consider applying obfuscation to desktop builds if sensitive logic is present.)
vision_week_db
) and user on your MySQL server.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).sql
files for table creation.
(Example import command: mysql -u youruser -p your_database_name < lib/database/your_schema_file.sql
)public/src/db_config.php
by setting the appropriate environment variables as outlined in that file.public
directory):
php -S localhost:8000 -t public
ARCHITECTURE.md
for more details.The real-time messaging features are handled by a separate WebSocket server.
composer install
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.
flutter test
.composer test
(this executes phpunit
). Ensure you have run composer install
first..github/workflows/ci.yml
). It automatically runs linters and tests on pushes and pull requests to main development branches.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.
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):
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!
This project was created by Kevin MARVILLE for STUDI. Many thanks to STUDI for their support.
For more information, visit kvnbbg.fr.
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).
docker-compose.yml
is located).docker-compose up --build
--build
flag ensures images are built if they don’t exist or if Dockerfiles have changed.docker-compose up -d --build
.http://localhost:8000
ws://localhost:8080
localhost:3306
(credentials are in docker-compose.yml
and used by the PHP services via environment variables).docker-compose down
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.
This project is developed and maintained by Kevin Marville.
Check out my side project, TurboZoo:
A robust deployment strategy is key for delivering updates efficiently and maintaining stability. Consider the following:
Current Considerations (as per project setup):
Recommendations:
db_config.php
). Do not commit sensitive configuration directly to the repository.MAJOR.MINOR.PATCH
) for releases to clearly communicate the nature of changes.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.