From 02714019df25fe19dc3b55f670a57018bb41d6c8 Mon Sep 17 00:00:00 2001 From: Evgenii Starostin Date: Sun, 25 Oct 2026 13:33:45 +0300 Subject: [PATCH 1/2] feat: add spine IK example --- animation/spine_ik/.gitattributes | 42 ++++++ animation/spine_ik/.gitignore | 11 ++ animation/spine_ik/README.md | 31 +++++ animation/spine_ik/game.project | 25 ++++ animation/spine_ik/input/game.input_binding | 4 + animation/spine_ik/main/area.script | 6 + animation/spine_ik/main/base.atlas | 25 ++++ animation/spine_ik/main/cursor.script | 22 +++ animation/spine_ik/main/images/base_bot.png | Bin 0 -> 2580 bytes animation/spine_ik/main/images/base_top.png | Bin 0 -> 2509 bytes .../spine_ik/main/images/blue_pin_min_bot.png | Bin 0 -> 3029 bytes .../spine_ik/main/images/blue_pin_min_top.png | Bin 0 -> 3109 bytes .../spine_ik/main/images/blue_pin_top.png | Bin 0 -> 3824 bytes .../spine_ik/main/images/circle_pin_front.png | Bin 0 -> 5094 bytes animation/spine_ik/main/images/rect.png | Bin 0 -> 340 bytes .../spine_ik/main/images/red_stick_bot.png | Bin 0 -> 5450 bytes animation/spine_ik/main/main.collection | 128 ++++++++++++++++++ animation/spine_ik/main/manipulator.script | 17 +++ .../spine_ik/main/spine/manipulator.spinejson | 1 + .../main/spine/manipulator.spinescene | 2 + animation/spine_ik/thumbnail.webp | Bin 0 -> 119168 bytes 21 files changed, 314 insertions(+) create mode 100644 animation/spine_ik/.gitattributes create mode 100644 animation/spine_ik/.gitignore create mode 100644 animation/spine_ik/README.md create mode 100644 animation/spine_ik/game.project create mode 100644 animation/spine_ik/input/game.input_binding create mode 100644 animation/spine_ik/main/area.script create mode 100644 animation/spine_ik/main/base.atlas create mode 100644 animation/spine_ik/main/cursor.script create mode 100644 animation/spine_ik/main/images/base_bot.png create mode 100644 animation/spine_ik/main/images/base_top.png create mode 100644 animation/spine_ik/main/images/blue_pin_min_bot.png create mode 100644 animation/spine_ik/main/images/blue_pin_min_top.png create mode 100644 animation/spine_ik/main/images/blue_pin_top.png create mode 100644 animation/spine_ik/main/images/circle_pin_front.png create mode 100644 animation/spine_ik/main/images/rect.png create mode 100644 animation/spine_ik/main/images/red_stick_bot.png create mode 100644 animation/spine_ik/main/main.collection create mode 100644 animation/spine_ik/main/manipulator.script create mode 100644 animation/spine_ik/main/spine/manipulator.spinejson create mode 100644 animation/spine_ik/main/spine/manipulator.spinescene create mode 100644 animation/spine_ik/thumbnail.webp diff --git a/animation/spine_ik/.gitattributes b/animation/spine_ik/.gitattributes new file mode 100644 index 00000000..187cdf4a --- /dev/null +++ b/animation/spine_ik/.gitattributes @@ -0,0 +1,42 @@ +# Defold Protocol Buffer Text Files (https://github.com/github/linguist/issues/5091) +*.animationset linguist-language=JSON5 +*.atlas linguist-language=JSON5 +*.camera linguist-language=JSON5 +*.collection linguist-language=JSON5 +*.collectionfactory linguist-language=JSON5 +*.collectionproxy linguist-language=JSON5 +*.collisionobject linguist-language=JSON5 +*.cubemap linguist-language=JSON5 +*.display_profiles linguist-language=JSON5 +*.factory linguist-language=JSON5 +*.font linguist-language=JSON5 +*.gamepads linguist-language=JSON5 +*.go linguist-language=JSON5 +*.gui linguist-language=JSON5 +*.input_binding linguist-language=JSON5 +*.label linguist-language=JSON5 +*.material linguist-language=JSON5 +*.mesh linguist-language=JSON5 +*.model linguist-language=JSON5 +*.particlefx linguist-language=JSON5 +*.render linguist-language=JSON5 +*.sound linguist-language=JSON5 +*.sprite linguist-language=JSON5 +*.spinemodel linguist-language=JSON5 +*.spinescene linguist-language=JSON5 +*.texture_profiles linguist-language=JSON5 +*.tilemap linguist-language=JSON5 +*.tilesource linguist-language=JSON5 + +# Defold JSON Files +*.buffer linguist-language=JSON + +# Defold GLSL Shaders +*.fp linguist-language=GLSL +*.vp linguist-language=GLSL + +# Defold Lua Files +*.editor_script linguist-language=Lua +*.render_script linguist-language=Lua +*.script linguist-language=Lua +*.gui_script linguist-language=Lua diff --git a/animation/spine_ik/.gitignore b/animation/spine_ik/.gitignore new file mode 100644 index 00000000..0f4d6130 --- /dev/null +++ b/animation/spine_ik/.gitignore @@ -0,0 +1,11 @@ +/.editor_settings +/.internal +/build +.externalToolBuilders +.DS_Store +Thumbs.db +.lock-wscript +*.pyc +.project +.cproject +builtins \ No newline at end of file diff --git a/animation/spine_ik/README.md b/animation/spine_ik/README.md new file mode 100644 index 00000000..f65b91b0 --- /dev/null +++ b/animation/spine_ik/README.md @@ -0,0 +1,31 @@ +--- +title: Handle Spine IK constraints +brief: Learn how to control Spine IK constraints by assigning a game object as the IK target. +author_ids: + - evgenii-starostin +scripts: area.script, cursor.script, manipulator.script +thumbnail: thumbnail.webp +tags: animation +--- +This example demonstrates how to control Spine IK constraints in Defold by assigning a game object as the IK target. + + +## Project Structure +``` +- root + - active_area.go + - collisionobject + - area.script + - sprite + - cursor.go + - collisionobject + - cursor.script + - manipulator.script + - spinemodel +``` + +## How It Works +The `cursor.go` game object is controlled by the user and has a collision object configured as a trigger. +When the cursor overlaps with the trigger in `active_area.go`, it sends a message to `manipulator.script`. +The script uses the Defold Spine API to assign `cursor.go` as the target of an IK constraint with spine.set_ik_target(). +When the target is no longer needed, spine.reset_ik_target() resets the constraint to its original target position. diff --git a/animation/spine_ik/game.project b/animation/spine_ik/game.project new file mode 100644 index 00000000..5d2bc407 --- /dev/null +++ b/animation/spine_ik/game.project @@ -0,0 +1,25 @@ +[bootstrap] +main_collection = /main/main.collectionc + +[script] +shared_state = 1 + +[display] +width = 960 +height = 640 +high_dpi = 1 + +[android] +input_method = HiddenInputField + +[physics] +gravity_y = -1000.0 +scale = 0.01 + +[html5] +scale_mode = stretch + +[project] +title = spine_ik +dependencies#0 = https://github.com/defold/extension-spine/archive/refs/tags/4.9.4.zip + diff --git a/animation/spine_ik/input/game.input_binding b/animation/spine_ik/input/game.input_binding new file mode 100644 index 00000000..8ed1d4e4 --- /dev/null +++ b/animation/spine_ik/input/game.input_binding @@ -0,0 +1,4 @@ +mouse_trigger { + input: MOUSE_BUTTON_1 + action: "touch" +} diff --git a/animation/spine_ik/main/area.script b/animation/spine_ik/main/area.script new file mode 100644 index 00000000..3e5ebfa7 --- /dev/null +++ b/animation/spine_ik/main/area.script @@ -0,0 +1,6 @@ +local NORMAL_ALPHA = 0.8 +local ALPHA_PROPERTY = hash("tint.w") + +function init(self) + go.set("#sprite", ALPHA_PROPERTY, NORMAL_ALPHA) +end diff --git a/animation/spine_ik/main/base.atlas b/animation/spine_ik/main/base.atlas new file mode 100644 index 00000000..6f61ccba --- /dev/null +++ b/animation/spine_ik/main/base.atlas @@ -0,0 +1,25 @@ +images { + image: "/main/images/base_bot.png" +} +images { + image: "/main/images/base_top.png" +} +images { + image: "/main/images/blue_pin_min_bot.png" +} +images { + image: "/main/images/blue_pin_min_top.png" +} +images { + image: "/main/images/blue_pin_top.png" +} +images { + image: "/main/images/circle_pin_front.png" +} +images { + image: "/main/images/red_stick_bot.png" +} +images { + image: "/main/images/rect.png" +} +extrude_borders: 2 diff --git a/animation/spine_ik/main/cursor.script b/animation/spine_ik/main/cursor.script new file mode 100644 index 00000000..c3f8113a --- /dev/null +++ b/animation/spine_ik/main/cursor.script @@ -0,0 +1,22 @@ +local MSG_TRIGGER = hash("trigger_response") +local MSG_PARENT = hash("parent") + +function init(self) + msg.post(".", "acquire_input_focus") +end + +function final(self) + msg.post(".", "release_input_focus") +end + +function on_input(self, action_id, action) + if action.x and action.y then + go.set_position(vmath.vector3(action.x, action.y, 1)) + end +end + +function on_message(self, message_id, message, sender) + if message_id == MSG_TRIGGER then + msg.post("/root#manipulator", MSG_PARENT, { parent = message.enter }) + end +end diff --git a/animation/spine_ik/main/images/base_bot.png b/animation/spine_ik/main/images/base_bot.png new file mode 100644 index 0000000000000000000000000000000000000000..f751a6e62c6b934dfc4c9c8be664a06ef9f42575 GIT binary patch literal 2580 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 literal 0 HcmV?d00001 diff --git a/animation/spine_ik/main/images/base_top.png b/animation/spine_ik/main/images/base_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5955fc3feba4a993b40bdfe7fe05307af2b27e0d GIT binary patch literal 2509 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 X_XO#*1#-Zm00000NkvXXu0mjfQthuL literal 0 HcmV?d00001 diff --git a/animation/spine_ik/main/images/blue_pin_min_top.png b/animation/spine_ik/main/images/blue_pin_min_top.png new file mode 100644 index 0000000000000000000000000000000000000000..3c79d416233bbcc5d5912158971d5c451673af8a GIT binary patch literal 3109 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 literal 0 HcmV?d00001 diff --git a/animation/spine_ik/main/images/blue_pin_top.png b/animation/spine_ik/main/images/blue_pin_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c104999ca30024b4205d1699a5ee92e4aeecf36c GIT binary patch literal 3824 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 literal 0 HcmV?d00001 diff --git a/animation/spine_ik/main/images/red_stick_bot.png b/animation/spine_ik/main/images/red_stick_bot.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3fbdea1e1955f29d6a5477bfcd07d334f2623e GIT binary patch literal 5450 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 literal 0 HcmV?d00001 diff --git a/animation/spine_ik/main/main.collection b/animation/spine_ik/main/main.collection new file mode 100644 index 00000000..14067b3e --- /dev/null +++ b/animation/spine_ik/main/main.collection @@ -0,0 +1,128 @@ +name: "main" +scale_along_z: 0 +embedded_instances { + id: "root" + children: "active_area" + children: "cursor" + data: "components {\n" + " id: \"manipulator\"\n" + " component: \"/main/manipulator.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"spinemodel\"\n" + " type: \"spinemodel\"\n" + " data: \"spine_scene: \\\"/main/spine/manipulator.spinescene\\\"\\n" + "default_animation: \\\"idle\\\"\\n" + "skin: \\\"\\\"\\n" + "material: \\\"/defold-spine/assets/spine.material\\\"\\n" + "create_go_bones: true\\n" + "\"\n" + " position {\n" + " x: 480.0\n" + " }\n" + "}\n" + "" +} +embedded_instances { + id: "cursor" + data: "components {\n" + " id: \"cursor\"\n" + " component: \"/main/cursor.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"collisionobject\"\n" + " type: \"collisionobject\"\n" + " data: \"type: COLLISION_OBJECT_TYPE_TRIGGER\\n" + "mass: 0.0\\n" + "friction: 0.1\\n" + "restitution: 0.5\\n" + "group: \\\"cursor\\\"\\n" + "mask: \\\"area\\\"\\n" + "embedded_collision_shape {\\n" + " shapes {\\n" + " shape_type: TYPE_BOX\\n" + " position {\\n" + " }\\n" + " rotation {\\n" + " }\\n" + " index: 0\\n" + " count: 3\\n" + " id: \\\"box\\\"\\n" + " }\\n" + " data: 2.5\\n" + " data: 2.5\\n" + " data: 10.0\\n" + "}\\n" + "event_collision: false\\n" + "event_contact: false\\n" + "\"\n" + "}\n" + "" + position { + x: 689.0 + y: 369.0 + } +} +embedded_instances { + id: "active_area" + data: "components {\n" + " id: \"area\"\n" + " component: \"/main/area.script\"\n" + "}\n" + "embedded_components {\n" + " id: \"collisionobject\"\n" + " type: \"collisionobject\"\n" + " data: \"type: COLLISION_OBJECT_TYPE_TRIGGER\\n" + "mass: 0.0\\n" + "friction: 0.1\\n" + "restitution: 0.5\\n" + "group: \\\"area\\\"\\n" + "mask: \\\"cursor\\\"\\n" + "embedded_collision_shape {\\n" + " shapes {\\n" + " shape_type: TYPE_BOX\\n" + " position {\\n" + " }\\n" + " rotation {\\n" + " }\\n" + " index: 0\\n" + " count: 3\\n" + " id: \\\"base\\\"\\n" + " }\\n" + " data: 150.0\\n" + " data: 100.0\\n" + " data: 10.0\\n" + "}\\n" + "event_collision: false\\n" + "event_contact: false\\n" + "\"\n" + "}\n" + "embedded_components {\n" + " id: \"sprite\"\n" + " type: \"sprite\"\n" + " data: \"default_animation: \\\"rect\\\"\\n" + "material: \\\"/builtins/materials/sprite.material\\\"\\n" + "slice9 {\\n" + " x: 8.0\\n" + " y: 8.0\\n" + " z: 8.0\\n" + " w: 8.0\\n" + "}\\n" + "size {\\n" + " x: 300.0\\n" + " y: 200.0\\n" + "}\\n" + "size_mode: SIZE_MODE_MANUAL\\n" + "textures {\\n" + " sampler: \\\"texture_sampler\\\"\\n" + " texture: \\\"/main/base.atlas\\\"\\n" + "}\\n" + "\"\n" + "}\n" + "" + position { + x: 480.0 + y: 360.0 + z: -0.5 + } +} diff --git a/animation/spine_ik/main/manipulator.script b/animation/spine_ik/main/manipulator.script new file mode 100644 index 00000000..fdb0ce06 --- /dev/null +++ b/animation/spine_ik/main/manipulator.script @@ -0,0 +1,17 @@ +local IK_BONE = hash("RED_IK") +local SPINE_COMPONENT = "#spinemodel" +local MSG_PARENT = hash("parent") + +function init(self) + self.target = go.get_id("cursor") +end + +function on_message(self, message_id, message, sender) + if message_id == MSG_PARENT then + if message.parent then + spine.set_ik_target(SPINE_COMPONENT, IK_BONE, self.target) + else + spine.reset_ik_target(SPINE_COMPONENT, IK_BONE) + end + end +end diff --git a/animation/spine_ik/main/spine/manipulator.spinejson b/animation/spine_ik/main/spine/manipulator.spinejson new file mode 100644 index 00000000..2c0415ed --- /dev/null +++ b/animation/spine_ik/main/spine/manipulator.spinejson @@ -0,0 +1 @@ +{"skeleton":{"hash":"OCs+C0uVJzw","spine":"4.2.43","x":-180.19,"y":1.91,"width":350.73,"height":556.54,"images":"../../manipulator/export/images/","audio":"./audio"},"bones":[{"name":"root"},{"name":"base","parent":"root"},{"name":"red_stick","parent":"base","length":157.89,"rotation":117.63,"x":-42.06,"y":111.65},{"name":"red_stick2","parent":"red_stick","length":138.98,"rotation":-68.81,"x":158.5,"y":1.16},{"name":"RED_IK","parent":"root","rotation":-12.89,"x":-25.06,"y":356.13,"color":"ff3f00ff","icon":"ik"},{"name":"blue_pin_top_1","parent":"red_stick2","length":114.16,"rotation":21.09,"x":170.1,"y":22.02,"color":"abe323ff"},{"name":"blue_pin_top_2","parent":"blue_pin_top_1","length":105.84,"rotation":-95.52,"x":136.17,"y":-3.08,"color":"abe323ff"},{"name":"blue_pin_bot_1","parent":"red_stick2","length":107.39,"rotation":-103.72,"x":152.81,"y":-0.67,"color":"abe323ff"},{"name":"blue_pin_bot_2","parent":"blue_pin_bot_1","length":92.62,"rotation":91.04,"x":141.91,"y":-2.49,"color":"abe323ff"}],"slots":[{"name":"base_bot","bone":"base","attachment":"base_bot"},{"name":"circle_pin_clone_back","bone":"red_stick","attachment":"circle_pin_front"},{"name":"circle_pin_clone_top_front","bone":"red_stick2","attachment":"circle_pin_front"},{"name":"red_stick_bot","bone":"red_stick","attachment":"red_stick_bot"},{"name":"base_top","bone":"base","attachment":"base_top"},{"name":"red_stick_top","bone":"red_stick2","attachment":"red_stick_top"},{"name":"blue_pin_top","bone":"blue_pin_top_1","attachment":"blue_pin_top"},{"name":"blue_pin_bot","bone":"blue_pin_bot_1","attachment":"blue_pin_top"},{"name":"circle_pin_front","bone":"red_stick","attachment":"circle_pin_front"},{"name":"circle_pin_clone_back_top","bone":"blue_pin_top_1","attachment":"circle_pin_front"},{"name":"circle_pin_clone_back_bot","bone":"blue_pin_bot_1","attachment":"circle_pin_front"},{"name":"blue_pin_min_top","bone":"blue_pin_top_2","attachment":"blue_pin_min_top"},{"name":"blue_pin_min_bot","bone":"blue_pin_bot_2","attachment":"blue_pin_min_bot"},{"name":"circle_pin_clone_front","bone":"red_stick2","attachment":"circle_pin_front"},{"name":"circle_pin_clone_front_top","bone":"blue_pin_top_1","attachment":"circle_pin_front"},{"name":"circle_pin_clone_front_bot","bone":"blue_pin_bot_1","attachment":"circle_pin_front"}],"ik":[{"name":"RED_IK","bones":["red_stick","red_stick2"],"target":"RED_IK","bendPositive":false}],"physics":[{"name":"blue_pin_bot_1","order":2,"bone":"blue_pin_bot_1","x":0.2,"y":0.2,"rotate":1,"inertia":0.5,"damping":0.85},{"name":"blue_pin_bot_2","order":4,"bone":"blue_pin_bot_2","x":0.1,"y":0.1,"rotate":1,"inertia":0.5,"damping":0.85},{"name":"blue_pin_top_1","order":1,"bone":"blue_pin_top_1","x":0.2,"y":0.2,"rotate":1,"inertia":0.5,"damping":0.85},{"name":"blue_pin_top_2","order":3,"bone":"blue_pin_top_2","x":0.1,"y":0.1,"rotate":1,"inertia":0.5,"damping":0.85}],"skins":[{"name":"default","attachments":{"base_bot":{"base_bot":{"x":27.86,"y":67.91,"width":227,"height":132}},"base_top":{"base_top":{"x":-44.95,"y":67.91,"width":227,"height":132}},"blue_pin_bot":{"blue_pin_top":{"x":55.9,"y":5.09,"rotation":108.94,"width":94,"height":143}},"blue_pin_min_bot":{"blue_pin_min_bot":{"x":60.8,"y":-4.81,"rotation":-36.14,"width":109,"height":85}},"blue_pin_min_top":{"blue_pin_min_top":{"x":71.53,"y":5.56,"rotation":25.62,"width":113,"height":78}},"blue_pin_top":{"blue_pin_top":{"x":60.58,"y":-5.57,"rotation":-69.9,"width":94,"height":143}},"circle_pin_clone_back":{"circle_pin_front":{"x":138.61,"y":-20.2,"rotation":-117.63,"width":116,"height":107}},"circle_pin_clone_back_bot":{"circle_pin_front":{"x":138.92,"y":27.3,"scaleX":0.806,"scaleY":0.806,"rotation":54.9,"width":116,"height":107}},"circle_pin_clone_back_top":{"circle_pin_front":{"x":136.26,"y":-35.98,"scaleX":0.8555,"scaleY":0.8555,"rotation":-69.9,"width":116,"height":107}},"circle_pin_clone_front":{"circle_pin_front":{"x":154.9,"y":7.59,"rotation":-48.81,"width":116,"height":107}},"circle_pin_clone_front_bot":{"circle_pin_front":{"x":124.71,"y":9.42,"scaleX":0.8586,"scaleY":0.8586,"rotation":54.9,"width":116,"height":107}},"circle_pin_clone_front_top":{"circle_pin_front":{"x":129.37,"y":-12.52,"scaleX":0.8824,"scaleY":0.8824,"rotation":-69.9,"width":116,"height":107}},"circle_pin_clone_top_front":{"circle_pin_front":{"x":167.4,"y":-5.06,"rotation":-48.81,"width":116,"height":107}},"circle_pin_front":{"circle_pin_front":{"x":153.2,"y":-0.55,"rotation":-117.63,"width":116,"height":107}},"red_stick_bot":{"red_stick_bot":{"x":69.41,"y":-8.5,"rotation":-117.63,"width":141,"height":181}},"red_stick_top":{"red_stick_top":{"path":"red_stick_bot","x":59.08,"y":-11.55,"rotation":-115.12,"width":141,"height":181}}}}],"animations":{"idle":{"bones":{"RED_IK":{"translate":[{"curve":[0.444,0,0.889,-2.95,0.444,0,0.889,-12.87]},{"time":1.3333,"x":-2.95,"y":-12.87,"curve":[1.778,-2.95,2.222,0,1.778,-12.87,2.222,0]},{"time":2.6667}]}}},"parent":{}}} \ No newline at end of file diff --git a/animation/spine_ik/main/spine/manipulator.spinescene b/animation/spine_ik/main/spine/manipulator.spinescene new file mode 100644 index 00000000..23b34784 --- /dev/null +++ b/animation/spine_ik/main/spine/manipulator.spinescene @@ -0,0 +1,2 @@ +spine_json: "/main/spine/manipulator.spinejson" +atlas: "/main/base.atlas" diff --git a/animation/spine_ik/thumbnail.webp b/animation/spine_ik/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..fa399950b4980992fcbd2927e2a42ab5144abef6 GIT binary patch literal 119168 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 literal 0 HcmV?d00001 From 9238a550b0c798de49cd2ba7da3bf8ad66601b07 Mon Sep 17 00:00:00 2001 From: Pawel Date: Wed, 28 Oct 2026 17:27:38 +0100 Subject: [PATCH 2/2] Apply suggestion from @paweljarosz --- animation/spine_ik/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/animation/spine_ik/README.md b/animation/spine_ik/README.md index f65b91b0..3cc9075c 100644 --- a/animation/spine_ik/README.md +++ b/animation/spine_ik/README.md @@ -7,7 +7,9 @@ scripts: area.script, cursor.script, manipulator.script thumbnail: thumbnail.webp tags: animation --- -This example demonstrates how to control Spine IK constraints in Defold by assigning a game object as the IK target. +This example demonstrates how to control Spine Inverse Kinematics (IK) constraints in Defold by assigning a game object as the IK target. + +Move the mouse or touch in the active area (white rectangle in the background) to move the robot's arm with IK constraints. ## Project Structure