Inspiration

We wanted to turn “what if?” into something people could explore. What would your car look like with a different finish or a custom body kit? How would you react if breaking news suddenly shook the stock market?

CarTwin and MarketStorm approach these questions through interactive experiences. CarTwin brings automotive ideas into a visual garage, while MarketStorm turns financial decision-making into a fast-paced strategy game.

What it does

CarTwin is a car customization studio where users can explore 3D vehicles, change paint and material finishes, preview synthesized exhaust sounds, and compare saved builds. Users can enter a UK registration to identify their vehicle and search for a suitable Sketchfab model. After importing and preparing a supported model, they can describe a modification in natural language and generate body-kit geometry using Gemini and Blender.

MarketStorm challenges players to grow a simulated £10,000 portfolio before a five-minute closing bell. Players trade shares across eight fictional companies, respond to market-moving news, place market and limit orders, and track their performance through charts and a leaderboard. Optional Gemini commentary and browser narration bring the market events to life.

How we built it

Both projects use React, Vite, JavaScript, and Tailwind CSS for their interfaces.

For CarTwin, we used Three.js and React Three Fiber to render interactive GLB models inside a garage environment. Node.js services handle vehicle lookup, model importing, and body-kit generation. RegCheck supplies vehicle information, while Sketchfab supplies searchable 3D models. Gemini produces a structured design specification informed by vehicle measurements and reference images; trusted Blender scripts construct and validate the resulting geometry.

For MarketStorm, we built a Python backend using FastAPI and Pydantic. The backend manages market simulation, game timing, orders, holdings, and scoring. Recharts displays price movements and portfolio performance. Gemini adds optional news rewrites and analyst commentary, with local fallbacks so the game remains playable without an API key.

Challenges we ran into

One of CarTwin’s biggest challenges was working with models created by different artists. Their scales, orientations, material names, and mesh structures varied, making consistent customization difficult. A paint change could affect the wrong component, and fitting a body kit required more than simply placing geometry near the vehicle.

We also had to distinguish between identifying a vehicle from its registration and finding an accurate 3D representation. Search results are suggestions, so users need to inspect and confirm their chosen model.

For MarketStorm, the challenge was keeping trading and game state consistent while prices, news, and the countdown changed. Limit orders needed to reserve cash or shares correctly, and pausing needed to freeze the simulation reliably. We used integer-pence accounting to avoid floating-point errors in financial calculations.

Across both projects, integrating separate components under hackathon time pressure required clear interfaces, frequent testing, and careful coordination.

Accomplishments that we're proud of

  • Connecting natural-language modification requests to real, validated body-kit geometry.
  • Bringing imported vehicle models into an interactive customization workflow.
  • Building a complete trading-game loop, from the opening balance to final results and rankings.
  • Implementing working market and limit orders with portfolio tracking.
  • Keeping core experiences usable through bundled models, local simulation, and AI fallbacks.
  • Combining our contributions into two working applications and checking important flows with automated tests.

What we learned

We learned that interactive applications depend on careful state management as much as their visual design. Controls need to produce predictable results, saved configurations need to preserve the right details, and long-running operations need clear feedback.

We also learned how to give AI a useful, bounded role. In CarTwin, Gemini plans within a supported specification while Blender handles geometry. In MarketStorm, Gemini enriches the presentation while the backend controls prices and trading rules.

Working together reinforced the value of agreed data contracts, small integration steps, and testing the complete user journey.

What's next for CarTwin and MarketStorm

For CarTwin, we want to improve vehicle matching, support more model structures, refine material detection, and expand the range of customizable parts. Better attachment controls and fit previews would make generated body kits easier to review. We would also like to introduce licensed engine recordings and richer build sharing.

For MarketStorm, we want to add multiplayer competitions, more market scenarios, adjustable difficulty, and deeper post-game analysis. Educational explanations could help players understand how news, diversification, and order choices affected their results.

For both projects, our next priority is broader user testing and a smoother hosted experience.

Share this project:

Updates

Submission history