From dfa93f039a8191bd88d6f39f75730803e4bfba8d Mon Sep 17 00:00:00 2001 From: Stanisław Zagórowski Date: Wed, 30 Aug 2023 21:58:20 +0200 Subject: front: pull project data from JSON --- front/public/assets/images/linux.png | Bin 0 -> 3487 bytes front/public/assets/images/linux.svg | 42 +++ front/public/assets/images/macos.png | Bin 0 -> 2469 bytes front/public/assets/images/macos.svg | 39 ++ front/public/assets/projects/spirit-mod/Demo1.gif | Bin 1075246 -> 0 bytes front/public/assets/projects/spirit-mod/Demo2.gif | Bin 4380429 -> 0 bytes .../assets/projects/spirit-mod/Thumbnail.png | Bin 73781 -> 0 bytes .../assets/projects/spirit-mod/Thumbnail.webp | Bin 266196 -> 0 bytes front/public/assets/projects/spirit-mod/demo1.gif | Bin 0 -> 1075246 bytes front/public/assets/projects/spirit-mod/demo2.gif | Bin 0 -> 4380429 bytes .../assets/projects/spirit-mod/thumbnail.png | Bin 0 -> 73781 bytes .../assets/projects/spirit-mod/thumbnail.webp | Bin 0 -> 266196 bytes front/src/components/project.css | 137 +++++++ front/src/components/project.tsx | 93 +++++ front/src/data/games.json | 207 +++++++++++ front/src/data/projects.json | 22 ++ front/src/pages/games.tsx | 412 ++------------------- front/src/pages/projects.css | 137 ------- front/src/pages/projects.tsx | 41 +- 19 files changed, 572 insertions(+), 558 deletions(-) create mode 100644 front/public/assets/images/linux.png create mode 100644 front/public/assets/images/linux.svg create mode 100644 front/public/assets/images/macos.png create mode 100644 front/public/assets/images/macos.svg delete mode 100644 front/public/assets/projects/spirit-mod/Demo1.gif delete mode 100644 front/public/assets/projects/spirit-mod/Demo2.gif delete mode 100644 front/public/assets/projects/spirit-mod/Thumbnail.png delete mode 100644 front/public/assets/projects/spirit-mod/Thumbnail.webp create mode 100644 front/public/assets/projects/spirit-mod/demo1.gif create mode 100644 front/public/assets/projects/spirit-mod/demo2.gif create mode 100644 front/public/assets/projects/spirit-mod/thumbnail.png create mode 100644 front/public/assets/projects/spirit-mod/thumbnail.webp create mode 100644 front/src/components/project.css create mode 100644 front/src/components/project.tsx create mode 100644 front/src/data/games.json create mode 100644 front/src/data/projects.json delete mode 100644 front/src/pages/projects.css diff --git a/front/public/assets/images/linux.png b/front/public/assets/images/linux.png new file mode 100644 index 0000000..492d0bf Binary files /dev/null and b/front/public/assets/images/linux.png differ diff --git a/front/public/assets/images/linux.svg b/front/public/assets/images/linux.svg new file mode 100644 index 0000000..cab00df --- /dev/null +++ b/front/public/assets/images/linux.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/front/public/assets/images/macos.png b/front/public/assets/images/macos.png new file mode 100644 index 0000000..1f4625c Binary files /dev/null and b/front/public/assets/images/macos.png differ diff --git a/front/public/assets/images/macos.svg b/front/public/assets/images/macos.svg new file mode 100644 index 0000000..ec4dc0c --- /dev/null +++ b/front/public/assets/images/macos.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/front/public/assets/projects/spirit-mod/Demo1.gif b/front/public/assets/projects/spirit-mod/Demo1.gif deleted file mode 100644 index 324de0c..0000000 Binary files a/front/public/assets/projects/spirit-mod/Demo1.gif and /dev/null differ diff --git a/front/public/assets/projects/spirit-mod/Demo2.gif b/front/public/assets/projects/spirit-mod/Demo2.gif deleted file mode 100644 index 4e87fd8..0000000 Binary files a/front/public/assets/projects/spirit-mod/Demo2.gif and /dev/null differ diff --git a/front/public/assets/projects/spirit-mod/Thumbnail.png b/front/public/assets/projects/spirit-mod/Thumbnail.png deleted file mode 100644 index 55f8d7e..0000000 Binary files a/front/public/assets/projects/spirit-mod/Thumbnail.png and /dev/null differ diff --git a/front/public/assets/projects/spirit-mod/Thumbnail.webp b/front/public/assets/projects/spirit-mod/Thumbnail.webp deleted file mode 100644 index 0250f72..0000000 Binary files a/front/public/assets/projects/spirit-mod/Thumbnail.webp and /dev/null differ diff --git a/front/public/assets/projects/spirit-mod/demo1.gif b/front/public/assets/projects/spirit-mod/demo1.gif new file mode 100644 index 0000000..324de0c Binary files /dev/null and b/front/public/assets/projects/spirit-mod/demo1.gif differ diff --git a/front/public/assets/projects/spirit-mod/demo2.gif b/front/public/assets/projects/spirit-mod/demo2.gif new file mode 100644 index 0000000..4e87fd8 Binary files /dev/null and b/front/public/assets/projects/spirit-mod/demo2.gif differ diff --git a/front/public/assets/projects/spirit-mod/thumbnail.png b/front/public/assets/projects/spirit-mod/thumbnail.png new file mode 100644 index 0000000..55f8d7e Binary files /dev/null and b/front/public/assets/projects/spirit-mod/thumbnail.png differ diff --git a/front/public/assets/projects/spirit-mod/thumbnail.webp b/front/public/assets/projects/spirit-mod/thumbnail.webp new file mode 100644 index 0000000..0250f72 Binary files /dev/null and b/front/public/assets/projects/spirit-mod/thumbnail.webp differ diff --git a/front/src/components/project.css b/front/src/components/project.css new file mode 100644 index 0000000..f9cc07f --- /dev/null +++ b/front/src/components/project.css @@ -0,0 +1,137 @@ +.icon { + display: inline; + width: 32px; + height: 32px; + transition: 0.3s; + transform-origin: center; + filter: brightness(70%) +} + +.icon:hover { + filter: brightness(80%); +} + +.icon-row { + width: 240px; + height: 36px; +} + +.icon-container { + height: 36px; + float: right; +} + +.icon-text { + width: auto; + height: 36px; + line-height: 36px; + float: left; + vertical-align: middle; + margin-right: 8px; + color: #5c6370; +} + +.projects-container { + width: 100%; + max-width: 1120px; + margin: auto; + margin-top: 24pt; + margin-bottom: 48pt; + align-items: center; + justify-content: center; + align-self: center; +} + +.project { + display: table; + align-self: center; + clear: both; + margin-bottom: 24pt; +} + +.project-info { + font-size: 14pt; +} + +.project-description { + font-size: 16pt; + text-align: justify; +} + +.project-image-gallery { + margin-left: 24px; + margin-right: 10px; +} + +@media (max-width: 1150px) { + .project-title { + text-align: center; + font-size: 24pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + + .project-image-gallery { + margin: 60px auto; + width: 330px; + height: 220px; + } + + .project-info { + float: none; + width: 90%; + margin: auto; + } + + .project-description { + font-size: 14pt; + } +} + +@media (max-width: 1150px) and (min-width: 480px) { + .project-title { + text-align: center; + font-size: 24pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + .project-image-gallery { + margin: 60px auto; + width: 480px; + height: 360px; + } + + .project-info { + float: none; + width: 90%; + margin: auto; + } + + .project-description { + font-size: 14pt; + } +} + +@media (min-width: 1150px) { + .project-title { + text-align: left; + font-size: 32pt; + margin-bottom: 8px; + text-decoration-line: underline; + } + .project-image-gallery { + float: right; + width: 480px; + height: 360px; + } + .project-info { + float: left; + max-width: 600px; + } + + .project-description { + font-size: 16pt; + } +} + + diff --git a/front/src/components/project.tsx b/front/src/components/project.tsx new file mode 100644 index 0000000..cb9496d --- /dev/null +++ b/front/src/components/project.tsx @@ -0,0 +1,93 @@ +import Carousel from "./carousel"; +import './project.css'; + +enum ProjectType { + GAME = "game", + PROJECT = "project", +} + +export enum ProjectTech { + CSHARP = "csharp", + RUST = "rust", + C = "c", + CPP = "cpp", + JAVASCRIPT = "javascript", + TYPESCRIPT = "typescript", + HTML = "html", + CSS = "css", + + PREACT = "preact", + UNITY = "unity", + GODOT = "godot", + MONOGAME = "monogame", +} + +export enum ProjectTarget { + WEB = "html5", + WINDOWS = "windows", + LINUX = "linux", + MACOS = "macos", + ANDROID = "android", + HYPRLAND = "hyprland", +} + +export interface ProjectDescriptor { + name: string; + name_normalized: string; + type: ProjectType; + link: string; + tech: ProjectTech[]; + targets: ProjectTarget[]; + images: string[]; + description: string; +} + +function getProjectImageLink(project: ProjectDescriptor, image: string) { + return `assets/${project.type}s/${project.name_normalized}/${image}`; +} + +function getProjectTechIconLink(tech: ProjectTech) { + return `assets/images/${tech}.png`; +} + +function getProjectTargetIconLink(target: ProjectTarget) { + return `assets/images/${target}.png`; +} + +export function Project(props: ProjectDescriptor) { + return ( +
+ +
+
+
Made using
+
+ {props.tech.map((tech) => ( + + ))} +
+
+
+
Available on
+
+ {props.targets.map((target) => ( + + ))} +
+
+
+
+ { + // use description as html +
+ } +
+
+ + {props.images.map((image) => ( + + ))} + +
+ ); +} diff --git a/front/src/data/games.json b/front/src/data/games.json new file mode 100644 index 0000000..fddbe35 --- /dev/null +++ b/front/src/data/games.json @@ -0,0 +1,207 @@ +[ + { + "name": "Mr Final Boss", + "name_normalized": "mr-final-boss", + "type": "game", + "link": "https://jellingfish-games.itch.io/mr-final-boss", + "tech": [ + "unity", + "csharp" + ], + "targets": [ + "windows", + "html5" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png", + "screenshot4.png" + ], + "description": "The legends say that one day, brave Heroes will slay the evil and malicious Ignatius, the Chaos Bringer... But YOU won't go down without a fight! Be the bossfight everyone is dreading and hunt down as many Heroes as you can in your last stand using a variety of abilities you can choose from!
Game made in 72 hours for Ludum Dare 50, with the theme \"Delay the Inevitable\"." + }, + { + "name": "BUMBLING BUILDERS", + "name_normalized": "bumbling-builders", + "type": "game", + "link": "https://oroshibu.itch.io/bumbling-builders", + "tech": [ + "unity", + "csharp" + ], + "targets": [ + "windows", + "html5" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png" + ], + "description": "A physics puzzle game in which you need to protect little creatures from danger that could come from any direction. Build forts with tetris-style blocks. The game features 30+ levels, multiple distinct enemies and a star rating system.
Game made in 72 hours for Ludum Dare 49, with the theme \"Unstable\"." + }, + { + "name": "WUZMAG", + "name_normalized": "wuzmag", + "type": "game", + "link": "https://duckonaut.itch.io/wuzmag", + "tech": [ + "unity", + "csharp" + ], + "targets": [ + "windows", + "html5" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png" + ], + "description": "Turn based arcade survival game. Survive as long as you can by freezing enemies and using them to defeat more enemies.
Game made in roughly 8 hours for a private game jam with friends." + }, + { + "name": "Miro", + "name_normalized": "miro", + "type": "game", + "link": "https://duckonaut.itch.io/miro", + "tech": [ + "monogame", + "csharp" + ], + "targets": [ + "windows" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png" + ], + "description": "Small chill game made mostly as an experiment for a nice 2D renderer mechanic. Infect the world around you, breaking it down into its simplest components.
Game made in roughly 8 hours for a private game jam with friends." + }, + { + "name": "Thermal Trail", + "name_normalized": "thermal-trail", + "type": "game", + "link": "https://duckonaut.itch.io/thermal-trail", + "tech": [ + "godot", + "csharp" + ], + "targets": [ + "windows", + "html5" + ], + "images": [ + "gameart.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png", + "screenshot4.png" + ], + "description": "Play as Yolka, a mountain goat who found an unknown egg. Keep the egg warm as you navigate the 3 distinct worlds, and bring it to the hottest place you know: the depths of a volcano.
Game made in a week for Newgrounds July Jam 2021, with the theme \"Egg\"." + }, + { + "name": "Greachers", + "name_normalized": "greachers", + "type": "game", + "link": "https://duckonaut.itch.io/greachers", + "tech": [ + "monogame", + "csharp" + ], + "targets": [ + "windows" + ], + "images": [ + "title.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png", + "screenshot4.png" + ], + "description": "Tiny idle simulation game where you manage a team of randomly generated little fellas as they fight other greachers in a sidescrolling world with beautiful procedurally generated graphics.
Game made in 2 weeks for LOWREZJAM 2021, with the theme \"Minibeasts\"." + }, + { + "name": "Third Party", + "name_normalized": "third-party", + "type": "game", + "link": "https://duckonaut.itch.io/third-party", + "tech": [ + "godot" + ], + "targets": [ + "windows", + "html5" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png", + "screenshot4.png" + ], + "description": "A top-down stealth game where you play as a spy tasked with stealing important data from a rivaling government. Your task would be easy enough if your objective wasn’t in a underground top-secret facility handling an alien outbreak. Without access to conventional stealth techniques, use corpses of your enemies to sneak through the battlefield.
Game made in 72 hours for Ludum Dare 48, with the theme \"Deeper and deeper\"." + }, + { + "name": "Your Left", + "name_normalized": "your-left", + "type": "game", + "link": "https://xatriv.itch.io/your-left", + "tech": [ + "unity", + "csharp" + ], + "targets": [ + "windows" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png", + "screenshot3.png" + ], + "description": "A simple pacman-inspired arcade game. Try to grab all the stars in a randomly generated maze before the time expires, while your controls are scattered all over the screen. Get as far as you can to get the highest score.
Game made in 8 hours for Jam Jam, a local in-person event organized by KNTG Polygon, with the theme \"One Click\"." + }, + { + "name": "Riff n' Rage", + "name_normalized": "riff-n-rage", + "type": "game", + "link": "https://duckonaut.itch.io/riff-n-rage", + "tech": [ + "monogame", + "csharp" + ], + "targets": [ + "windows" + ], + "images": [ + "thumbnail.png", + "screenshot1.png", + "screenshot2.png" + ], + "description": "You just got your first guitar, and through sheer luck managed to land in the king's throne room, trying to entertain him. Sadly, his subjects aren't huge fans of your music. Dodge them while trying to play the best you can, or the king won't be merciful.
Game made in 48 hours for a special solo game jam among friends. My theme was \"Power at a price\"." + }, + { + "name": "Survive the Temple", + "name_normalized": "survive-the-temple", + "type": "game", + "link": "https://duckonaut.itch.io/survive-the-temple", + "tech": [ + "godot" + ], + "targets": [ + "windows", + "html5" + ], + "images": [ + "cover.png", + "screenshot.png" + ], + "description": "A quick movement focused platformer that tests your short term memory. Survive the trap system of an ancient temple! Dash through the lanterns in the correct order before the time runs out, or face certain death!
Game made in 48 hours for Ludum Dare Compo 47 with the theme \"Stuck in a loop\"." + } +] diff --git a/front/src/data/projects.json b/front/src/data/projects.json new file mode 100644 index 0000000..0a63c62 --- /dev/null +++ b/front/src/data/projects.json @@ -0,0 +1,22 @@ +[ + { + "name": "Spirit Mod", + "name_normalized": "spirit-mod", + "type": "project", + "link": "https://spiritmod.fandom.com/wiki/Spirit_Mod_Wiki", + "tech": [ + "csharp" + ], + "targets": [ + "windows", + "linux", + "macos" + ], + "images": [ + "thumbnail.png", + "demo1.gif", + "demo2.gif" + ], + "description": "The Spirit Mod is one of the largest mods for Terraria: with more than 1300 items, 8 bosses, and hundreds of enemies, as well as 3 new events and 3 brand new biomes, the mod has a lot to offer.
I had the privilege of contributing some system code, mainly the \"Stargoop\" system." + } +] diff --git a/front/src/pages/games.tsx b/front/src/pages/games.tsx index 314813d..2ff4eff 100644 --- a/front/src/pages/games.tsx +++ b/front/src/pages/games.tsx @@ -1,393 +1,27 @@ -import Carousel from '../components/carousel'; -import './projects.css'; +import { Project, ProjectDescriptor } from '../components/project'; +import projectsJson from '../data/games.json'; -export default function Games() { - return ( - <> -
-
- Game Projects -
-
- my game projects, mostly from game jams -
-
-
-
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- - -
-
-
-
- The legends say that one day, brave Heroes will slay the evil and malicious Ignatius, the Chaos - Bringer... But YOU won't go down without a fight! Be the bossfight everyone is dreading and hunt - down as many Heroes as you can in your last stand using a variety of abilities you can choose from! -
- Game made in 72 hours for Ludum Dare 50, with - the theme "Delay the Inevitable". -
-
- - - - - - - -
+const projects: ProjectDescriptor[] = projectsJson as ProjectDescriptor[]; -
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- - -
-
-
-
- A physics puzzle game in which you need to protect little creatures from danger that could come from - any direction. Build forts with tetris-style blocks. The game features 30+ levels, multiple distinct - enemies and a star rating system. -
- Game made in 72 hours for Ludum Dare 49, with - the theme "Unstable". -
-
- - - - - - -
- -
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- -
-
-
-
- Adventure through a dungeon of gambling themed enemies! - Craft your perfect dice from many powerful spells, - combo them to destroy everything in your path, and descend deeper. -
- Game made in under 50 hours for GMTK Game Jam 2022, - with - the theme "Roll of the dice". -
-
- - - -
- -
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- - -
-
-
-
- Turn based arcade survival game. - Survive as long as you can by freezing enemies and using them to defeat more enemies. -
- Game made in roughly 8 hours for a private game jam with friends. -
-
- - - - - - -
- -
-
Miro -
-
-
-
Made using
-
- - -
-
-
-
Available on
-
- -
-
-
-
- Small chill game made mostly as an experiment for a nice 2D renderer mechanic. - Infect the world around you, breaking it down into its simplest components. -
- Game made in roughly 8 hours for a private game jam with friends. -
-
- - - - - - -
- -
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- - -
-
-
-
- Play as Yolka, a mountain goat who found an unknown egg. Keep the egg warm as you navigate the 3 - distinct worlds, and bring it to the hottest place you know: the depths of a volcano. -
- Game made in a week for Newgrounds July - Jam 2021, with the theme "Egg". -
-
- - - - - - - -
- -
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- -
-
-
-
- Tiny idle simulation game where you manage a team of randomly generated little fellas as they fight - other greachers in a sidescrolling world with beautiful procedurally generated graphics. -
- Game made in 2 weeks for LOWREZJAM 2021, with the - theme "Minibeasts". -
-
- - - - - - -
- -
- -
-
-
Made using
-
- -
-
-
-
Available on
-
- - -
-
-
-
- A top-down stealth game where you play as a spy tasked with stealing important data from a rivaling - government. Your task would be easy enough if your objective wasn’t in a underground top-secret - facility handling an alien outbreak. Without access to conventional stealth techniques, use corpses - of your enemies to sneak through the battlefield. -
- Game made in 72 hours for Ludum Dare 48, with - the theme "Deeper and deeper". -
-
- - - - - - - -
-
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- -
-
-
-
- A simple pacman-inspired arcade game. Try to grab all the stars in a randomly generated maze before - the time expires, while your controls are scattered all over the screen. Get as far as you can to - get the highest score. -
- Game made in 8 hours for Jam Jam, a local - in-person event organized by KNTG Polygon, with - the theme "One Click". -
-
- - - - - - -
-
- -
-
-
Made using
-
- - -
-
-
-
Available on
-
- -
-
-
-
- You just got your first guitar, and through sheer luck managed to land in the king's throne room, - trying to entertain him. Sadly, his subjects aren't huge fans of your music. Dodge them while trying - to play the best you can, or the king won't be merciful. -
- Game made in 48 hours for a special solo game jam among friends. My theme was "Power at a price". -
-
- - - - - -
-
- -
-
-
Made using
-
- -
-
-
-
Available on
-
- - -
-
-
-
- A quick movement focused platformer that tests your short term memory. Survive the trap system of an - ancient temple! Dash through the lanterns in the correct order before the time runs out, or face - certain death! -
- Game made in 48 hours for Ludum Dare Compo 47 - with the theme "Stuck in a loop". -
-
- - - - -
-
- - ); +export default function Games() { + return ( + <> +
+
+ Game Projects +
+
+ my game projects, mostly from game jams +
+
+ { + projects.map((project) => ( + Project(project) + )) + } +
+
+ + ); } diff --git a/front/src/pages/projects.css b/front/src/pages/projects.css deleted file mode 100644 index f9cc07f..0000000 --- a/front/src/pages/projects.css +++ /dev/null @@ -1,137 +0,0 @@ -.icon { - display: inline; - width: 32px; - height: 32px; - transition: 0.3s; - transform-origin: center; - filter: brightness(70%) -} - -.icon:hover { - filter: brightness(80%); -} - -.icon-row { - width: 240px; - height: 36px; -} - -.icon-container { - height: 36px; - float: right; -} - -.icon-text { - width: auto; - height: 36px; - line-height: 36px; - float: left; - vertical-align: middle; - margin-right: 8px; - color: #5c6370; -} - -.projects-container { - width: 100%; - max-width: 1120px; - margin: auto; - margin-top: 24pt; - margin-bottom: 48pt; - align-items: center; - justify-content: center; - align-self: center; -} - -.project { - display: table; - align-self: center; - clear: both; - margin-bottom: 24pt; -} - -.project-info { - font-size: 14pt; -} - -.project-description { - font-size: 16pt; - text-align: justify; -} - -.project-image-gallery { - margin-left: 24px; - margin-right: 10px; -} - -@media (max-width: 1150px) { - .project-title { - text-align: center; - font-size: 24pt; - margin-bottom: 8px; - text-decoration-line: underline; - } - - .project-image-gallery { - margin: 60px auto; - width: 330px; - height: 220px; - } - - .project-info { - float: none; - width: 90%; - margin: auto; - } - - .project-description { - font-size: 14pt; - } -} - -@media (max-width: 1150px) and (min-width: 480px) { - .project-title { - text-align: center; - font-size: 24pt; - margin-bottom: 8px; - text-decoration-line: underline; - } - .project-image-gallery { - margin: 60px auto; - width: 480px; - height: 360px; - } - - .project-info { - float: none; - width: 90%; - margin: auto; - } - - .project-description { - font-size: 14pt; - } -} - -@media (min-width: 1150px) { - .project-title { - text-align: left; - font-size: 32pt; - margin-bottom: 8px; - text-decoration-line: underline; - } - .project-image-gallery { - float: right; - width: 480px; - height: 360px; - } - .project-info { - float: left; - max-width: 600px; - } - - .project-description { - font-size: 16pt; - } -} - - diff --git a/front/src/pages/projects.tsx b/front/src/pages/projects.tsx index 4e64704..ed68529 100644 --- a/front/src/pages/projects.tsx +++ b/front/src/pages/projects.tsx @@ -1,5 +1,7 @@ -import './projects.css'; -import Carousel from '../components/carousel'; +import { Project, ProjectDescriptor } from '../components/project'; +import projectsJson from '../data/projects.json'; + +const projects: ProjectDescriptor[] = projectsJson as ProjectDescriptor[]; export default function Projects() { return ( @@ -14,36 +16,11 @@ export default function Projects() {
- -
- -
-
-
Made using
-
- -
-
-
-
Available on
-
- -
-
-
-
- The Spirit Mod is one of the largest mods for Terraria: with more than 1300 items, 8 bosses, and - hundreds of enemies, as well as 3 new events and 3 brand new biomes, the mod has a lot to offer. -
- I had the privilege of contributing some system code, mainly the "Stargoop" system. -
-
- - - - - -
+ { + projects.map((project) => ( + Project(project) + )) + }
); -- cgit v1.3.1