Are you @skilesare or @infu able to point to docs on how to store off chain then run that through the canister?
Right now, I have two JS functions. The one I have for a photo album that uses a flip book function works great, however I’ve found it randomly not populate and in turn displays all of the photos right after each other. Other times it works flawlessly. Images are not the main issue causing my delay…
It’s the video functionality…
Right now my video player works something like this:
/**
* VIDEO GALLERY FUNCTIONALITY (HLS + hls.js)
*
* Builds an adaptive HLS video player optimized for deployment on the Internet Computer (IC).
* Utilizes the HLS (HTTP Live Streaming) format for efficient, chunk-based video delivery.
* Leverages the hls.js library for broad browser compatibility and stable playback.
*
* Features:
* - Seamless HLS playback across all major browsers (Safari native, hls.js for others)
* - Previous/Next navigation controls
* - Clickable playlist sidebar for quick video selection
* - Video counter display (e.g., “1 / 5”)
* - No autoplay — playback begins only when the user presses play
* - Optimized for boundary node asset delivery on the Internet Computer
*/
Before I remove this functionality (stream via chunking), I want to see if this is the preferred method.
Or, is what @skilesare is saying that you upload and host video files on other cloud/decentralized platforms like Cloudflare or Filecoin (which is not a great project/solution imo), and then reference that video’s live public URL in the source code — rather than uploading them to the canister as static files that get rendered directly from the canister and to the browser?
If that is what you are suggesting, then what’s a good way to not store URL information in a way that’s facing the client or being viewed if I open-source the codebase?
I can send direct code/structure of the function if needed. I might need to reach out via Discord or some other method though.
And the file size is only 13 MB – 17 MB…
At first it was working as an .mp4 file in Chrome but then broke in Safari. Then it worked in Safari and not Chrome. So, I tried converting to H265 and streaming with static chunk files, and now the video just does not load in the browser — even using raw URL…
Background on why I’m bringing this solved post/ What I’m doing:
My intent here is to host completely “on-chain,” even the small video file, then make explicit documentation and a walkthrough guide on how to take a standard portfolio — like one off Replit or other vibe-code platforms — for the non-technical individual or new student.
My hope is that I can demonstrate a fairly quick solution to offset hosting costs for these simple (non-dynamic) static sites and make them more secure. This way, users of these platforms can use the Replit or “vibe-code” style IDEs and sandboxes as a pretty good “test net” or local development.
At the very least, it’s a decent interactive learning tool to help ease in the newer dev completely overwhelmed by both the IC tech stack and traditional centralized platforms like AWS, Replit, Render, Firebase, etc., etc….
At the moment, one month of hosting costs on other cloud-based platforms can run around the same as a few months of hosting through a canister. As these expenses continue to rise, and subscription-based platforms increase their monetization of these services, users are going to eventually look for all offsets to help annually — rather than making “short moves” (1 day – 11 months).
Being able to develop an MVP with the help of AI tools like “AI Coding Agents” on different tech stacks, while structuring the app with the IC in mind, will allow for an optimal experience — one that actually enhances web2 vibe coding or sandbox IDEs rather than competing.
After they make their portfolio (most devs do), they can quickly use this documentation to deploy a simple static portfolio app and quickly understand how the IC tech stack works in comparison to those around it, and in web2.