Inspiration
I have friends in Ukraine who count among the most curious people I know, yet their schools carried all the passion and none of the budget, and the war only widened that gap instead of closing it. One of them could talk for an hour about how a chemical reaction actually works, while another wanted to learn piano so badly that she spent her evenings watching videos of other people's hands moving across the keys instead of ever placing her own on a real instrument. What they lost was never the theory, since they could read and memorize that on any device, but the actual feeling of being a chemist or a musician, and you cannot know whether you love a field until you have had your hands genuinely inside it, so they were being asked to choose a future they had never once been allowed to touch. LabPocket exists so that the only thing separating a curious student from a real lab becomes nothing more than a browser tab.
What it does
LabPocket is a free browser-based lab covering seven full subjects, and it asks nothing of a student beyond opening a tab, since there is no sign-up, no install, and no account to create. Five of those subjects live inside a 3D lab you manipulate directly with your own hands, so in chemistry an acid and a base genuinely fizz when you combine them and a lit Bunsen burner slid beneath a beaker actually brings the liquid to a boil, in physics wiring a battery to a bulb lights it while opening a switch truly kills the current, and biology, geography, and music round out the set with real organelles and dissection tools, a satellite globe running fifty-two disaster simulations, and a complete eighty-eight-key piano you can actually play. The remaining two subjects open as full-screen creative tools instead, a Desmos-style graphing calculator where you type a function and watch it draw itself while points snap onto the curve wherever you click, and a drawing studio carrying seventy-six tools that each behave like the real medium they represent. Every object a student touches carries a question mark that explains what it is and a Learn More that explains why what they just watched actually happened, and the whole experience runs inside one browser tab on whatever device the student already owns.
How we built it
We built LabPocket in vanilla JavaScript, using Three.js for every 3D scene, the Web Audio API for every sound the app makes, and the Canvas 2D API for the art and math tools, and we did all of it without a framework, a build step, or a backend because every added dependency becomes one more thing that can fail on a slow connection or an aging laptop, which describes exactly the students this project was built for. Every instrument sound is synthesized from scratch rather than sampled from a recording, so a plucked string uses the Karplus-Strong method, trapping a burst of noise inside a delay line exactly one wavelength long to genuinely model a vibrating string, while the piano relies on additive partials tuned with real inharmonicity, since actual piano strings are stiff enough that their overtones sit slightly sharp of where a perfect harmonic series would place them. We declared each natural disaster as a composition of physical effects rather than as a canned animation, so a hurricane becomes nothing more than a vortex combined with rain, wind, and rising water, which is exactly why it behaves nothing like the small dry vortex that makes up a dust devil. Every art tool carries its own values for grain, flow, hardness, and buildup and feeds them through one shared brush engine, and that single engine is why charcoal breaks apart across the tooth of the paper while a technical pen lays down a hard, even line right beside it.
Challenges we ran into
The hardest part of building LabPocket was refusing to fake anything, because it takes very little effort to make a bulb that simply changes color when a student clicks it and a great deal more effort to make one that lights only when it sits inside a circuit that is genuinely closed. Sound created its own set of problems, since we could not ship any sample files and had to generate every instrument mathematically instead, and getting a piano to sound like an actual piano rather than a plain sine-wave beep meant first understanding why real piano strings refuse to vibrate in a perfectly harmonic way. We shipped real bugs along the way and only caught them by actively driving the running app rather than trusting code that merely looked correct on the page, which is how we discovered that sinkholes silently refused to sink because a floor clamp meant to stop objects falling through the lab bench was also blocking the one disaster that is supposed to go below ground, and how we discovered that a switch could be wired into a circuit but never wired back out of one, which meant a student could never actually build a battery connected through a switch to a bulb, even though that circuit is the entire reason a switch exists. Scope became the constant background fight throughout the whole project, since fifty-two disasters, seventy-six art tools, and a hundred and forty tutorials add up to an enormous amount of surface area to keep genuinely working rather than merely listed on a page.
Accomplishments that we're proud of
What makes us proudest is that the details in LabPocket hold up under real scrutiny instead of only looking right from a comfortable distance. The piano is a genuine eighty-eight-key instrument with fifty-two white keys and thirty-six black keys running from A0 all the way to C8, and every single key carries its own true pitch and responds whether a student plays it with the mouse or with the computer keyboard. Guitar strings are mapped to actual standard tuning, E2, A2, D3, G3, B3, and E4, because we wanted the frequencies themselves to be real rather than merely decorative, and the fifty-two disaster simulations behave distinctly from one another in ways that match how the real world actually behaves, so a sinkhole collapses suddenly and deeply while ordinary ground subsidence sinks slowly and only a little. We also checked every one of the hundred and forty tutorials programmatically to confirm that each item they reference genuinely exists inside the app, so no tutorial ever sends a student hunting for something that was never actually there, and the entire project still runs completely offline in a single browser tab with no account required, which was the original promise we set out to keep.
What we learned
We learned just how much real physics hides inside details that look purely cosmetic from the outside, like why charcoal feels grainy under a finger, why a piano sounds warm instead of thin, why a tornado visibly tightens the faster it spins, and why lava crawls slowly across the ground while a pyroclastic flow races far ahead of it. Modeling the actual cause of a behavior instead of faking its surface appearance kept producing noticeably better results throughout the project, and it usually ended up costing us less code in the end rather than more. Testing taught us the most uncomfortable lesson of the whole build, since two of the features we were proudest of sat quietly broken for a long stretch until we actually sat down and measured them instead of simply assuming they worked. Building the whole experience for constrained devices and slow connections also made the app genuinely better for every student who uses it, not only for the students we originally had in mind when we started.
What's next for LabPocket
Right now we are working on making every major and every subject interactive, not only the STEM ones, because the same gap we saw in a chemistry classroom shows up just as clearly in a law school or an architecture studio. We are building a courtroom for law, a patient to diagnose for medicine, and a building to design and keep standing for architecture, alongside fields that almost never get simulated at all, like culinary arts, film, and translation. Every new subject will follow the same rule LabPocket already follows, so nothing is faked and everything responds the way the real thing would.

Log in or sign up for Devpost to join the conversation.