{"id":24892711,"url":"https://github.com/dammafra/threejs-journey","last_synced_at":"2026-04-09T02:31:40.659Z","repository":{"id":273618866,"uuid":"919962238","full_name":"dammafra/threejs-journey","owner":"dammafra","description":"This repository contains the exercises completed as part of the Three.js Journey course by Bruno Simon.","archived":false,"fork":false,"pushed_at":"2025-08-04T20:53:29.000Z","size":380569,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-04T23:12:07.931Z","etag":null,"topics":["opengl","threejs","threejs-journey","vercel","vite"],"latest_commit_sha":null,"homepage":"https://dammafra-portal-scene.vercel.app","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dammafra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-21T10:20:25.000Z","updated_at":"2025-07-30T23:42:35.000Z","dependencies_parsed_at":"2025-02-08T16:23:21.015Z","dependency_job_id":"e2b40cff-6cca-4fca-a088-c797ce523edf","html_url":"https://github.com/dammafra/threejs-journey","commit_stats":null,"previous_names":["dammafra/threejs-journey"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dammafra/threejs-journey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dammafra%2Fthreejs-journey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dammafra%2Fthreejs-journey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dammafra%2Fthreejs-journey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dammafra%2Fthreejs-journey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dammafra","download_url":"https://codeload.github.com/dammafra/threejs-journey/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dammafra%2Fthreejs-journey/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31582609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["opengl","threejs","threejs-journey","vercel","vite"],"created_at":"2025-02-01T18:16:24.966Z","updated_at":"2026-04-09T02:31:40.643Z","avatar_url":"https://github.com/dammafra.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Three.js Journey\n\n![Three.js](https://img.shields.io/badge/ThreeJs-black?style=for-the-badge\u0026logo=three.js\u0026logoColor=white)\n![OpenGL](https://img.shields.io/badge/OpenGL-FFFFFF?style=for-the-badge\u0026logo=opengl)\n![Blender](https://img.shields.io/badge/blender-%23F5792A.svg?style=for-the-badge\u0026logo=blender\u0026logoColor=white)\n![Vite](https://img.shields.io/badge/Vite-B73BFE?style=for-the-badge\u0026logo=vite\u0026logoColor=FFD62E)\n![Vercel](https://img.shields.io/badge/Vercel-000000?style=for-the-badge\u0026logo=vercel\u0026logoColor=white)\n\nThis repository contains the exercises completed as part of the [Three.js Journey](https://threejs-journey.com/) course by [Bruno Simon](https://bruno-simon.com/).\n\n### Chapter 01 - Basics\n\n1. Introduction\n2. What is WebGL and why use Three.js\n3. [First Three.js Project](https://dammafra-03-first-threejs-project.vercel.app)\n4. [Transform Objects](https://dammafra-04-transform-objects.vercel.app)\n5. [Animations](https://dammafra-05-animations.vercel.app)\n6. [Cameras](https://dammafra-06-cameras.vercel.app)\n7. [Fullscreen and Resizing](https://dammafra-07-fullscreen-and-resizing.vercel.app)\n8. [Geometries](https://dammafra-08-geometries.vercel.app)\n9. [Debug UI](https://dammafra-09-debug-ui.vercel.app)\n10. [Textures](https://dammafra-10-textures.vercel.app)\n11. [Materials](https://dammafra-11-materials.vercel.app)\n12. [3D Text](https://dammafra-12-3d-text.vercel.app)\n13. [Go Live](https://dammafra-13-go-live.vercel.app)\n\n### Chapter 02 - Classic Techniques\n\n14. [Lights](https://dammafra-14-lights.vercel.app)\n15. [Shadows](https://dammafra-15-shadows.vercel.app)\n16. [Haunted House](https://dammafra-16-haunted-house.vercel.app)\n17. [Particles](https://dammafra-17-particles.vercel.app)\n18. [Galaxy Generator](https://dammafra-18-galaxy-generator.vercel.app)\n19. [Scroll Based Animation](https://dammafra-19-scroll-based-animation.vercel.app)\n\n### Chapter 03 - Advanced Techniques\n\n20. [Physics](https://dammafra-20-physics.vercel.app)\n21. [Imported Models](https://dammafra-21-imported-models.vercel.app)\n22. [Raycaster and Mouse Events](https://dammafra-22-raycaster-and-mouse-events.vercel.app)\n23. [Custom Models with Blender](https://dammafra-23-custom-models-with-blender.vercel.app)\n24. [Environment Map](https://dammafra-24-environment-map.vercel.app)\n25. [Realistic Render](https://dammafra-25-realistic-render.vercel.app)\n26. [Code Structuring for Bigger Projects](https://dammafra-26-code-structuring-for-bigger-projects.vercel.app)\n\n### Chapter 04 - Shaders\n\n27. [Shaders](https://dammafra-27-shaders.vercel.app)\n28. [Shader Patterns](https://dammafra-28-shader-patterns.vercel.app)\n29. [Raging Sea](https://dammafra-29-raging-sea.vercel.app)\n30. [Animated Galaxy](https://dammafra-30-animated-galaxy.vercel.app)\n31. [Modified Materials](https://dammafra-31-modified-materials.vercel.app)\n32. [Coffee Smoke](https://dammafra-32-coffee-smoke.vercel.app)\n33. [Hologram](https://dammafra-33-hologram.vercel.app)\n34. [Fireworks](https://dammafra-34-fireworks.vercel.app)\n35. [Lights Shading](https://dammafra-35-lights-shading.vercel.app)\n36. [Raging Sea Shading](https://dammafra-36-raging-sea-shading.vercel.app)\n37. [Halftone Shading](https://dammafra-37-halftone-shading.vercel.app)\n38. [Earth](https://dammafra-38-earth.vercel.app)\n39. [Particles cursor animation](https://dammafra-39-particles-cursor-animation.vercel.app)\n40. [Particles morphing](https://dammafra-40-particles-morphing.vercel.app)\n41. [GPGPU Flow Field Particles](https://dammafra-41-gpgpu-flow-field-particles.vercel.app)\n42. [Wobbly Sphere](https://dammafra-42-wobbly-sphere.vercel.app)\n43. [Sliced Model](https://dammafra-43-sliced-model.vercel.app)\n44. [Procedural Terrain](https://dammafra-44-procedural-terrain.vercel.app)\n\n### Chapter 05 - Extra\n\n45. [Post-processing](https://dammafra-45-post-processing.vercel.app)\n46. [Performance Tips](https://dammafra-46-performance-tips.vercel.app)\n47. [Intro and loading progress](https://dammafra-47-intro-and-loading-progress.vercel.app)\n48. [Mixing HTML and WebGL](https://dammafra-48-mixing-html-and-webgl.vercel.app)\n\n### Chapter 06 - [Portal Scene](https://dammafra-portal-scene.vercel.app)\n\n49. Creating a scene in Blender\n50. Baking and exporting the scene\n51. Importing and optimizing the scene\n52. Adding details to the scene\n\n### Chapter 07 - React Three Fiber\n\n53. What are React and React Three Fiber\n54. [First React Application](https://dammafra-54-first-react-application.vercel.app)\n55. [First R3F Application](https://dammafra-55-first-r3f-application.vercel.app)\n56. [Drei](https://dammafra-56-drei.vercel.app)\n57. [Debug](https://dammafra-57-debug.vercel.app)\n58. [Environment and Staging](https://dammafra-58-environment-and-staging.vercel.app)\n59. [Load Models](https://dammafra-59-load-models.vercel.app)\n60. [3D Text](https://dammafra-60-3d-text.vercel.app)\n61. [Portal Scene](https://dammafra-61-portal-scene.vercel.app)\n62. [Mouse Events](https://dammafra-62-mouse-events.vercel.app)\n63. [Post-processing](https://dammafra-63-post-processing.vercel.app)\n64. [Fun and Simple Portfolio](https://dammafra-64-fun-and-simple-portfolio.vercel.app)\n65. [Physics](https://dammafra-65-physics.vercel.app)\n66. [Create a game](https://dammafra-66-create-a-game.vercel.app)\n\n\u003chr /\u003e\n\n## Setup\n\nEach lesson is developed in a separate branch.\n\n1. Create a new branch using the kebab-case format,\n   for example `01-first-lesson`.\n2. Checkout to the new branch\n3. Unzip the starter provided in the course lesson\n4. Run the following command:\n\n   ```bash\n   npm i \u0026\u0026 npm i prettier --save-dev \u0026\u0026 npm pkg set scripts.format=\"prettier --write .\" \u0026\u0026 npm run format\n   ```\n\n   - Installs all the lesson dependencies\n   - Adds `prettier` as a development dependency\n   - Adds a `format` script to the `package.json` file\n   - Runs the `format` script to automatically format the project files with `prettier`\n\n## Deploy\n\nEach push to a branch initiates a deployment to a separate Vercel project for every lesson.\n\nEach lesson will be available live at `dammafra.\u003cbranch-name\u003e.vercel.app`\n(exception made for the chapter 6 lessons).\n\n[Go to the Vercel Dashboard](https://vercel.com/dammafras-projects)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdammafra%2Fthreejs-journey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdammafra%2Fthreejs-journey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdammafra%2Fthreejs-journey/lists"}