diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..71ee1e6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +MIT License + +Copyright (c) 2026 La Fabrik Durable + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the software, and to permit persons to whom the software +is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of this software. + +THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. \ No newline at end of file diff --git a/README.md b/README.md index 99a615a..018fb4d 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,108 @@ An interactive 3D web experience for La Fabrik Durable — a low-tech repair and transformation service in Altera, a post-capitalist city rebuilt in 2039. Players step into the role of a newly onboarded technician and experience a day at the service: repairing an e-bike, fixing a power grid, and upgrading a vertical farm's irrigation system. -Built with React 19, TypeScript, and Vite. +## 📦 Tech Stack -## 🔗 Ressources - -| Techno | Doc | +### Build & Language +| Package | Doc | |--------|-----| -| Three.js | https://threejs.org/docs/ | -| React Three Fiber | https://docs.pmnd.rs/react-three-fiber/getting-started/introduction | -| Drei | https://drei.docs.pmnd.rs/getting-started/introduction | -| Rapier (physique) | https://rapier.rs/docs/ | -| R3F Rapier | https://github.com/pmndrs/react-three-rapier | -| Zustand | https://zustand.docs.pmnd.rs/learn/getting-started/introduction | -| GSAP | https://gsap.com/docs/v3/Installation/ | -| Postprocessing | https://github.com/pmndrs/postprocessing | -| r3f-perf | https://github.com/utsuboco/r3f-perf | -| Vite | https://vite.dev/guide/ | -| AnimationMixer | https://threejs.org/docs/#api/en/animation/AnimationMixer | \ No newline at end of file +| [TypeScript](https://www.typescriptlang.org/docs/) | https://www.typescriptlang.org/docs/ | +| [React](https://react.dev/learn) | https://react.dev/learn | +| [Vite](https://vite.dev/guide/) | https://vite.dev/guide/ | +| [ESLint](https://eslint.org/docs/latest/) | https://eslint.org/docs/latest/ | +| [Prettier](https://prettier.io/docs/) | https://prettier.io/docs/ | + +### 3D Engine +| Package | Doc | +|--------|-----| +| [Three.js](https://threejs.org/docs/) | https://threejs.org/docs/ | +| [@react-three/fiber](https://docs.pmnd.rs/react-three-fiber/getting-started/introduction) | https://docs.pmnd.rs/react-three-fiber | +| [@react-three/drei](https://pmndrs.github.io/drei) | https://pmndrs.github.io/drei | +| [@react-three/rapier](https://rapier.rs/docs/) | https://rapier.rs/docs/user_guides/javascript/ | +| [@react-three/postprocessing](https://github.com/pmndrs/postprocessing) | https://github.com/pmndrs/postprocessing | +| [GSAP](https://gsap.com/docs/v3/Installation/) | https://gsap.com/docs/v3/ | + +### State +| Package | Doc | +|--------|-----| +| [Zustand](https://zustand.docs.pmnd.rs/) | https://zustand.docs.pmnd.rs/ | + +### Performance & Effects +| Package | Doc | +|--------|-----| +| [r3f-perf](https://github.com/utsuboco/r3f-perf) | https://github.com/utsuboco/r3f-perf | +| [AnimationMixer](https://threejs.org/docs/#api/en/animation/AnimationMixer) | https://threejs.org/docs/#api/en/animation/AnimationMixer | + + +## Architecture +la-fabrik/ +├── public/ +│ ├── models/ +│ │ ├── map/ +│ ├── textures/ +│ └── sounds/ +│ +└── src/ + ├── world/ + │ ├── Map.tsx + │ ├── Environment.tsx + │ ├── PostFX.tsx + │ ├── zones/ + │ │ ├── WorkshopZone.tsx + │ │ ├── PowerGridZone.tsx + │ │ └── FarmZone.tsx + │ │ └── SchoolZone.tsx + │ │ └── ResidentialZone.tsx + │ └── player/ + │ ├── FPSController.tsx + │ └── Crosshair.tsx + │ + ├── components/ + │ ├── 3d/ + │ │ └── InteractiveObject.tsx + │ └── ui/ + │ ├── NarrativeOverlay.tsx + │ ├── MissionHUD.tsx + │ ├── MapHUD.tsx + │ ├── CinematicBars.tsx + │ └── LoadingScreen.tsx + │ + ├── stores/ + │ ├── useExperienceStore.ts + │ ├── usePlayerStore.ts + │ └── useAudioStore.ts + │ + ├── hooks/ + │ ├── useZoneDetection.ts + │ ├── useInteraction.ts + │ └── useAudio.ts + │ ├── useCinematic.ts + │ └── useLOD.ts + │ + ├── data/ + │ ├── zones.ts + │ └── dialogues.ts + │ + ├── shaders/ + │ + ├── utils/ + │ ├── debug.js + │ ├── sizes.js + │ ├── time.js + │ └── loadingscreen.js + │ + ├── App.tsx + └── main.tsx + +## 🚀 Getting Started + +```bash +git clone https://github.com/La-Fabrik-Durable/La-Fabrik.git +cd La-Fabrik +npm install +npm run dev +``` + +## 📜 License + +See [LICENSE](./LICENSE) file. \ No newline at end of file