From b8b75dd8e2303b85789d0ba05020980ae11d7b4b Mon Sep 17 00:00:00 2001 From: belledw Date: Sun, 1 Feb 2026 05:31:13 +0000 Subject: [PATCH 01/27] Adding backend support for fetching games by their contributors (WIP) --- server/game_dev/serializers.py | 50 ++++++++++++++++++++++++++++++---- server/game_dev/urls.py | 6 ++-- server/game_dev/views.py | 14 ++++++++-- 3 files changed, 61 insertions(+), 9 deletions(-) diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index a9e5c811..1cfa6d95 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -18,7 +18,8 @@ class Meta: # This is child serializer of GameSerializer class GameContributorSerializer(serializers.ModelSerializer): - member_id = serializers.IntegerField(source="member.id") # to link contributors to their member/[id] page + # to link contributors to their member/[id] page + member_id = serializers.IntegerField(source="member.id") name = serializers.CharField(source="member.name") class Meta: @@ -35,7 +36,8 @@ class GamesSerializer(serializers.ModelSerializer): class Meta: model = Game - fields = ('id', 'name', 'description', 'completion', 'active', 'hostURL', 'itchEmbedID', 'thumbnail', 'event', "contributors") + fields = ('id', 'name', 'description', 'completion', 'active', + 'hostURL', 'itchEmbedID', 'thumbnail', 'event', "contributors") # Contributor serializer for name and role @@ -54,13 +56,16 @@ class Meta: class GameshowcaseSerializer(serializers.ModelSerializer): game_id = serializers.IntegerField(source='game.id', read_only=True) game_name = serializers.CharField(source='game.name', read_only=True) - game_description = serializers.CharField(source='game.description', read_only=True) - game_cover_thumbnail = serializers.ImageField(source='game.thumbnail', read_only=True) + game_description = serializers.CharField( + source='game.description', read_only=True) + game_cover_thumbnail = serializers.ImageField( + source='game.thumbnail', read_only=True) contributors = serializers.SerializerMethodField() class Meta: model = GameShowcase - fields = ('game_id', 'game_name', 'game_description', 'description', 'contributors', 'game_cover_thumbnail') + fields = ('game_id', 'game_name', 'game_description', + 'description', 'contributors', 'game_cover_thumbnail') def get_contributors(self, obj): # Always fetch contributors from GameContributor for the related game @@ -68,6 +73,41 @@ def get_contributors(self, obj): return ShowcaseContributorSerializer(contributors, many=True).data +class ContributorGameInfoSerializer(serializers.ModelSerializer): + + class Meta: + model = Game + fields = ('name', 'thumbnail', + 'description') + + +class ContributorGameSerializer(serializers.ModelSerializer): + game_id = serializers.IntegerField(source='game.id', read_only=True) + game_data = serializers.SerializerMethodField() + + class Meta: + model = GameContributor + fields = ['game_id', 'game_data'] + + def get_game_data(self, obj): + game_data = Game.objects.get(id=obj.game_id) + return ContributorGameInfoSerializer(game_data).data + + +class ContributorGamesListSerializer(serializers.ModelSerializer): + member = serializers.IntegerField( + source='GameContributor.member', read_only=True) + games = serializers.SerializerMethodField() + + class Meta: + model = GameContributor + fields = ('member', 'games') + + def get_games(self, obj): + games = GameContributor.objects.filter(member=obj.member) + return ContributorGameSerializer(games, many=True).data + + class MemberSerializer(serializers.ModelSerializer): class Meta: model = Member diff --git a/server/game_dev/urls.py b/server/game_dev/urls.py index 1e7f682b..c19abf1d 100644 --- a/server/game_dev/urls.py +++ b/server/game_dev/urls.py @@ -1,10 +1,12 @@ from django.urls import path -from .views import EventListAPIView, EventDetailAPIView, GamesDetailAPIView, GameshowcaseAPIView, MemberAPIView +from .views import EventListAPIView, EventDetailAPIView, GamesDetailAPIView, GameshowcaseAPIView, MemberAPIView, MemberGameAPIView urlpatterns = [ path("events/", EventListAPIView.as_view(), name="events-list"), path("events//", EventDetailAPIView.as_view()), path("games//", GamesDetailAPIView.as_view()), - path("gameshowcase/", GameshowcaseAPIView.as_view(), name="gameshowcase-api"), # Updated line for GameShowcase endpoint + path("games/contributor/", MemberGameAPIView.as_view()), + # Updated line for GameShowcase endpoint + path("gameshowcase/", GameshowcaseAPIView.as_view(), name="gameshowcase-api"), path('members//', MemberAPIView.as_view()) ] diff --git a/server/game_dev/views.py b/server/game_dev/views.py index d78482c4..741262dd 100644 --- a/server/game_dev/views.py +++ b/server/game_dev/views.py @@ -1,6 +1,6 @@ from rest_framework import generics -from .serializers import GamesSerializer, GameshowcaseSerializer, EventSerializer, MemberSerializer -from .models import Game, GameShowcase, Event, Member +from .serializers import ContributorGamesListSerializer, GamesSerializer, GameshowcaseSerializer, EventSerializer, MemberSerializer +from .models import Game, GameContributor, GameShowcase, Event, Member from django.utils import timezone from rest_framework.views import APIView from rest_framework.response import Response @@ -70,6 +70,16 @@ def get(self, request): return Response(serializer.data) +class MemberGameAPIView(APIView): + lookup_url_kwarg = "member" + + def get(self, request, member): + contributions = GameContributor.objects.filter( + member=self.kwargs["member"]) + serializer = ContributorGamesListSerializer(contributions, many=True) + return Response(serializer.data) + + class MemberAPIView(generics.RetrieveAPIView): serializer_class = MemberSerializer lookup_field = "id" From 894a048c62c32d6111c1d0607284e7162e77cc3c Mon Sep 17 00:00:00 2001 From: belledw Date: Sun, 1 Feb 2026 05:41:16 +0000 Subject: [PATCH 02/27] Added backend support for fetching games by their contributors --- server/game_dev/serializers.py | 21 ++++----------------- server/game_dev/urls.py | 5 +++-- server/game_dev/views.py | 6 +++--- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index 1cfa6d95..531e72dd 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -73,7 +73,7 @@ def get_contributors(self, obj): return ShowcaseContributorSerializer(contributors, many=True).data -class ContributorGameInfoSerializer(serializers.ModelSerializer): +class ContributorGameDataSerializer(serializers.ModelSerializer): class Meta: model = Game @@ -83,29 +83,16 @@ class Meta: class ContributorGameSerializer(serializers.ModelSerializer): game_id = serializers.IntegerField(source='game.id', read_only=True) + role = serializers.CharField(read_only=True) game_data = serializers.SerializerMethodField() class Meta: model = GameContributor - fields = ['game_id', 'game_data'] + fields = ['game_id', 'role', 'game_data'] def get_game_data(self, obj): game_data = Game.objects.get(id=obj.game_id) - return ContributorGameInfoSerializer(game_data).data - - -class ContributorGamesListSerializer(serializers.ModelSerializer): - member = serializers.IntegerField( - source='GameContributor.member', read_only=True) - games = serializers.SerializerMethodField() - - class Meta: - model = GameContributor - fields = ('member', 'games') - - def get_games(self, obj): - games = GameContributor.objects.filter(member=obj.member) - return ContributorGameSerializer(games, many=True).data + return ContributorGameDataSerializer(game_data).data class MemberSerializer(serializers.ModelSerializer): diff --git a/server/game_dev/urls.py b/server/game_dev/urls.py index c19abf1d..16ee3bcd 100644 --- a/server/game_dev/urls.py +++ b/server/game_dev/urls.py @@ -1,11 +1,12 @@ from django.urls import path -from .views import EventListAPIView, EventDetailAPIView, GamesDetailAPIView, GameshowcaseAPIView, MemberAPIView, MemberGameAPIView +from .views import ContributorGamesListAPIView, EventListAPIView, EventDetailAPIView, GamesDetailAPIView, GameshowcaseAPIView, MemberAPIView urlpatterns = [ path("events/", EventListAPIView.as_view(), name="events-list"), path("events//", EventDetailAPIView.as_view()), path("games//", GamesDetailAPIView.as_view()), - path("games/contributor/", MemberGameAPIView.as_view()), + path("games/contributor/", + ContributorGamesListAPIView.as_view()), # Updated line for GameShowcase endpoint path("gameshowcase/", GameshowcaseAPIView.as_view(), name="gameshowcase-api"), path('members//', MemberAPIView.as_view()) diff --git a/server/game_dev/views.py b/server/game_dev/views.py index 741262dd..c9b1d754 100644 --- a/server/game_dev/views.py +++ b/server/game_dev/views.py @@ -1,5 +1,5 @@ from rest_framework import generics -from .serializers import ContributorGamesListSerializer, GamesSerializer, GameshowcaseSerializer, EventSerializer, MemberSerializer +from .serializers import ContributorGameSerializer, GamesSerializer, GameshowcaseSerializer, EventSerializer, MemberSerializer from .models import Game, GameContributor, GameShowcase, Event, Member from django.utils import timezone from rest_framework.views import APIView @@ -70,13 +70,13 @@ def get(self, request): return Response(serializer.data) -class MemberGameAPIView(APIView): +class ContributorGamesListAPIView(APIView): lookup_url_kwarg = "member" def get(self, request, member): contributions = GameContributor.objects.filter( member=self.kwargs["member"]) - serializer = ContributorGamesListSerializer(contributions, many=True) + serializer = ContributorGameSerializer(contributions, many=True) return Response(serializer.data) From 5867c237f64b254ced8222632c8a4f3735437108 Mon Sep 17 00:00:00 2001 From: belledw Date: Sun, 1 Feb 2026 06:24:01 +0000 Subject: [PATCH 03/27] Added hook to fetch game data from backend by contributor id --- client/src/hooks/useContributor.ts | 26 ++++++++++++++++++++++++++ server/game_dev/urls.py | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 client/src/hooks/useContributor.ts diff --git a/client/src/hooks/useContributor.ts b/client/src/hooks/useContributor.ts new file mode 100644 index 00000000..bdd831d5 --- /dev/null +++ b/client/src/hooks/useContributor.ts @@ -0,0 +1,26 @@ +import { useQuery } from "@tanstack/react-query"; + +import api from "@/lib/api"; + +type ApiContributorGameData = { + name: string; + thumbnail: string; + description: string; +}; + +type ApiContributorGamesList = { + game_id: number; + role: string; + game_data: ApiContributorGameData; +}; + +export const useContributor = (member: number) => { + return useQuery({ + queryKey: ["contributor", member], + queryFn: async () => { + const response = await api.get(`/games/contributor/${member}/`); + return response.data; + }, + enabled: !!member, + }); +}; diff --git a/server/game_dev/urls.py b/server/game_dev/urls.py index 16ee3bcd..179afef8 100644 --- a/server/game_dev/urls.py +++ b/server/game_dev/urls.py @@ -5,7 +5,7 @@ path("events/", EventListAPIView.as_view(), name="events-list"), path("events//", EventDetailAPIView.as_view()), path("games//", GamesDetailAPIView.as_view()), - path("games/contributor/", + path("games/contributor//", ContributorGamesListAPIView.as_view()), # Updated line for GameShowcase endpoint path("gameshowcase/", GameshowcaseAPIView.as_view(), name="gameshowcase-api"), From 5eb4f8321eb622848151e4f67d8ea48192266c2a Mon Sep 17 00:00:00 2001 From: belledw Date: Sun, 1 Feb 2026 07:47:55 +0000 Subject: [PATCH 04/27] Project section in Member Profile Page now fetches data from backend --- client/src/components/main/MemberProfile.tsx | 17 +--- .../components/ui/MemberProjectSection.tsx | 80 +++++++++++++++++++ client/src/hooks/useContributor.ts | 5 +- 3 files changed, 86 insertions(+), 16 deletions(-) create mode 100644 client/src/components/ui/MemberProjectSection.tsx diff --git a/client/src/components/main/MemberProfile.tsx b/client/src/components/main/MemberProfile.tsx index 8d25ffc3..16268d8d 100644 --- a/client/src/components/main/MemberProfile.tsx +++ b/client/src/components/main/MemberProfile.tsx @@ -2,6 +2,8 @@ import Image from "next/image"; +import MemberProjectSection from "../ui/MemberProjectSection"; + // unused atm, as the member isnt linked a project on the backend /* export type MemberProfileProject = { id: string; @@ -74,20 +76,7 @@ export function MemberProfile({ member }: MemberProfileProps) { {/* Template for Projects section */}

Projects

-
- {/* Div below is a single project card */} -
-
- {/* Image and/or Link to Project */} -
-

- {/* Project Title */} -

-

- {/* Project description */} -

-
-
+
); diff --git a/client/src/components/ui/MemberProjectSection.tsx b/client/src/components/ui/MemberProjectSection.tsx new file mode 100644 index 00000000..dd91ded3 --- /dev/null +++ b/client/src/components/ui/MemberProjectSection.tsx @@ -0,0 +1,80 @@ +import Image from "next/image"; +import React from "react"; + +import { useContributor } from "@/hooks/useContributor"; + +type MemberProjectSectionProps = { + id: string; +}; + +// From useGamesShowcase +function getGameCoverUrl( + game_cover_thumbnail: string | null | undefined, +): string { + if (!game_cover_thumbnail) return "/game_dev_club_logo.svg"; + if (game_cover_thumbnail.startsWith("http")) return game_cover_thumbnail; + // Use environment variable for Django backend base URL + const apiBaseUrl = + process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000"; + return `${apiBaseUrl}${game_cover_thumbnail}`; +} + +export default function MemberProjectSection(props: MemberProjectSectionProps) { + const { data: games, isPending, isError, error } = useContributor(props.id); + + { + /* Error handling from Games Showcase page */ + } + if (isPending) { + return ( +
+

Loading games...

+
+ ); + } + + if (isError) { + const errorMessage = + error?.response?.status === 404 + ? "Games not found." + : "Failed to Load Games"; + return ( +
+

+ {errorMessage} +

+
+ ); + } + + return ( +
+ {!games || games.length === 0 ? ( +

No games available.

+ ) : ( +
+ {games.map((game) => ( + +
+
+ {`${game.game_data.name} +
+

+ {game.game_data.name} +

+

+ {game.game_data.description} +

+
+
+ ))} +
+ )} +
+ ); +} diff --git a/client/src/hooks/useContributor.ts b/client/src/hooks/useContributor.ts index bdd831d5..d29e7843 100644 --- a/client/src/hooks/useContributor.ts +++ b/client/src/hooks/useContributor.ts @@ -1,4 +1,5 @@ import { useQuery } from "@tanstack/react-query"; +import { AxiosError } from "axios"; import api from "@/lib/api"; @@ -14,8 +15,8 @@ type ApiContributorGamesList = { game_data: ApiContributorGameData; }; -export const useContributor = (member: number) => { - return useQuery({ +export const useContributor = (member: string | string[] | undefined) => { + return useQuery({ queryKey: ["contributor", member], queryFn: async () => { const response = await api.get(`/games/contributor/${member}/`); From 9025848190c3d410b508bc84e3f320087cc0441f Mon Sep 17 00:00:00 2001 From: belledw Date: Mon, 2 Feb 2026 03:51:02 +0000 Subject: [PATCH 05/27] Added links to the game detail page for each game on the member profile --- client/src/components/main/MemberProfile.tsx | 7 +++++-- client/src/components/ui/MemberProjectSection.tsx | 10 +++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/client/src/components/main/MemberProfile.tsx b/client/src/components/main/MemberProfile.tsx index 16268d8d..55277dcc 100644 --- a/client/src/components/main/MemberProfile.tsx +++ b/client/src/components/main/MemberProfile.tsx @@ -1,5 +1,6 @@ "use client"; +import { Sparkles } from "lucide-react"; import Image from "next/image"; import MemberProjectSection from "../ui/MemberProjectSection"; @@ -73,9 +74,11 @@ export function MemberProfile({ member }: MemberProfileProps) { - {/* Template for Projects section */}
-

Projects

+

+ Projects{" "} + +

diff --git a/client/src/components/ui/MemberProjectSection.tsx b/client/src/components/ui/MemberProjectSection.tsx index dd91ded3..e8dbd969 100644 --- a/client/src/components/ui/MemberProjectSection.tsx +++ b/client/src/components/ui/MemberProjectSection.tsx @@ -1,4 +1,5 @@ import Image from "next/image"; +import Link from "next/link"; import React from "react"; import { useContributor } from "@/hooks/useContributor"; @@ -56,13 +57,20 @@ export default function MemberProjectSection(props: MemberProjectSectionProps) { {games.map((game) => (
-
+
{`${game.game_data.name} + + Visit Game +

{game.game_data.name} From 8ced90a2473564a81e6d196191634033a0c01a62 Mon Sep 17 00:00:00 2001 From: belledw Date: Tue, 3 Feb 2026 05:35:11 +0000 Subject: [PATCH 06/27] Separated sections for games and artwork on Member Profile page. --- client/src/components/main/MemberProfile.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/components/main/MemberProfile.tsx b/client/src/components/main/MemberProfile.tsx index 55277dcc..62ec5582 100644 --- a/client/src/components/main/MemberProfile.tsx +++ b/client/src/components/main/MemberProfile.tsx @@ -1,6 +1,6 @@ "use client"; -import { Sparkles } from "lucide-react"; +import { Palette, Sparkles } from "lucide-react"; import Image from "next/image"; import MemberProjectSection from "../ui/MemberProjectSection"; @@ -74,12 +74,16 @@ export function MemberProfile({ member }: MemberProfileProps) {

-
+

- Projects{" "} + Games

+

+ Artwork + +

); From cc8148ebad9ac9b5d50f9fc0011eaf263df991b2 Mon Sep 17 00:00:00 2001 From: belledw Date: Tue, 3 Feb 2026 05:51:33 +0000 Subject: [PATCH 07/27] Removed 'line too long' error from game_dev urls.py --- server/game_dev/urls.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/game_dev/urls.py b/server/game_dev/urls.py index 7b86b669..5a713a6a 100644 --- a/server/game_dev/urls.py +++ b/server/game_dev/urls.py @@ -1,5 +1,6 @@ from django.urls import path -from .views import ContributorGamesListAPIView, EventListAPIView, EventDetailAPIView, GamesDetailAPIView, GameshowcaseAPIView, MemberAPIView, CommitteeAPIView +from .views import ContributorGamesListAPIView, EventListAPIView, EventDetailAPIView +from .views import GamesDetailAPIView, GameshowcaseAPIView, MemberAPIView, CommitteeAPIView urlpatterns = [ path("events/", EventListAPIView.as_view(), name="events-list"), From 8fced48eafbcd76aa08bd91734abb71596edc84c Mon Sep 17 00:00:00 2001 From: Phillip Date: Wed, 4 Feb 2026 09:06:58 +0000 Subject: [PATCH 08/27] Fix link to member pages in IndividualGamePage component --- client/src/pages/games/[id].tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/games/[id].tsx b/client/src/pages/games/[id].tsx index a83c5102..d892a13d 100644 --- a/client/src/pages/games/[id].tsx +++ b/client/src/pages/games/[id].tsx @@ -111,7 +111,7 @@ export default function IndividualGamePage() { {game.contributors.map((c) => ( {c.name} From 3374f54764a26668f852fb0fddb21c9e19f08d92 Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 7 Feb 2026 03:21:01 +0000 Subject: [PATCH 09/27] Re-positioned member initials to be exactly in the centre of the frame --- client/src/components/main/MemberProfile.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/main/MemberProfile.tsx b/client/src/components/main/MemberProfile.tsx index 62ec5582..d076c0c3 100644 --- a/client/src/components/main/MemberProfile.tsx +++ b/client/src/components/main/MemberProfile.tsx @@ -52,7 +52,7 @@ export function MemberProfile({ member }: MemberProfileProps) { /> ) : (
- {initials} +

{initials}

)}
From 47aed7066ade51a1df6596f3d825ad0bd950bb6e Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 7 Feb 2026 03:32:59 +0000 Subject: [PATCH 10/27] Added documentation to backend --- server/game_dev/serializers.py | 2 ++ server/game_dev/views.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index 531e72dd..7ad1c4ff 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -74,6 +74,7 @@ def get_contributors(self, obj): class ContributorGameDataSerializer(serializers.ModelSerializer): + # Serializes data in Game model to display on a contributor's profile. class Meta: model = Game @@ -82,6 +83,7 @@ class Meta: class ContributorGameSerializer(serializers.ModelSerializer): + # Matches games in the GameContributor model to the information about them in the Game model. game_id = serializers.IntegerField(source='game.id', read_only=True) role = serializers.CharField(read_only=True) game_data = serializers.SerializerMethodField() diff --git a/server/game_dev/views.py b/server/game_dev/views.py index 73ec71b7..d1f7c42f 100644 --- a/server/game_dev/views.py +++ b/server/game_dev/views.py @@ -71,6 +71,10 @@ def get(self, request): class ContributorGamesListAPIView(APIView): + """ + GET /api/games/contributor// + Returns the games a particular member has contributed to. + """ lookup_url_kwarg = "member" def get(self, request, member): From f9b6cc0eb057cb907b495b560dcbde8bd29820d4 Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 7 Feb 2026 03:34:54 +0000 Subject: [PATCH 11/27] Removed duplicate GameShowcase path in urls.py --- server/game_dev/urls.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/server/game_dev/urls.py b/server/game_dev/urls.py index 5a713a6a..7e103bf9 100644 --- a/server/game_dev/urls.py +++ b/server/game_dev/urls.py @@ -6,13 +6,11 @@ path("events/", EventListAPIView.as_view(), name="events-list"), path("events//", EventDetailAPIView.as_view()), path("games//", GamesDetailAPIView.as_view()), - # Updated line for GameShowcase endpoint - path("gameshowcase/", GameshowcaseAPIView.as_view(), name="gameshowcase-api"), - path('members//', MemberAPIView.as_view()), - path("about/", CommitteeAPIView.as_view()), path("games/contributor//", ContributorGamesListAPIView.as_view()), # Updated line for GameShowcase endpoint path("gameshowcase/", GameshowcaseAPIView.as_view(), name="gameshowcase-api"), + path('members//', MemberAPIView.as_view()), + path("about/", CommitteeAPIView.as_view()), path('members//', MemberAPIView.as_view()) ] From cd2451c825a0c63fa47147fa24189abc5d564e0c Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 7 Feb 2026 03:47:12 +0000 Subject: [PATCH 12/27] Prettified error messages in MemberProjectSection --- .../components/ui/MemberProjectSection.tsx | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/client/src/components/ui/MemberProjectSection.tsx b/client/src/components/ui/MemberProjectSection.tsx index e8dbd969..cfe209e8 100644 --- a/client/src/components/ui/MemberProjectSection.tsx +++ b/client/src/components/ui/MemberProjectSection.tsx @@ -21,19 +21,11 @@ function getGameCoverUrl( } export default function MemberProjectSection(props: MemberProjectSectionProps) { - const { data: games, isPending, isError, error } = useContributor(props.id); + const { data: games, isError, error } = useContributor(props.id); { /* Error handling from Games Showcase page */ } - if (isPending) { - return ( -
-

Loading games...

-
- ); - } - if (isError) { const errorMessage = error?.response?.status === 404 @@ -41,7 +33,10 @@ export default function MemberProjectSection(props: MemberProjectSectionProps) { : "Failed to Load Games"; return (
-

+

{errorMessage}

@@ -51,7 +46,9 @@ export default function MemberProjectSection(props: MemberProjectSectionProps) { return (
{!games || games.length === 0 ? ( -

No games available.

+

+ No games available. +

) : (
{games.map((game) => ( From 8dd2a5b22306f6c2076de3fdfc573f3565d71c78 Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 7 Feb 2026 06:04:59 +0000 Subject: [PATCH 13/27] Games link now opens in a new tab --- client/src/components/ui/MemberProjectSection.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/components/ui/MemberProjectSection.tsx b/client/src/components/ui/MemberProjectSection.tsx index cfe209e8..1b5f7e9a 100644 --- a/client/src/components/ui/MemberProjectSection.tsx +++ b/client/src/components/ui/MemberProjectSection.tsx @@ -1,3 +1,4 @@ +import { ArrowUpRight } from "lucide-react"; import Image from "next/image"; import Link from "next/link"; import React from "react"; @@ -63,10 +64,11 @@ export default function MemberProjectSection(props: MemberProjectSectionProps) { className="group-hover:brightness-75 group-hover:duration-200" /> window.open(`/games/${game.game_id}`)} > - Visit Game + Visit Game

From e24bd1ee2b3431e59a6182103460dd88263193c9 Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 7 Feb 2026 07:37:41 +0000 Subject: [PATCH 14/27] Removed unused commented code in MemberProfile.tsx --- client/src/components/main/MemberProfile.tsx | 9 --------- 1 file changed, 9 deletions(-) diff --git a/client/src/components/main/MemberProfile.tsx b/client/src/components/main/MemberProfile.tsx index d076c0c3..3bbd4c1b 100644 --- a/client/src/components/main/MemberProfile.tsx +++ b/client/src/components/main/MemberProfile.tsx @@ -5,14 +5,6 @@ import Image from "next/image"; import MemberProjectSection from "../ui/MemberProjectSection"; -// unused atm, as the member isnt linked a project on the backend -/* export type MemberProfileProject = { - id: string; - name: string; - description?: string; - href?: string; -}; */ - export type MemberProfileData = { name: string; about: string; @@ -22,7 +14,6 @@ export type MemberProfileData = { type MemberProfileProps = { member: MemberProfileData; - //projects?: MemberProfileProject[]; }; function initialsFromName(name: string) { From 59af88cdb83927d862df8650f3159f68b117a50d Mon Sep 17 00:00:00 2001 From: belledw Date: Sat, 14 Feb 2026 06:19:52 +0000 Subject: [PATCH 15/27] Fixing flake8 issue --- server/game_dev/serializers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index c8fcb345..90db3a20 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -104,7 +104,8 @@ class Meta: def get_game_data(self, obj): game_data = Game.objects.get(id=obj.game_id) return ContributorGameDataSerializer(game_data).data - + + class SocialMediaSerializer(serializers.ModelSerializer): class Meta: model = SocialMedia From 8b83aa3e2db2222e74ac170237f35f8aa022f2ac Mon Sep 17 00:00:00 2001 From: belledw Date: Wed, 18 Feb 2026 01:47:19 +0000 Subject: [PATCH 16/27] Removed use of pixels unit in MemberProjectSection --- client/src/components/ui/MemberProjectSection.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/ui/MemberProjectSection.tsx b/client/src/components/ui/MemberProjectSection.tsx index 1b5f7e9a..86c23914 100644 --- a/client/src/components/ui/MemberProjectSection.tsx +++ b/client/src/components/ui/MemberProjectSection.tsx @@ -64,7 +64,7 @@ export default function MemberProjectSection(props: MemberProjectSectionProps) { className="group-hover:brightness-75 group-hover:duration-200" /> window.open(`/games/${game.game_id}`)} > From 56b0832870cc676542e66eb8650575ebdc064921 Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 21 Feb 2026 15:19:48 +0800 Subject: [PATCH 17/27] Fixed mistake with media serving --- server/api/settings.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/api/settings.py b/server/api/settings.py index 1f4df893..f3d20cc0 100644 --- a/server/api/settings.py +++ b/server/api/settings.py @@ -148,8 +148,11 @@ # The directory to store images and other media MEDIA_ROOT = BASE_DIR/"media" -# The path to serve images and other media -MEDIA_URL = "/media/" +# The url to serve images and other media +if DEBUG: + MEDIA_URL = "https://localhost:8000/media/" +else: + MEDIA_URL = f"https://{ALLOWED_HOSTS[0]}/media/" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" From 8199a7b02e01da4c16c9f9b1294e75c1b037e0bb Mon Sep 17 00:00:00 2001 From: James Lee Date: Sat, 21 Feb 2026 15:36:26 +0800 Subject: [PATCH 18/27] Correcting workflow --- .github/workflows/ci-backend.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci-backend.yml b/.github/workflows/ci-backend.yml index 9f10b043..2f6583d6 100644 --- a/.github/workflows/ci-backend.yml +++ b/.github/workflows/ci-backend.yml @@ -58,6 +58,7 @@ jobs: env: EMAIL_PORT: 1025 FRONTEND_URL: http://localhost:3000 + API_ALLOWED_HOSTS: localhost run: poetry run python manage.py migrate - name: Run tests đŸ§Ș @@ -66,6 +67,7 @@ jobs: JWT_SIGNING_KEY: NjMgNmYgNmQgNmQgNzUgNmUgNjkgNzQgNzkgNzMgNzAgNjkgNzIgNjkgNzQgNjYgNmYgNzUgNmUgNjQgNjEgNzQgNjkgNmYgNmU= EMAIL_PORT: 1025 FRONTEND_URL: http://localhost:3000 + API_ALLOWED_HOSTS: localhost run: | poetry run python3 -m pip install coverage poetry run coverage run manage.py test From b39b6bca52a50f036dbb56112a17f1a4b6cab95b Mon Sep 17 00:00:00 2001 From: belledw Date: Sun, 22 Feb 2026 10:35:17 +0000 Subject: [PATCH 19/27] Resolved url http error --- server/api/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/api/settings.py b/server/api/settings.py index f3d20cc0..699f1a5a 100644 --- a/server/api/settings.py +++ b/server/api/settings.py @@ -150,7 +150,7 @@ # The url to serve images and other media if DEBUG: - MEDIA_URL = "https://localhost:8000/media/" + MEDIA_URL = "http://localhost:8000/media/" else: MEDIA_URL = f"https://{ALLOWED_HOSTS[0]}/media/" From 4bb29b2644bc9ce35c5138652e201701920f1554 Mon Sep 17 00:00:00 2001 From: belledw Date: Sun, 22 Feb 2026 10:41:11 +0000 Subject: [PATCH 20/27] Removed GetGameCoverUrl function from MemberProjectSection --- client/src/components/ui/MemberProjectSection.tsx | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/client/src/components/ui/MemberProjectSection.tsx b/client/src/components/ui/MemberProjectSection.tsx index 86c23914..046ca556 100644 --- a/client/src/components/ui/MemberProjectSection.tsx +++ b/client/src/components/ui/MemberProjectSection.tsx @@ -9,18 +9,6 @@ type MemberProjectSectionProps = { id: string; }; -// From useGamesShowcase -function getGameCoverUrl( - game_cover_thumbnail: string | null | undefined, -): string { - if (!game_cover_thumbnail) return "/game_dev_club_logo.svg"; - if (game_cover_thumbnail.startsWith("http")) return game_cover_thumbnail; - // Use environment variable for Django backend base URL - const apiBaseUrl = - process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000"; - return `${apiBaseUrl}${game_cover_thumbnail}`; -} - export default function MemberProjectSection(props: MemberProjectSectionProps) { const { data: games, isError, error } = useContributor(props.id); @@ -57,7 +45,7 @@ export default function MemberProjectSection(props: MemberProjectSectionProps) {

{`${game.game_data.name} Date: Fri, 27 Feb 2026 21:40:03 +0800 Subject: [PATCH 21/27] Merge branch 'main' into issue-70-Add_projects_to_member_pages --- .gitignore | 1 + .../admin-dashboard/committee.md | 13 + client/documentation/admin-dashboard/games.md | 31 ++ .../documentation/admin-dashboard/members.md | 17 + client/documentation/pages/about-committee.md | 11 + client/package-lock.json | 24 +- .../explosions/samj_cartoon_explosion.gif | Bin 0 -> 2741 bytes client/public/sfx/xplsion_0.mp3 | Bin 0 -> 85440 bytes client/public/sfx/xplsion_1.mp3 | Bin 0 -> 169920 bytes client/public/sfx/xplsion_2.mp3 | Bin 0 -> 130560 bytes client/public/sfx/xplsion_3.mp3 | Bin 0 -> 124800 bytes client/scripts/open-when-ready.js | 0 client/src/components/main/Navbar.tsx | 19 +- client/src/components/ui/Crater.tsx | 172 ++++++++ client/src/components/ui/DebrisBurst.tsx | 167 ++++++++ client/src/components/ui/EventDateDisplay.tsx | 54 +++ client/src/components/ui/Explosion.tsx | 95 +++++ client/src/components/ui/Smoke.tsx | 179 ++++++++ client/src/components/ui/eventCarousel.tsx | 46 +- client/src/contexts/ExplosionContext.tsx | 114 +++++ client/src/hooks/useEvents.ts | 1 - client/src/hooks/useExplosions.ts | 125 ++++++ client/src/pages/404.tsx | 205 +++++++++ client/src/pages/_app.tsx | 19 +- client/src/pages/about.tsx | 34 +- client/src/pages/events/[id].tsx | 21 +- client/src/pages/events/index.tsx | 32 +- client/src/pages/index.tsx | 51 ++- client/src/pages/members/[id].tsx | 3 +- client/src/styles/globals.css | 62 +++ client/src/trivia.json | 398 ++++++++++++++++++ server/game_dev/admin.py | 5 +- ...y => 0006_alter_member_profile_picture.py} | 0 .../{0005_committee.py => 0007_committee.py} | 0 ...mmittee_role.py => 0008_committee_role.py} | 2 +- ...ove_game_isitch_alter_game_itchembedid.py} | 0 ...ittee_id.py => 0010_alter_committee_id.py} | 2 +- ...athtothumbnail_game_thumbnail_and_more.py} | 2 +- ...e_role.py => 0012_alter_committee_role.py} | 2 +- ...event_date.py => 0013_alter_event_date.py} | 2 +- ...29_2104.py => 0014_merge_20260129_2104.py} | 4 +- ...31_1044.py => 0015_merge_20260131_1044.py} | 4 +- ...ameembedid_game_itchgameheight_and_more.py | 33 ++ ...31_1118.py => 0017_merge_20260131_1118.py} | 4 +- ...010_socialmedia.py => 0018_socialmedia.py} | 2 +- ...ame.py => 0019_alter_gameshowcase_game.py} | 2 +- ...0_merge_20260131_1118_0010_socialmedia.py} | 4 +- .../migrations/0021_merge_20260205_1434.py | 13 + .../migrations/0022_merge_20260214_1112.py | 13 + ...023_remove_socialmedia_socialmedianame.py} | 2 +- .../0024_alter_game_itchgameembedid.py | 23 + ...14_1347.py => 0025_merge_20260214_1347.py} | 4 +- .../migrations/0026_merge_20260214_1420.py | 13 + ...itchgameembedid_game_itchgameplayableid.py | 27 ++ server/game_dev/models.py | 13 + server/game_dev/serializers.py | 56 ++- server/poetry.lock | 6 +- server/pyproject.toml | 2 +- 58 files changed, 1960 insertions(+), 174 deletions(-) create mode 100644 client/documentation/admin-dashboard/committee.md create mode 100644 client/documentation/admin-dashboard/games.md create mode 100644 client/documentation/admin-dashboard/members.md create mode 100644 client/documentation/pages/about-committee.md create mode 100644 client/public/explosions/samj_cartoon_explosion.gif create mode 100644 client/public/sfx/xplsion_0.mp3 create mode 100644 client/public/sfx/xplsion_1.mp3 create mode 100644 client/public/sfx/xplsion_2.mp3 create mode 100644 client/public/sfx/xplsion_3.mp3 create mode 100644 client/scripts/open-when-ready.js create mode 100644 client/src/components/ui/Crater.tsx create mode 100644 client/src/components/ui/DebrisBurst.tsx create mode 100644 client/src/components/ui/EventDateDisplay.tsx create mode 100644 client/src/components/ui/Explosion.tsx create mode 100644 client/src/components/ui/Smoke.tsx create mode 100644 client/src/contexts/ExplosionContext.tsx create mode 100644 client/src/hooks/useExplosions.ts create mode 100644 client/src/pages/404.tsx create mode 100644 client/src/trivia.json rename server/game_dev/migrations/{0005_alter_member_profile_picture.py => 0006_alter_member_profile_picture.py} (100%) rename server/game_dev/migrations/{0005_committee.py => 0007_committee.py} (100%) rename server/game_dev/migrations/{0006_committee_role.py => 0008_committee_role.py} (94%) rename server/game_dev/migrations/{0006_remove_game_isitch_alter_game_itchembedid.py => 0009_remove_game_isitch_alter_game_itchembedid.py} (100%) rename server/game_dev/migrations/{0007_alter_committee_id.py => 0010_alter_committee_id.py} (91%) rename server/game_dev/migrations/{0007_rename_pathtothumbnail_game_thumbnail_and_more.py => 0011_rename_pathtothumbnail_game_thumbnail_and_more.py} (88%) rename server/game_dev/migrations/{0008_alter_committee_role.py => 0012_alter_committee_role.py} (92%) rename server/game_dev/migrations/{0008_alter_event_date.py => 0013_alter_event_date.py} (84%) rename server/game_dev/migrations/{0009_merge_20260129_2104.py => 0014_merge_20260129_2104.py} (61%) rename server/game_dev/migrations/{0009_merge_20260131_1044.py => 0015_merge_20260131_1044.py} (62%) create mode 100644 server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py rename server/game_dev/migrations/{0010_merge_20260131_1118.py => 0017_merge_20260131_1118.py} (64%) rename server/game_dev/migrations/{0010_socialmedia.py => 0018_socialmedia.py} (97%) rename server/game_dev/migrations/{0011_alter_gameshowcase_game.py => 0019_alter_gameshowcase_game.py} (90%) rename server/game_dev/migrations/{0011_merge_0010_merge_20260131_1118_0010_socialmedia.py => 0020_merge_0010_merge_20260131_1118_0010_socialmedia.py} (65%) create mode 100644 server/game_dev/migrations/0021_merge_20260205_1434.py create mode 100644 server/game_dev/migrations/0022_merge_20260214_1112.py rename server/game_dev/migrations/{0012_remove_socialmedia_socialmedianame.py => 0023_remove_socialmedia_socialmedianame.py} (82%) create mode 100644 server/game_dev/migrations/0024_alter_game_itchgameembedid.py rename server/game_dev/migrations/{0013_merge_20260214_1347.py => 0025_merge_20260214_1347.py} (60%) create mode 100644 server/game_dev/migrations/0026_merge_20260214_1420.py create mode 100644 server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py diff --git a/.gitignore b/.gitignore index f73c92b3..df4791e3 100644 --- a/.gitignore +++ b/.gitignore @@ -293,5 +293,6 @@ dist # misc .DS_Store +.cursor/ opt/ \ No newline at end of file diff --git a/client/documentation/admin-dashboard/committee.md b/client/documentation/admin-dashboard/committee.md new file mode 100644 index 00000000..5127371e --- /dev/null +++ b/client/documentation/admin-dashboard/committee.md @@ -0,0 +1,13 @@ +## Committee Members + +Profiles of the Committee Members of the club that are displayed on the about page. + +## Fields + +**Id:** Required and unique field for the club member that is on the committee. It is an integer field that corresponds to the raw integer id of a row in the Member table, as a Foreign Key if you know databases. + +**Role:** Required and unique field for the specific role in the committee that this member has. It is something known as an Enum (Enumeration), which has a discrete number of custom choices. You can choose from 'President', 'Vice President', 'Secretary', 'Treasurer', 'Marketing', 'Events OCM', 'Projects OCM', and 'Fresher Rep'. Since they must be unique, you can only have 8 objects in the Committee table at a time for now. This can definitely be changed in the future when the committee grows. + +## Other Notes + +Before making a Committee object in the Committee table, you must make a Member object for the person that's on the committee and then link it through the id (just to clarify) diff --git a/client/documentation/admin-dashboard/games.md b/client/documentation/admin-dashboard/games.md new file mode 100644 index 00000000..b87783e7 --- /dev/null +++ b/client/documentation/admin-dashboard/games.md @@ -0,0 +1,31 @@ +## Games + +Pages for games can be added and edited at the row 'Game' of the GAME_DEV section on the main admin page. + +### Fields + +**Name:** Required field for the game's name. A character field (includes letters, numbers and symbols) of maximum length 200 characters. + +**Descripiton:** Required field for the game's description. A text field. + +**Completion:** Required field for the game's completion. A multichoice option field with four options including: + - "Work in progress (Unplayable)" + - "Playable - In Development" + - "Beta - Stable but not Final" + - "Completed" + +**Active:** Required field for if the game is continued to be being worked on. A boolean field. + +**Host URL:** Optional field for the game's host URL. A URL field with a maximum length 2083 characters + +**Itch Embed ID:** Optional field for game's embed. If the field is empty the game will display a custom embed ID at the bottom of the page. This value can be gotten from the itch.io page of the game, at the bottom of the page there is an embed button, clicking this will bring up a full embed, the only part needed is the 7 digit number after "https://itch.io/embed/". + +**Thumbnail:** Required field for the game's thumbnail. This image is displayed on the game page in place of a game embed or displayed within the game embed before the play button is pressed. Must be an image file. + +**Event:** Optional field for the event at which the game was created. Links the game to an event. Foreign key field for an event. + +**Itch Game Embed ID:** Optional field for the game's game embed. This ID allows the web version of a game to be played inside the site. This value can be acquired in two ways, either by the developer or through looking in the page source. A developer can get the value by going to the distribution tab of their game and going to the embed game section this will bring up a full embed for the game and the only part needed is the 8 digit number after "https://html-classic.itch.zone/html/". By looking through the page source that link can also be found either in a div or an iframe on the page depending on if the game has been played. **This value is not attainable if there is no web version of the game. hosted on itch.** + +**Itch Game Width:** Required field for the game's game embed. This value is gotten in a similar way to the Itch Game Embed, however for the developer it's the number after "width=" and in the page source is found after "data-width=". + +**Itch Game Height:** Required field for the game's game embed. This value is gotten in a similar way to the Itch Game Embed, however for the developer it's the number after "height=" and in the page source is found after "data-height=". \ No newline at end of file diff --git a/client/documentation/admin-dashboard/members.md b/client/documentation/admin-dashboard/members.md new file mode 100644 index 00000000..f8fde6ad --- /dev/null +++ b/client/documentation/admin-dashboard/members.md @@ -0,0 +1,17 @@ +## Member Profiles + +Profiles of club members can be added and edited at the row 'Member' of the GAME_DEV section on the main admin page. + +### Fields + +**Name:** Required field for the member's name. A character field (includes letters, numbers and symbols) of maximum length 200 characters. + +**Active:** Checkbox to represent whether a member is an active participant in the club. If the checkbox is not ticked then the member's profile will not be displayed on the website. + +**Profile Picture:** Optional field to upload a profile picture. Must be an image file, and will display best if the image is at least 128 by 128 px in size. If no profile picture is provided then the member's initials will be displayed instead. + +**About:** Optional field for a bio. A character field of maximum length 256 characters. + +**Pronouns:** Optional field for the member's pronouns. A character field of maximum length 20 characters. + +**Social media links:** Optional section to display links to the member's social media profiles. Requires a link to the profile (character field of maximum length 2083) and, optionally, the profile username (character field of maximum length 200). If a username is not supplied then only a social media icon will be displayed with the link attached, otherwise the username will be placed next to the relevant icon. The type of icon to be displayed (e.g. instagram, linkedin, generic link) is inferred from the social media link provided. diff --git a/client/documentation/pages/about-committee.md b/client/documentation/pages/about-committee.md new file mode 100644 index 00000000..38b8f54d --- /dev/null +++ b/client/documentation/pages/about-committee.md @@ -0,0 +1,11 @@ +## About/Committee Page + +Has a description of the club, it's aim's etc, along with a big feature photo, intended to be a group photo of the committee or a big event? Then below is a display of all the current committee members of the club, showing name, role and pronouns. + +## Hardcoded content to be modified by committee members + +The club description and feature photo are the only things hardcoded into the website's front-end. Starting from the root directory of this website's source, this code to modify can be found in /client/src/pages/about.tsx + +## Other Notes + +The Committee Members are always displayed in the same order on the about page, which is the order mentioned in admin-dashboard/committee.md. If a certain Committee object can't be retreived, a placeholder Committee Member portrait will be displayed to maintain the same order. \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json index 36b7a2e0..6fef50ec 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -3679,13 +3679,13 @@ } }, "node_modules/framer-motion": { - "version": "12.23.24", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.24.tgz", - "integrity": "sha512-HMi5HRoRCTou+3fb3h9oTLyJGBxHfW+HnNE25tAXOvVx/IvwMHK0cx7IR4a2ZU6sh3IX1Z+4ts32PcYBOqka8w==", + "version": "12.29.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.29.0.tgz", + "integrity": "sha512-1gEFGXHYV2BD42ZPTFmSU9buehppU+bCuOnHU0AD18DKh9j4DuTx47MvqY5ax+NNWRtK32qIcJf1UxKo1WwjWg==", "license": "MIT", "dependencies": { - "motion-dom": "^12.23.23", - "motion-utils": "^12.23.6", + "motion-dom": "^12.29.0", + "motion-utils": "^12.27.2", "tslib": "^2.4.0" }, "peerDependencies": { @@ -5002,18 +5002,18 @@ } }, "node_modules/motion-dom": { - "version": "12.23.23", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.23.tgz", - "integrity": "sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==", + "version": "12.29.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.29.0.tgz", + "integrity": "sha512-3eiz9bb32yvY8Q6XNM4AwkSOBPgU//EIKTZwsSWgA9uzbPBhZJeScCVcBuwwYVqhfamewpv7ZNmVKTGp5qnzkA==", "license": "MIT", "dependencies": { - "motion-utils": "^12.23.6" + "motion-utils": "^12.27.2" } }, "node_modules/motion-utils": { - "version": "12.23.6", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", - "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "version": "12.27.2", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.27.2.tgz", + "integrity": "sha512-B55gcoL85Mcdt2IEStY5EEAsrMSVE2sI14xQ/uAdPL+mfQxhKKFaEag9JmfxedJOR4vZpBGoPeC/Gm13I/4g5Q==", "license": "MIT" }, "node_modules/ms": { diff --git a/client/public/explosions/samj_cartoon_explosion.gif b/client/public/explosions/samj_cartoon_explosion.gif new file mode 100644 index 0000000000000000000000000000000000000000..534ce70f4feac8decb7fba940af9b3fffff1c70e GIT binary patch literal 2741 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 literal 0 HcmV?d00001 diff --git a/client/public/sfx/xplsion_2.mp3 b/client/public/sfx/xplsion_2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1fc754d521c4a44a6214440cd8884e1b898461a7 GIT binary patch literal 130560 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
- + logo {item.label} @@ -67,7 +79,10 @@ export default function Navbar() { setIsDropdownOpen(false)} + onClick={(e) => { + handleNavClick(e); + setIsDropdownOpen(false); + }} className="block whitespace-nowrap px-4 py-3 text-lg transition-colors duration-150 hover:bg-accent" > {item.label} diff --git a/client/src/components/ui/Crater.tsx b/client/src/components/ui/Crater.tsx new file mode 100644 index 00000000..48d457fc --- /dev/null +++ b/client/src/components/ui/Crater.tsx @@ -0,0 +1,172 @@ +import React, { useMemo } from "react"; + +interface CraterProps { + size?: number; + intensity?: number; +} + +/** + * Generates an irregular crater polygon + */ +function generateCraterShape(baseRadius: number, points: number = 10): string { + const coords: string[] = []; + + for (let i = 0; i < points; i++) { + const angle = (i / points) * Math.PI * 2; + const radius = baseRadius * (0.75 + Math.random() * 0.3); + const x = 50 + Math.cos(angle) * radius; + const y = 50 + Math.sin(angle) * radius; + coords.push(`${x.toFixed(1)},${y.toFixed(1)}`); + } + + return coords.join(" "); +} + +/** + * Generates a crack as a polygon shape (actual gap in ground) + * Returns points for a wedge-shaped fissure + */ +function generateCrackFissure( + angle: number, + startRadius: number, + length: number, +): string { + // Crack is a tapered wedge shape - wide at crater, sharp point at end + const widthAtStart = 7 + Math.random() * 5; // Bit skinnier (7-12) + const widthAtEnd = 0.5 + Math.random() * 1; // Sharp point at tip (0.5-1.5) + + // Calculate perpendicular angle for width + const perpAngle = angle + Math.PI / 2; + + // Points along the crack with some jaggedness + const segments = 3; + const points: Array<{ x: number; y: number }> = []; + const pointsBack: Array<{ x: number; y: number }> = []; + + let currentAngle = angle; + + for (let i = 0; i <= segments; i++) { + const t = i / segments; + // Start from inside crater and extend outward + const radius = startRadius + length * t; + const width = widthAtStart + (widthAtEnd - widthAtStart) * t; + + // Add jaggedness to angle + if (i > 0 && i < segments) { + currentAngle += (Math.random() - 0.5) * 0.3; + } + + const centerX = 50 + Math.cos(currentAngle) * radius; + const centerY = 50 + Math.sin(currentAngle) * radius; + + // Offset perpendicular for width + const offsetX = (Math.cos(perpAngle) * width) / 2; + const offsetY = (Math.sin(perpAngle) * width) / 2; + + // Add random jaggedness to edges - less at the tip for sharp point + const jagAmount = 4 * (1 - t * 0.8); // More jagged at start, smooth at tip + const jag1 = (Math.random() - 0.5) * jagAmount; + const jag2 = (Math.random() - 0.5) * jagAmount; + + points.push({ + x: centerX + offsetX + jag1, + y: centerY + offsetY + jag1, + }); + pointsBack.unshift({ + x: centerX - offsetX + jag2, + y: centerY - offsetY + jag2, + }); + } + + // Combine into polygon + const allPoints = [...points, ...pointsBack]; + return allPoints.map((p) => `${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(" "); +} + +/** + * Crater with fissure-style cracks (actual gaps, not lines) + */ +export const Crater = React.memo(function Crater({ + size = 100, + intensity = 1, +}: CraterProps) { + const uniqueId = useMemo(() => Math.random().toString(36).substr(2, 9), []); + + // Crater shapes + const outerCrater = useMemo(() => generateCraterShape(22, 12), []); + const innerCrater = useMemo(() => generateCraterShape(14, 10), []); + const deepCrater = useMemo(() => generateCraterShape(8, 8), []); + + // Generate 2-4 crack fissures (reduced for performance) + const fissures = useMemo(() => { + const count = 2 + Math.floor(Math.random() * 3); + const result: Array<{ points: string }> = []; + + for (let i = 0; i < count; i++) { + const baseAngle = (i / count) * Math.PI * 2; + const angle = baseAngle + (Math.random() - 0.5) * 0.8; + const length = 20 + Math.random() * 18; + + result.push({ + points: generateCrackFissure(angle, 14, length), + }); + } + + return result; + }, []); + + // Colors + const voidColor = `rgba(0, 0, 0, ${intensity})`; + const deepColor = `rgba(8, 5, 2, ${0.95 * intensity})`; + const craterColor = `rgba(20, 15, 8, ${0.9 * intensity})`; + const rimColor = `rgba(45, 35, 25, ${0.7 * intensity})`; + + return ( + + + + + + + + + + + {/* Crack fissures - simplified to single polygon each */} + {fissures.map((fissure, i) => ( + + ))} + + {/* Outer crater rim */} + + + {/* Main crater */} + + + {/* Inner crater layer */} + + + {/* Deepest void */} + + + {/* Crater rim edge */} + + + ); +}); diff --git a/client/src/components/ui/DebrisBurst.tsx b/client/src/components/ui/DebrisBurst.tsx new file mode 100644 index 00000000..0210e880 --- /dev/null +++ b/client/src/components/ui/DebrisBurst.tsx @@ -0,0 +1,167 @@ +import React, { useCallback, useEffect, useMemo, useRef } from "react"; + +type Debris = { + id: number; + x: number; + y: number; + vx: number; + vy: number; + rot: number; + vr: number; + size: number; + life: number; + maxLife: number; +}; + +type Props = { + x: number; + y: number; + count?: number; + power?: number; + spreadDeg?: number; + gravity?: number; + groundY?: number; + bounce?: number; + onDone?: () => void; +}; + +// Use React.memo to prevent unnecessary re-renders +export const DebrisBurst = React.memo(function DebrisBurst({ + x, + y, + count = 8, // Reduced default count + power = 450, + spreadDeg = 360, + gravity = 1200, + groundY, + bounce = 0.3, + onDone, +}: Props) { + const containerRef = useRef(null); + const debrisRef = useRef([]); + const rafRef = useRef(null); + const lastT = useRef(0); + + // Generate initial debris - memoized + const initial = useMemo(() => { + const arr: Debris[] = []; + const spread = (spreadDeg * Math.PI) / 180; + + for (let i = 0; i < count; i++) { + const angle = + spreadDeg === 360 + ? Math.random() * Math.PI * 2 + : (Math.random() - 0.5) * spread; + + const speed = power * (0.5 + Math.random() * 0.5); + const vx = Math.cos(angle) * speed; + const vy = + -Math.abs(Math.sin(angle) * speed) * (0.7 + Math.random() * 0.3); + const size = 6 + Math.random() * 10; + const maxLife = 500 + Math.random() * 400; // Shorter lifetime + + arr.push({ + id: i, + x: 0, + y: 0, + vx, + vy, + rot: Math.random() * 360, + vr: (Math.random() - 0.5) * 600, + size, + life: maxLife, + maxLife, + }); + } + return arr; + }, [count, power, spreadDeg]); + + // Animation step - using refs to avoid re-renders + const step = useCallback( + (t: number) => { + const dt = Math.min(0.04, (t - lastT.current) / 1000); + lastT.current = t; + + const container = containerRef.current; + if (!container) return; + + const children = container.children; + let anyAlive = false; + + for (let i = 0; i < debrisRef.current.length; i++) { + const d = debrisRef.current[i]; + if (d.life <= 0) continue; + + d.life -= dt * 1000; + if (d.life <= 0) { + (children[i] as HTMLElement).style.display = "none"; + continue; + } + + anyAlive = true; + + // Physics + d.vx *= 1 - 0.2 * dt; + d.vy += gravity * dt; + d.x += d.vx * dt; + d.y += d.vy * dt; + d.rot += d.vr * dt; + + // Ground bounce + if (groundY !== undefined && y + d.y > groundY) { + d.y = groundY - y; + d.vy = -d.vy * bounce; + d.vx *= 0.7; + } + + // Update DOM directly (no React re-render) + const el = children[i] as HTMLElement; + const alpha = Math.max(0, d.life / d.maxLife); + el.style.transform = `translate3d(${d.x}px, ${d.y}px, 0) rotate(${d.rot}deg)`; + el.style.opacity = String(alpha); + } + + if (anyAlive) { + rafRef.current = requestAnimationFrame(step); + } else { + onDone?.(); + } + }, + [gravity, groundY, bounce, y, onDone], + ); + + // Set up animation + useEffect(() => { + debrisRef.current = initial.map((d) => ({ ...d })); + lastT.current = performance.now(); + rafRef.current = requestAnimationFrame(step); + + return () => { + if (rafRef.current) cancelAnimationFrame(rafRef.current); + }; + }, [initial, step]); + + return ( +
+ {initial.map((d) => ( + + ))} +
+ ); +}); diff --git a/client/src/components/ui/EventDateDisplay.tsx b/client/src/components/ui/EventDateDisplay.tsx new file mode 100644 index 00000000..d7b97c89 --- /dev/null +++ b/client/src/components/ui/EventDateDisplay.tsx @@ -0,0 +1,54 @@ +export type EventDateParts = { + weekday: string; + day: string; + month: string; + time: string; +}; + +/** Parses a date string and returns parts for separate styling. Returns null on invalid input. */ +export function getEventDateParts(dateString: string): EventDateParts | null { + try { + const date = new Date(dateString); + const weekday = new Intl.DateTimeFormat("en-US", { + weekday: "long", + }).format(date); + const day = new Intl.DateTimeFormat("en-US", { day: "numeric" }).format( + date, + ); + const month = new Intl.DateTimeFormat("en-US", { month: "short" }).format( + date, + ); + const time = new Intl.DateTimeFormat("en-US", { + hour: "2-digit", + minute: "2-digit", + hour12: true, + }) + .format(date) + .replace("AM", "am") + .replace("PM", "pm"); + return { weekday, day, month, time }; + } catch { + return null; + } +} + +type EventDateDisplayProps = { date: string }; + +/** Renders event date as: weekday・ day month・ time. */ +export function EventDateDisplay({ date }: EventDateDisplayProps) { + const parts = getEventDateParts(date); + if (!parts) return null; + return ( +
+ + {parts.weekday} + {"・"} + + + {parts.day} {parts.month} + {"・"} + + {parts.time} +
+ ); +} diff --git a/client/src/components/ui/Explosion.tsx b/client/src/components/ui/Explosion.tsx new file mode 100644 index 00000000..78679785 --- /dev/null +++ b/client/src/components/ui/Explosion.tsx @@ -0,0 +1,95 @@ +import Image from "next/image"; +import React, { useEffect, useRef, useState } from "react"; + +import { ExplosionPosition } from "../../hooks/useExplosions"; +import { Crater } from "./Crater"; +import { DebrisBurst } from "./DebrisBurst"; +import { Smoke } from "./Smoke"; + +interface ExplosionProps { + explosion: ExplosionPosition; +} + +/** + * Renders a single explosion at a specific position. + * Position is defined as a percentage of the parent container. + */ +export const Explosion = React.memo(function Explosion({ + explosion, +}: ExplosionProps) { + const containerRef = useRef(null); + const [debrisPosition, setDebrisPosition] = useState<{ + x: number; + y: number; + } | null>(null); + + // Convert percentage position to pixel coordinates for DebrisBurst + useEffect(() => { + if (!containerRef.current) return; + const container = containerRef.current.closest( + '[class*="relative"]', + ) as HTMLElement; + if (!container) { + // Fallback: use window if no relative container found + const x = (explosion.x / 100) * window.innerWidth; + const y = (explosion.y / 100) * window.innerHeight; + setDebrisPosition({ x, y }); + return; + } + + const rect = container.getBoundingClientRect(); + const x = rect.left + (explosion.x / 100) * rect.width; + const y = rect.top + (explosion.y / 100) * rect.height; + setDebrisPosition({ x, y }); + }, [explosion.x, explosion.y]); + + return ( +
+ {/* SVG Crater with depth shading */} +
+ +
+ {/* Physics-based debris burst */} + {debrisPosition && ( + + )} + {/* The actual explosion GIF */} +
+ Explosion +
+ {/* Rising smoke effect */} + +
+ ); +}); diff --git a/client/src/components/ui/Smoke.tsx b/client/src/components/ui/Smoke.tsx new file mode 100644 index 00000000..adc6241e --- /dev/null +++ b/client/src/components/ui/Smoke.tsx @@ -0,0 +1,179 @@ +import { motion } from "framer-motion"; +import React, { useMemo } from "react"; + +interface SmokeProps { + x: number; // percentage position + y: number; // percentage position + duration?: number; // how long smoke lasts (ms) +} + +/** + * Optimized SVG smoke effect + * Uses shared filters and reduced complexity for better performance + */ +export const Smoke = React.memo(function Smoke({ + x, + y, + duration = 2000, +}: SmokeProps) { + const uniqueId = useMemo(() => Math.random().toString(36).substr(2, 9), []); + + // Generate fewer smoke puffs (5 instead of 8) + const smokePuffs = useMemo(() => { + const puffs = []; + const count = 5; + + for (let i = 0; i < count; i++) { + const angle = (i / count) * Math.PI * 2 + (Math.random() - 0.5) * 0.3; + const distance = 45 + Math.random() * 35; + + puffs.push({ + id: i, + endX: Math.cos(angle) * distance, + endY: Math.sin(angle) * distance - 15, + delay: i * 0.03, + }); + } + return puffs; + }, []); + + return ( +
+ {/* Shared SVG defs - filters defined once */} + + + {/* Single optimized turbulence filter */} + + + + + + + {/* Shared gradient */} + + + + + + + + + {/* Central expanding smoke - uses CSS blur for performance */} + + + {/* Smoke puffs - share single filter */} + {smokePuffs.map((puff) => ( + + + + + + ))} + + {/* Single rising wisp - CSS blur only */} + +
+ ); +}); diff --git a/client/src/components/ui/eventCarousel.tsx b/client/src/components/ui/eventCarousel.tsx index 3b0d1eaa..08ffd99e 100644 --- a/client/src/components/ui/eventCarousel.tsx +++ b/client/src/components/ui/eventCarousel.tsx @@ -6,6 +6,7 @@ import { useEffect, useRef, useState } from "react"; import { UiEvent as EventType } from "@/hooks/useEvents"; import { Button } from "./button"; +import { EventDateDisplay } from "./EventDateDisplay"; type EventCarouselProps = { items: EventType[]; @@ -13,32 +14,6 @@ type EventCarouselProps = { const GAP = 40; -function formatEventDateDisplay(dateString: string): string { - try { - const date = new Date(dateString); - const weekday = new Intl.DateTimeFormat("en-US", { - weekday: "long", - }).format(date); - const day = new Intl.DateTimeFormat("en-US", { day: "numeric" }).format( - date, - ); - const month = new Intl.DateTimeFormat("en-US", { month: "short" }).format( - date, - ); - const time = new Intl.DateTimeFormat("en-US", { - hour: "2-digit", - minute: "2-digit", - hour12: true, - }) - .format(date) - .replace("AM", "am") - .replace("PM", "pm"); - return `${weekday} ${day} ${month} ${time}`; - } catch { - return ""; - } -} - export default function EventCarousel({ items }: EventCarouselProps) { const viewportRef = useRef(null); const firstItemRef = useRef(null); @@ -76,16 +51,15 @@ export default function EventCarousel({ items }: EventCarouselProps) { useEffect(() => { const updateVisibleCount = () => { - if (window.innerWidth < 768) { - setVisibleCount(1); - } else { - setVisibleCount(3); - } + const newVisibleCount = window.innerWidth < 768 ? 1 : 3; + const newMaxIndex = Math.max(0, items.length - newVisibleCount); + setVisibleCount(newVisibleCount); + setCurrentIndex((prev) => Math.min(prev, newMaxIndex)); }; updateVisibleCount(); window.addEventListener("resize", updateVisibleCount); return () => window.removeEventListener("resize", updateVisibleCount); - }, []); + }, [items.length]); return (
@@ -124,7 +98,7 @@ export default function EventCarousel({ items }: EventCarouselProps) { )}
-
+
-

- {formatEventDateDisplay(event.date)} +

+

diff --git a/client/src/contexts/ExplosionContext.tsx b/client/src/contexts/ExplosionContext.tsx new file mode 100644 index 00000000..f2f6ca1d --- /dev/null +++ b/client/src/contexts/ExplosionContext.tsx @@ -0,0 +1,114 @@ +"use client"; + +import React, { + createContext, + useCallback, + useContext, + useRef, + useState, +} from "react"; + +import { DebrisBurst } from "@/components/ui/DebrisBurst"; +import { Explosion } from "@/components/ui/Explosion"; +import { ExplosionPosition, useExplosions } from "@/hooks/useExplosions"; + +// Max concurrent debris bursts to prevent lag +const MAX_DEBRIS = 5; + +type ClickDebris = { + id: number; + x: number; + y: number; +}; + +type ExplosionContextType = { + triggerExplosionAt: (clientX: number, clientY: number) => void; +}; + +const ExplosionContext = createContext(null); + +export function useExplosionContext() { + const context = useContext(ExplosionContext); + if (!context) { + throw new Error( + "useExplosionContext must be used within ExplosionProvider", + ); + } + return context; +} + +export function ExplosionProvider({ children }: { children: React.ReactNode }) { + const { explosions, triggerExplosions } = useExplosions(); + const [clickDebris, setClickDebris] = useState([]); + const lastClickTime = useRef(0); + const debrisTimeouts = useRef>>(new Set()); + + const triggerExplosionAt = useCallback( + (clientX: number, clientY: number) => { + // Throttle - 100ms minimum between explosions + const now = Date.now(); + if (now - lastClickTime.current < 100) return; + lastClickTime.current = now; + + // Convert to percentage of viewport + const x = (clientX / window.innerWidth) * 100; + const y = (clientY / window.innerHeight) * 100; + + // Trigger explosion + triggerExplosions({ + count: 1, + minDelay: 0, + maxDelay: 0, + duration: 1500, + playSound: true, + position: { x, y }, + }); + + // Add debris burst + const debrisId = now; + setClickDebris((prev) => { + const updated = [...prev, { id: debrisId, x: clientX, y: clientY }]; + return updated.slice(-MAX_DEBRIS); + }); + + // Cleanup after animation + const timeout = setTimeout(() => { + setClickDebris((prev) => prev.filter((d) => d.id !== debrisId)); + debrisTimeouts.current.delete(timeout); + }, 1500); + debrisTimeouts.current.add(timeout); + }, + [triggerExplosions], + ); + + return ( + + {children} + {/* Render explosions in a fixed overlay */} +
+ {explosions.map((explosion: ExplosionPosition) => ( + + ))} + {clickDebris.map((debris) => ( + + ))} +
+
+ ); +} diff --git a/client/src/hooks/useEvents.ts b/client/src/hooks/useEvents.ts index 674d1a06..7778b69c 100644 --- a/client/src/hooks/useEvents.ts +++ b/client/src/hooks/useEvents.ts @@ -9,7 +9,6 @@ type ApiEvent = { description: string; publicationDate: string; date: string; - startTime: string | null; location: string; cover_image: string | null; }; diff --git a/client/src/hooks/useExplosions.ts b/client/src/hooks/useExplosions.ts new file mode 100644 index 00000000..ff582169 --- /dev/null +++ b/client/src/hooks/useExplosions.ts @@ -0,0 +1,125 @@ +import { useCallback, useEffect, useRef, useState } from "react"; + +/** + * Plays a random explosion sound effect. + */ +function playExplosionSound(): void { + const soundIndex = Math.floor(Math.random() * 4); // 0-3 for xplsion_0 to xplsion_3 + const audio = new Audio(`/sfx/xplsion_${soundIndex}.mp3`); + audio.volume = 0.1; // Set volume to 10% to avoid being too loud + audio.play().catch(() => { + // Silently handle autoplay restrictions + }); +} + +/** + * Position of a single explosion within a container. + * Coordinates are percentages (0-100) relative to container size. + */ +export type ExplosionPosition = { + id: string; + x: number; // Percentage (0-100) + y: number; // Percentage (0-100) +}; + +/** + * Configuration for explosion spawning behavior. + */ +export type ExplosionConfig = { + count?: number; // Number of explosions to spawn (default: 1) + minDelay?: number; // Minimum delay between explosions in ms (default: 0) + maxDelay?: number; // Maximum delay between explosions in ms (default: 100) + duration?: number; // How long explosions stay visible in ms (default: 1000) + playSound?: boolean; // Whether to play sound effects (default: true) + position?: { x: number; y: number }; // Specific position (percentage 0-100), if not provided uses random +}; + +/** + * Custom hook to manage explosion spawning. + * Provides state and functions to trigger explosions. + */ +export function useExplosions() { + const [explosions, setExplosions] = useState([]); + const timeoutsRef = useRef>>(new Set()); + + // Cleanup all timeouts on unmount to prevent memory leaks + useEffect(() => { + const timeouts = timeoutsRef.current; + return () => { + timeouts.forEach((t) => clearTimeout(t)); + timeouts.clear(); + }; + }, []); + + const triggerExplosions = useCallback( + (config: ExplosionConfig = {}, withMargin?: boolean) => { + const { + count = 1, + minDelay = 0, + maxDelay = 100, + duration = 3000, + playSound = true, + position, // Optional fixed position + } = config; + + // Generate explosion positions + const now = Date.now(); + + for (let i = 0; i < count; i++) { + let x: number; + let y: number; + + if (position) { + // Use specific position provided + x = position.x; + y = position.y; + } else if (withMargin) { + // Random position with 10% margin from edges + const margin = 10; + x = margin + Math.random() * (100 - margin * 2); + y = margin + Math.random() * (100 - margin * 2); + } else { + // Random position across full area + x = Math.random() * 100; + y = Math.random() * 100; + } + + const delay = minDelay + Math.random() * (maxDelay - minDelay); + + const spawnTimeout = setTimeout(() => { + const explosionId = `${now}-${i}-${Math.random()}`; + const explosion: ExplosionPosition = { + id: explosionId, + x, + y, + }; + + setExplosions((prev) => [...prev, explosion]); + + // Play sound effect + if (playSound) { + playExplosionSound(); + } + + // Clean up after duration + const cleanupTimeout = setTimeout(() => { + setExplosions((prev) => + prev.filter((exp) => exp.id !== explosionId), + ); + timeoutsRef.current.delete(cleanupTimeout); + }, duration); + timeoutsRef.current.add(cleanupTimeout); + + timeoutsRef.current.delete(spawnTimeout); + }, delay); + timeoutsRef.current.add(spawnTimeout); + } + }, + [], + ); + + return { + explosions, + triggerExplosions, + }; +} diff --git a/client/src/pages/404.tsx b/client/src/pages/404.tsx new file mode 100644 index 00000000..728cc1ce --- /dev/null +++ b/client/src/pages/404.tsx @@ -0,0 +1,205 @@ +"use client"; + +import Link from "next/link"; +import { useEffect, useState } from "react"; + +import { Button } from "@/components/ui/button"; +import TRIVIA from "@/trivia.json"; + +interface Trivia { + question: string; + answer: string; +} + +export default function Custom404() { + const [gameQuestions, setGameQuestions] = useState([]); + const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0); + const [score, setScore] = useState(0); + const [gameActive, setGameActive] = useState(false); + const [timeLeft, setTimeLeft] = useState(30); + const [answered, setAnswered] = useState(false); + const [selectedAnswer, setSelectedAnswer] = useState(null); + const [options, setOptions] = useState([]); + + const currentTrivia = gameQuestions[currentQuestionIndex]; + + const generateQuestions = () => { + const shuffled = TRIVIA.sort(() => Math.random() - 0.5).slice(0, 10); + setGameQuestions(shuffled); + }; + + useEffect(() => { + if (!currentTrivia) return; + + const wrongAnswers = TRIVIA.filter((t) => t.answer !== currentTrivia.answer) + .sort(() => Math.random() - 0.5) + .slice(0, 3) + .map((t) => t.answer); + + const allOptions = [currentTrivia.answer, ...wrongAnswers].sort( + () => Math.random() - 0.5, + ); + setOptions(allOptions); + }, [currentQuestionIndex, currentTrivia]); + + useEffect(() => { + if (!gameActive || timeLeft <= 0) return; + + const timer = setInterval(() => { + setTimeLeft((prev) => { + if (prev <= 1) { + setGameActive(false); + return 0; + } + return prev - 1; + }); + }, 1000); + + return () => clearInterval(timer); + }, [gameActive, timeLeft]); + + const startGame = () => { + generateQuestions(); + setGameActive(true); + setCurrentQuestionIndex(0); + setScore(0); + setTimeLeft(30); + setAnswered(false); + setSelectedAnswer(null); + }; + + const handleAnswer = (answer: string) => { + if (answered) return; + + setSelectedAnswer(answer); + setAnswered(true); + + if (answer === currentTrivia.answer) { + setScore((prev) => prev + 1); + } + + setTimeout(() => { + if (currentQuestionIndex < gameQuestions.length - 1) { + setCurrentQuestionIndex((prev) => prev + 1); + setAnswered(false); + setSelectedAnswer(null); + } else { + setGameActive(false); + } + }, 1000); + }; + + const getButtonClass = (option: string) => { + const baseClass = + "w-full rounded border p-2.5 text-left text-sm transition-all cursor-pointer md:p-3 md:text-base"; + + if (!answered) { + return `${baseClass} bg-card border-border text-foreground hover:border-accent`; + } + + if (option === currentTrivia.answer) { + return `${baseClass} bg-primary border-accent text-accent-foreground font-semibold`; + } + + if (option === selectedAnswer && option !== currentTrivia.answer) { + return `${baseClass} bg-accent border-secondary text-secondary-foreground`; + } + + return `${baseClass} bg-muted border-border text-muted-foreground`; + }; + + return ( +
+
+

+ 404 +

+

+ Page Not Found +

+ +

+ Test your game knowledge with some rapid-fire trivia instead!!! +

+ + {!gameActive ? ( +
+ {gameQuestions.length === 0 ? ( + <> +

+ Answer 10 random gaming trivia questions in 30 seconds! +

+ + + ) : ( + <> +

+ Game Over! +

+

+ Final Score: + + {score} + {" "} + / 10 +

+ + + )} +
+ ) : ( +
+
+

+ Question {currentQuestionIndex + 1} / 10 +

+
+ {timeLeft}s +
+
+ +
+

+ {currentTrivia.question} +

+ +
+ {options.map((option, idx) => ( + + ))} +
+ +

+ Score:{" "} + + {score} / 10 + +

+
+
+ )} + + + + +
+
+ ); +} diff --git a/client/src/pages/_app.tsx b/client/src/pages/_app.tsx index eb476768..aa09d857 100644 --- a/client/src/pages/_app.tsx +++ b/client/src/pages/_app.tsx @@ -5,7 +5,9 @@ import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import type { AppProps } from "next/app"; import { Fira_Code, Inter as FontSans, Jersey_10 } from "next/font/google"; +import Footer from "@/components/main/Footer"; import Navbar from "@/components/main/Navbar"; +import { ExplosionProvider } from "@/contexts/ExplosionContext"; const fontSans = FontSans({ subsets: ["latin"], @@ -31,12 +33,17 @@ export default function App({ Component, pageProps }: AppProps) { return ( -
font.variable).join(" ")} - > - - -
+ +
font.variable).join(" ") + } + > + + +
+
+
); } diff --git a/client/src/pages/about.tsx b/client/src/pages/about.tsx index 92753d80..4e0ee1a9 100644 --- a/client/src/pages/about.tsx +++ b/client/src/pages/about.tsx @@ -30,20 +30,24 @@ export default function AboutPage() {
>Hardcoded feature image to be altered.<<*/ src="/landing_placeholder.png" - alt="/landing_placeholder.png" + /*>>Description of feature image - alter this alongside the feature image.<<*/ + alt="Placeholder Picture" fill={true} />
@@ -64,7 +68,7 @@ export default function AboutPage() {
/landing_placeholder.png @@ -124,23 +128,21 @@ export default function AboutPage() { : "Failed to load Committee Members."; return ( - <> +
{about} -
+

{errorMessage}

-
- +
+ ); } else { - for (let i = 0; i < 8; i++) { - committeeList.push(committee[i]); - } + committeeList.push(...committee.slice(0, 8)); } return ( -
+
{about} {/* Portraits Section - DARK - Full Width */}
diff --git a/client/src/pages/events/[id].tsx b/client/src/pages/events/[id].tsx index 8e8d8803..186a2637 100644 --- a/client/src/pages/events/[id].tsx +++ b/client/src/pages/events/[id].tsx @@ -1,27 +1,13 @@ import Image from "next/image"; import { useRouter } from "next/router"; +import { EventDateDisplay } from "@/components/ui/EventDateDisplay"; import { useEvent } from "@/hooks/useEvent"; -function formatDateTime(dateString: string): string { - try { - const date = new Date(dateString); - return new Intl.DateTimeFormat("en-AU", { - year: "numeric", - month: "long", - day: "numeric", - hour: "2-digit", - minute: "2-digit", - }).format(date); - } catch { - return dateString; // Fallback to original string if parsing fails - } -} - export default function EventPage() { const router = useRouter(); const { id } = router.query; - // Wait for router to be ready before fetching (router.query is empty on initial SSR) + const { data: event, isPending, @@ -70,8 +56,9 @@ export default function EventPage() { aria-hidden="true" />

- {formatDateTime(event.date)} · {event.location} +

+
{event.location}

{event.description}

diff --git a/client/src/pages/events/index.tsx b/client/src/pages/events/index.tsx index 91e37749..18c665a2 100644 --- a/client/src/pages/events/index.tsx +++ b/client/src/pages/events/index.tsx @@ -3,33 +3,9 @@ import Link from "next/link"; import { useRouter } from "next/router"; import { useEffect, useMemo, useState } from "react"; +import { EventDateDisplay } from "@/components/ui/EventDateDisplay"; import { EventTypeFilter, UiEvent, useEvents } from "@/hooks/useEvents"; -function formatDateTimeLine(dateString: string): string { - try { - const date = new Date(dateString); - - const d = new Intl.DateTimeFormat("en-US", { - month: "long", - day: "numeric", - year: "numeric", - }).format(date); - - const t = new Intl.DateTimeFormat("en-US", { - hour: "2-digit", - minute: "2-digit", - hour12: true, - }) - .format(date) - .replace("AM", "am") - .replace("PM", "pm"); - - return `${d} ・ ${t}`; - } catch { - return ""; - } -} - type EventsByYear = Record; function groupEventsByYear( @@ -216,9 +192,9 @@ export default function EventsPage() {
-
- {formatDateTimeLine(event.date)} -
+

+ +

{event.location}
diff --git a/client/src/pages/index.tsx b/client/src/pages/index.tsx index 2cab849f..979246e2 100644 --- a/client/src/pages/index.tsx +++ b/client/src/pages/index.tsx @@ -1,17 +1,40 @@ +import { motion } from "framer-motion"; import Image from "next/image"; import Link from "next/link"; +import { useState } from "react"; +import { Button } from "@/components/ui/button"; import EventCarousel from "@/components/ui/eventCarousel"; import { EventHighlightCard, eventHighlightCardType, } from "@/components/ui/eventHighlightCard"; import LandingGames from "@/components/ui/landingGames"; +import { useExplosionContext } from "@/contexts/ExplosionContext"; import { UiEvent, useEvents } from "@/hooks/useEvents"; -import { Button } from "../components/ui/button"; - export default function Landing() { + const [isShaking, setIsShaking] = useState(false); + const { triggerExplosionAt } = useExplosionContext(); + + const handleBombClick = (e: React.MouseEvent) => { + // Trigger multiple explosions across the page + for (let i = 0; i < 10; i++) { + setTimeout(() => { + // Random position with 10% margin from edges + const x = window.innerWidth * (0.1 + Math.random() * 0.8); + const y = window.innerHeight * (0.1 + Math.random() * 0.8); + triggerExplosionAt(x, y); + }, i * 50); // Stagger by 50ms + } + + // Trigger screen shake + setIsShaking(true); + setTimeout(() => setIsShaking(false), 400); + + // Prevent event bubbling + e.stopPropagation(); + }; const { data, isPending, isError, isFetching } = useEvents({ type: "upcoming", pageSize: 100, @@ -69,7 +92,18 @@ export default function Landing() { ]; return ( -
+
@@ -102,8 +136,9 @@ export default function Landing() { src="/bomb.png" width={96} height={156} - alt="placeholder" - className="absolute bottom-0 left-0 h-auto w-[20%] -translate-x-1/4 -translate-y-4 [image-rendering:pixelated]" + alt="Bomb - click to explode!" + className="absolute bottom-0 left-0 h-auto w-[20%] -translate-x-1/4 -translate-y-4 cursor-pointer transition-transform [image-rendering:pixelated] hover:scale-110" + onClick={handleBombClick} />
@@ -180,10 +215,10 @@ export default function Landing() {
- + - + @@ -193,6 +228,6 @@ export default function Landing() {
-
+ ); } diff --git a/client/src/pages/members/[id].tsx b/client/src/pages/members/[id].tsx index f3bf50fb..7b17438f 100644 --- a/client/src/pages/members/[id].tsx +++ b/client/src/pages/members/[id].tsx @@ -1,9 +1,8 @@ import { useRouter } from "next/router"; +import { MemberProfile } from "@/components/main/MemberProfile"; import { useMember } from "@/hooks/useMember"; -import { MemberProfile } from "../../components/main/MemberProfile"; - // hook assumes correct input, page sanitises to correct type function normaliseId(id: string | string[] | number | undefined) { if (typeof id === "number" && Number.isFinite(id)) { diff --git a/client/src/styles/globals.css b/client/src/styles/globals.css index 76fa7263..4fa93d13 100644 --- a/client/src/styles/globals.css +++ b/client/src/styles/globals.css @@ -62,3 +62,65 @@ @apply border-[26px] border-accent [clip-path:polygon(20px_20px,calc(100%-20px)_20px,100%_32px,100%_30%,calc(100%-20px)_45%,calc(100%-20px)_calc(100%-8px),80%_calc(100%-8px),75%_calc(100%-20px),20px_calc(100%-20px),0%_60%,0%_30%,20px_25%)]; } } + +@keyframes crater-fade { + 0% { + opacity: 1; + } + 70% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +@keyframes crater-expand { + 0% { + transform: translate(-50%, -50%) scale(0.15); + opacity: 0; + } + 20% { + opacity: 1; + } + 100% { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + } +} + +@keyframes crater-punch { + 0% { + transform: scale(0); + opacity: 0; + } + 50% { + transform: scale(1.1); + opacity: 1; + } + 100% { + transform: scale(1); + opacity: 1; + } +} + +@keyframes fissure-open { + 0% { + transform: scale(0); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} + +.debris-chunk { + position: absolute; + left: 0; + top: 0; + transform-origin: center; + border-radius: 2px; + background: linear-gradient(135deg, #888 0%, #444 100%); + contain: layout style; +} diff --git a/client/src/trivia.json b/client/src/trivia.json new file mode 100644 index 00000000..865c30e8 --- /dev/null +++ b/client/src/trivia.json @@ -0,0 +1,398 @@ +[ + { + "question": "What 1997 N64 video game, widely cited as one of the greatest of all time, features James Bond up against a criminal syndicate and is named after the 1995 film in the Bond franchise?", + "answer": "GoldenEye" + }, + { + "question": "Originally given the Japanese title \"Puckman,\" what 1980s arcade game was inducted into the Guinness Book of Records as the \"Most Successful Coin-Operated Game\" in 2005?", + "answer": "Pac-Man" + }, + { + "question": "In July 2023, video game company EA announced that players will be able to explore Wakanda in an upcoming open-world video game based on the adventures of what Marvel superhero?", + "answer": "Black Panther" + }, + { + "question": "Which spooky 2001 GameCube game starring Mario's brother got a reboot for Nintendo Switch in 2019?", + "answer": "Luigi's Mansion" + }, + { + "question": "In May 2022, the government of what European nation banned its employees from using American gaming terms such as \"e-sports,\" instead using their domestic language counterparts?", + "answer": "France" + }, + { + "question": "In 2011, the World Health Organization included VGA, an addiction to what activity, among its mental health disorders for the first time?", + "answer": "Video Games" + }, + { + "question": "What Will Wright created video game series, released in 2000 (with sequels in 2004, 2009, and 2014), saw players watching and directing characters to mundane things like eating, sleeping, and cleaning their houses?", + "answer": "The Sims" + }, + { + "question": "Regarded as one of the greatest video games of all time, what 1981 arcade game features the titular amphibian trying to cross a road and a river?", + "answer": "Frogger" + }, + { + "question": "What is thought to be the first video game, created in 1958 and becoming popular in the 1970s?", + "answer": "Pong" + }, + { + "question": "Which video game console released in 2006 pioneered the use of motion controls in its gameplay?", + "answer": "Nintendo Wii" + }, + { + "question": "Making his debut in 1990s \"Super Mario World,\" what is the name of the enemy-eating, egg-throwing green dinosaur who serves as a sidekick to Mario and Luigi?", + "answer": "Yoshi" + }, + { + "question": "In 2014, Google partnered with Game Freak and Nintendo as part of an April Fool's Day prank to create a new version of Google Maps. This prank inspired what massively popular 2016 video game?", + "answer": "Pokemon Go" + }, + { + "question": "What video game came with the Nintendo Entertainment System when it was released in the late 1980s, and was meant to be played with the NES Zapper gun?", + "answer": "Duck Hunt" + }, + { + "question": "Introduced on Wii consoles, Nintendo gamers can make their own in-game character by creating an avatar known by what three-letter name that sounds similar to a pronoun?", + "answer": "Mii" + }, + { + "question": "What word completes the title of the 2017 game \"Super Mario\" what, for the Nintendo Switch? The word in question is also a vehicle manufactured by Honda.", + "answer": "Odyssey" + }, + { + "question": "What Konami game from September 1998 was initially released to the European arcade audience under the name \"Dancing Stage?\"", + "answer": "Dance Dance Revolution" + }, + { + "question": "In Mario Kart, the power-up that seeks out the player in first position and explodes on impact is a shell that is what color?", + "answer": "Blue" + }, + { + "question": "The company that created Fortnite, EPIC, also created a game engine that is licensed to other game creators, named what?", + "answer": "Unreal" + }, + { + "question": "Smoke on the Water is a fictional medical-marijuana shop that can be purchased by Franklin with money in what heist-y video game franchise?", + "answer": "Grand Theft Auto" + }, + { + "question": "Which PlayStation platformer released in 1996 has you play as the titular character—a marsupial prone to mayhem who was captured by Dr. Neo Cortex?", + "answer": "Crash Bandicoot" + }, + { + "question": "The Warthog is the nickname of the M12 Force Application Light Reconnaissance Vehicle, a fictional armored vehicle that appears in what video game series?", + "answer": "Halo" + }, + { + "question": "Pocket, Light, Color, and Advance were all styles or variants of what video game hardware system?", + "answer": "Game Boy" + }, + { + "question": "Released in 2004 by Blizzard Entertainment and set in the fictional universe of Azeroth, what is the name of the computer game that became the world's most popular MMORPG?", + "answer": "World of Warcraft" + }, + { + "question": "What object does Mario typically leap onto after completing a level in the earliest iterations of his franchise?", + "answer": "Flag pole" + }, + { + "question": "What third-person shooter video game developed by Nintendo was first released in 2015 and features characters known as inklings?", + "answer": "Splatoon" + }, + { + "question": "In Super Mario Kart, the first game in Nintendo's racing franchise, which of the playable characters has the shortest name?", + "answer": "Toad" + }, + { + "question": "When the kids online say \"LoL,\" they're either laughing or referencing what online battle arena game that's been sponsored by Mastercard since 2018?", + "answer": "League of Legends" + }, + { + "question": "What 2009 game, developed by Mojang, is an open sandbox in which players often build structures and battle creepers and zombies?", + "answer": "Minecraft" + }, + { + "question": "A 2017 Guerrilla Games game, published on the PlayStation 4, that features Aloy battling giant machines with her bow, is what \"Zero Dawn\"?", + "answer": "Horizon Zero Dawn" + }, + { + "question": "Harry must collect treasures including gold and diamonds without landing in quicksand in what classic 1982 Atari game with an exclamation point in the title?", + "answer": "Pitfall!" + }, + { + "question": "What word—which shares its name with a popular soda brand—describes a 2D bitmap image, such as a video game character, that's integrated into a larger scene?", + "answer": "Sprite" + }, + { + "question": "In what franchise-launching 1985 educational video game was a user required to have a warrant for each arrest while traveling to locales like Oslo and Cairo?", + "answer": "Where in the World Is Carmen San Diego?" + }, + { + "question": "An egg-shaped wind instrument dating back to ancient times appears in the title of what 1998 installment in the \"Legend of Zelda\" franchise?", + "answer": "Ocarina of Time" + }, + { + "question": "2021 saw the release of what sixth game in the Halo franchise, continuing the adventures of Master Chief? Its name sounds as if the game's story will continue in perpetuity.", + "answer": "Halo Infinite" + }, + { + "question": "Mendicant Bias and Offensive Bias are fictional AIs in what \"holy\" video game franchise that shares its name with a Beyonce song?", + "answer": "Halo" + }, + { + "question": "What 2018 video games are set in 1899 and follow the story of outlaws Arthur Morgan and John Marston?", + "answer": "Red Dead Redemption 2" + }, + { + "question": "Used while playing \"Contra,\" the original Konami code gave you 30 extra of what video game things?", + "answer": "Extra Lives" + }, + { + "question": "What card game related to the \"Warcraft\" universe did Blizzard release in 2014?", + "answer": "Hearthstone" + }, + { + "question": "A sleek black convertible known as the Regalia is the car Noctis and his friends use to travel across Eos in the 15th installment of what alliterative video game franchise?", + "answer": "Final Fantasy" + }, + { + "question": "Dressed in purple and black with an upside-down \"L\" on his cap, what skinny and mustachioed character made his debut in the 2000 Nintendo 64 game, \"Mario Tennis?\"", + "answer": "Waluigi" + }, + { + "question": "Although early versions of the game featured a character named \"Ivan the Space Biker,\" the game's maker (Valve) eventually settled on \"Gordon Freeman\" as the hero. What was the game?", + "answer": "Half-Life" + }, + { + "question": "What video game character is described as a young, energetic, violet creature with orange medium-sized wings, large curved horns, and a spiral-shaped spike on his tail?", + "answer": "Spyro the Dragon" + }, + { + "question": "What name is shared by a sci-fi video game franchise, a Beyonce song, and the tiara worn by Kate Middleton on her wedding day?", + "answer": "Halo" + }, + { + "question": "In the timeless Oregon Trail video games, you were often given three options to get across rivers: caulk and float, take a ferry, and what four-letter third choice?", + "answer": "Ford" + }, + { + "question": "What Star Wars console video game released at the end of 2020 focuses on space combat inspired by the movie franchise?", + "answer": "Star Wars: Squadrons" + }, + { + "question": "What 2021 installment in the Call of Duty video game franchise shares its name with one of America's largest investment management firms?", + "answer": "Vanguard" + }, + { + "question": "What fantasy kingdom is the main setting for the \"Legend of Zelda\" video game series?", + "answer": "Hyrule" + }, + { + "question": "Chuck E. Cheese was originally founded by Nolan Bushnell, who also co-founded what video game company known for its 2600?", + "answer": "Atari" + }, + { + "question": "The third entry in an extremely popular post-apocalyptic video game franchise was set in an area known as \"Capital Wasteland,\" the ruins of Washington, DC. What is the name of this franchise?", + "answer": "Fallout" + }, + { + "question": "In 2008, the open world racing game was pioneered with the release of what \"Paradise\"?", + "answer": "Burnout Paradise" + }, + { + "question": "Imane Anys, whose millions of followers love to watch her play League of Legends and Fortnite, is better known by what name?", + "answer": "Pokimane" + }, + { + "question": "Sun, Moon, Diamond, Pearl, and SoulSilver have all been names of games in what iconic video game franchise?", + "answer": "Pokemon" + }, + { + "question": "Crash is a video game character who is a genetically mutated type of what marsupial?", + "answer": "Bandicoot" + }, + { + "question": "What first-person shooter video game developed by Valve and published for Microsoft Windows in 1998 launched a globally successful franchise?", + "answer": "Half-Life" + }, + { + "question": "The first Star Wars video game, made for the Atari 2600, was based on which film in the original trilogy?", + "answer": "The Empire Strikes Back" + }, + { + "question": "What is the name of the best-selling video game franchise to come out of Disney's home-grown intellectual property?", + "answer": "Kingdom Hearts" + }, + { + "question": "In the original 1980 edition of Pac-Man, the four ghosts were named Blinky, Inky, Pinky, and what name that doesn't rhyme with the rest?", + "answer": "Clyde" + }, + { + "question": "What simulation video game franchise was originally developed by Will Wright and launched in 1989 for the Macintosh computer?", + "answer": "SimCity" + }, + { + "question": "Tingle is a \"short, paunchy 35-year-old\" obsessed with \"forest fairies.\" In what video game franchise did Tingle debut?", + "answer": "The Legend of Zelda" + }, + { + "question": "\"Ultimate\" and \"Melee\" are two of the iterations in the Super Smash Bros. franchise. What is the one additional word that follows the name of a title in the series?", + "answer": "Brawl" + }, + { + "question": "Tony Hawk is one of the world's most skilled skateboarders. He is also the face of one of the best-selling video games of the late '90s entitled \"Tony Hawk's\" what, released September 29, 1999?", + "answer": "Pro Skater" + }, + { + "question": "The first game in the Final Fantasy video game franchise was released for what console?", + "answer": "Nintendo Entertainment System (NES)" + }, + { + "question": "What is the name of the twin brother of Solid Snake, the protagonist of the Metal Gear franchise?", + "answer": "Liquid Snake" + }, + { + "question": "In January 2021, a short squeeze orchestrated by Reddit users caused a skyrocketing of the price of what retail chain that sells video games and consumer electronics?", + "answer": "GameStop" + }, + { + "question": "The 1995 point-and-click adventure game \"I Have No Mouth, and I Must Scream\" is based on the short story of the same name by what sci-fi author?", + "answer": "Harlan Ellison" + }, + { + "question": "A 2022 Lego Star Wars game that lets players reenact all 9 mainline Star Wars films is \"Lego Star Wars:\" The what Saga?", + "answer": "Skywalker" + }, + { + "question": "Skyrim is the fifth installment of what epic open-world videogame series by Bethesda Softworks?", + "answer": "The Elder Scrolls" + }, + { + "question": "What \"S\" videogame series co-created and published by Electronic Arts allows users to create and customize virtual human beings?", + "answer": "The Sims" + }, + { + "question": "Which Legend of Zelda game that picks up after Ocarina of Time was released for N64 in 2000 and remade for Nintendo 3DS in 2015?", + "answer": "Majora's Mask" + }, + { + "question": "What video game franchise debuted in 2001 as a hybrid real-time strategy and puzzle video game centered on part-collecting for a crashed rocket ship?", + "answer": "Pikmin" + }, + { + "question": "What was the name of the franchise of educational video games from the 1990s that featured a green protagonist and titles like \"In Search of Spot\"?", + "answer": "Math Blaster!" + }, + { + "question": "What video game franchise technically included \"Dr. Kawashima\" in the title? The first installment debuted in 2005 on the Nintendo DS.", + "answer": "Brain Age" + }, + { + "question": "What is the name of the series of Star Wars video games that began on the Nintendo 64 console in 1998?", + "answer": "Rogue Squadron" + }, + { + "question": "What classic open-ended PC game of 1993 may have been inspired by a Jules Verne novel whose characters were marooned on an island?", + "answer": "Myst" + }, + { + "question": "According to Apple, the second most popular free game downloaded on iPhones in 2018 was an \"endless play style\" game where you try to get a ball down platforms. What is the game?", + "answer": "Helix Jump" + }, + { + "question": "What is the name of the largest body of water on the Fortnite Battle Royale map?", + "answer": "Loot Lake" + }, + { + "question": "What PokĂ©mon holds the title as the first listed creature in the PokĂ©dex and is considered a hybrid grass-poison type?", + "answer": "Bulbasaur" + }, + { + "question": "What regulatory group assigns content ratings and suggested age ratings for video games? (4-letter initialism)", + "answer": "ESRB" + }, + { + "question": "Blathers is the name of the nocturnal, museum-curating owl in what series of Nintendo video games?", + "answer": "Animal Crossing" + }, + { + "question": "In what video game universe, created by Capcom, would you find a character named Jill Valentine?", + "answer": "Resident Evil" + }, + { + "question": "What 2021 game in the Metroid franchise, released on the Nintendo Switch, features Samus Aran investigating a mysterious transmission on the planet ZDR?", + "answer": "Metroid Dread" + }, + { + "question": "The website Ranker named GLaDOS, a fictional artificially intelligent computer system, the greatest video game villain of all time. GLaDOS was introduced in what groundbreaking computer game?", + "answer": "Portal" + }, + { + "question": "\"Korobeiniki,\" a folk song about a peddler and a girl haggling, is best known outside Russia as the theme music for what video game?", + "answer": "Tetris" + }, + { + "question": "Air Man, Cut Man, Ring Man, and Drill Man are all villains in what \"M.M.\" video game franchise?", + "answer": "Mega Man" + }, + { + "question": "Larry, Morton, Wendy, Iggy, Roy, Lemmy, and Ludwig are all video game villains that report to which young commander?", + "answer": "Bowser Jr" + }, + { + "question": "A reference to its popular Angry Birds franchise, what Finnish video game company sometimes uses the slogan \"Angry since 2009?\"", + "answer": "Rovio" + }, + { + "question": "It's one of the longest-running series in video game history. The four ghosts in Pac-Man are called Inky, Blinky, Pinky, and what name that breaks the pattern?", + "answer": "Clyde" + }, + { + "question": "The very first game in the Madden NFL video game franchise was named John Madden Football and was released June 1st in what year?", + "answer": "1988" + }, + { + "question": "What gothic video game franchise debuted in 1986 with Simon Belmont as protagonist, a member of the Belmont clan of vampire hunters?", + "answer": "Castlevania" + }, + { + "question": "What was the \"metallic\" golf video game played with a trackball that was popularized in bars across America?", + "answer": "Golden Tee" + }, + { + "question": "What beat-em-up video game franchise, featuring twin brother martial artists Billy and Jimmy, was later turned into a poorly received 1994 movie?", + "answer": "Double Dragon" + }, + { + "question": "According to market research company NPD Group, which video game console sold the most units in the United States in 2008?", + "answer": "Nintendo Wii" + }, + { + "question": "What popular mobile puzzle game involves the collection of characters who are described as \"friends without the R\"?", + "answer": "Best Fiends" + }, + { + "question": "Which side-scrolling platformer by Ubisoft debuted in 1995 and tasked players with navigating levels like The Dream Forest?", + "answer": "Rayman" + }, + { + "question": "In Mario's first appearance in the video game \"Donkey Kong\", what J-word was his official name before later transitioning to Mario?", + "answer": "Jumpman" + }, + { + "question": "What is the name of the talking animatronic toy that resembled a bear and reached peak popularity in the mid-1980s?", + "answer": "Teddy Ruxpin" + }, + { + "question": "The sci-fi novel \"Ready Player One\" features what 1979 Atari 2600 game in the book's final challenge?", + "answer": "Adventure" + }, + { + "question": "What was the name of the princess Mario rescues in Nintendo Gameboy's \"Super Mario Land\" (1989)?", + "answer": "Daisy" + }, + { + "question": "\"Dachshund & Friends,\" \"Lab & Friends,\" and \"Chihuahua & Friends\" are the three versions of the 2005 U.S. release of what video game?", + "answer": "Nintendogs" + } +] diff --git a/server/game_dev/admin.py b/server/game_dev/admin.py index a50a46a4..496d1122 100644 --- a/server/game_dev/admin.py +++ b/server/game_dev/admin.py @@ -27,9 +27,10 @@ class GameShowcaseAdmin(admin.ModelAdmin): class GamesAdmin(admin.ModelAdmin): - list_display = ("id", "name", "description", "completion", "active", "hostURL", "itchEmbedID", "thumbnail", "itchGameEmbedID", "itchGameWidth", - "itchGameHeight", "event") + list_display = ("id", "name", "description", "completion", "active", "hostURL", "itchEmbedID", "itchGamePlayableID", "itchGameWidth", + "itchGameHeight", "thumbnail") search_fields = ["name", "description"] + raw_id_fields = ["event"] class CommitteeAdmin(admin.ModelAdmin): diff --git a/server/game_dev/migrations/0005_alter_member_profile_picture.py b/server/game_dev/migrations/0006_alter_member_profile_picture.py similarity index 100% rename from server/game_dev/migrations/0005_alter_member_profile_picture.py rename to server/game_dev/migrations/0006_alter_member_profile_picture.py diff --git a/server/game_dev/migrations/0005_committee.py b/server/game_dev/migrations/0007_committee.py similarity index 100% rename from server/game_dev/migrations/0005_committee.py rename to server/game_dev/migrations/0007_committee.py diff --git a/server/game_dev/migrations/0006_committee_role.py b/server/game_dev/migrations/0008_committee_role.py similarity index 94% rename from server/game_dev/migrations/0006_committee_role.py rename to server/game_dev/migrations/0008_committee_role.py index 457afa83..f549b04b 100644 --- a/server/game_dev/migrations/0006_committee_role.py +++ b/server/game_dev/migrations/0008_committee_role.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0005_committee'), + ('game_dev', '0007_committee'), ] operations = [ diff --git a/server/game_dev/migrations/0006_remove_game_isitch_alter_game_itchembedid.py b/server/game_dev/migrations/0009_remove_game_isitch_alter_game_itchembedid.py similarity index 100% rename from server/game_dev/migrations/0006_remove_game_isitch_alter_game_itchembedid.py rename to server/game_dev/migrations/0009_remove_game_isitch_alter_game_itchembedid.py diff --git a/server/game_dev/migrations/0007_alter_committee_id.py b/server/game_dev/migrations/0010_alter_committee_id.py similarity index 91% rename from server/game_dev/migrations/0007_alter_committee_id.py rename to server/game_dev/migrations/0010_alter_committee_id.py index fa9a4841..7f68ac7c 100644 --- a/server/game_dev/migrations/0007_alter_committee_id.py +++ b/server/game_dev/migrations/0010_alter_committee_id.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0006_committee_role'), + ('game_dev', '0008_committee_role'), ] operations = [ diff --git a/server/game_dev/migrations/0007_rename_pathtothumbnail_game_thumbnail_and_more.py b/server/game_dev/migrations/0011_rename_pathtothumbnail_game_thumbnail_and_more.py similarity index 88% rename from server/game_dev/migrations/0007_rename_pathtothumbnail_game_thumbnail_and_more.py rename to server/game_dev/migrations/0011_rename_pathtothumbnail_game_thumbnail_and_more.py index d2b7f58d..1b3b6703 100644 --- a/server/game_dev/migrations/0007_rename_pathtothumbnail_game_thumbnail_and_more.py +++ b/server/game_dev/migrations/0011_rename_pathtothumbnail_game_thumbnail_and_more.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0006_remove_game_isitch_alter_game_itchembedid"), + ("game_dev", "0009_remove_game_isitch_alter_game_itchembedid"), ] operations = [ diff --git a/server/game_dev/migrations/0008_alter_committee_role.py b/server/game_dev/migrations/0012_alter_committee_role.py similarity index 92% rename from server/game_dev/migrations/0008_alter_committee_role.py rename to server/game_dev/migrations/0012_alter_committee_role.py index ecd84c0c..ace476a7 100644 --- a/server/game_dev/migrations/0008_alter_committee_role.py +++ b/server/game_dev/migrations/0012_alter_committee_role.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0007_alter_committee_id'), + ('game_dev', '0010_alter_committee_id'), ] operations = [ diff --git a/server/game_dev/migrations/0008_alter_event_date.py b/server/game_dev/migrations/0013_alter_event_date.py similarity index 84% rename from server/game_dev/migrations/0008_alter_event_date.py rename to server/game_dev/migrations/0013_alter_event_date.py index 13c0a175..89e026fa 100644 --- a/server/game_dev/migrations/0008_alter_event_date.py +++ b/server/game_dev/migrations/0013_alter_event_date.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0007_rename_pathtothumbnail_game_thumbnail_and_more"), + ("game_dev", "0011_rename_pathtothumbnail_game_thumbnail_and_more"), ] operations = [ diff --git a/server/game_dev/migrations/0009_merge_20260129_2104.py b/server/game_dev/migrations/0014_merge_20260129_2104.py similarity index 61% rename from server/game_dev/migrations/0009_merge_20260129_2104.py rename to server/game_dev/migrations/0014_merge_20260129_2104.py index c7d68a0d..89cfc45f 100644 --- a/server/game_dev/migrations/0009_merge_20260129_2104.py +++ b/server/game_dev/migrations/0014_merge_20260129_2104.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0005_alter_member_profile_picture'), - ('game_dev', '0008_alter_committee_role'), + ('game_dev', '0006_alter_member_profile_picture'), + ('game_dev', '0012_alter_committee_role'), ] operations = [ diff --git a/server/game_dev/migrations/0009_merge_20260131_1044.py b/server/game_dev/migrations/0015_merge_20260131_1044.py similarity index 62% rename from server/game_dev/migrations/0009_merge_20260131_1044.py rename to server/game_dev/migrations/0015_merge_20260131_1044.py index 1abbcd99..9be7a42a 100644 --- a/server/game_dev/migrations/0009_merge_20260131_1044.py +++ b/server/game_dev/migrations/0015_merge_20260131_1044.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0005_alter_member_profile_picture'), - ('game_dev', '0008_alter_event_date'), + ('game_dev', '0006_alter_member_profile_picture'), + ('game_dev', '0013_alter_event_date'), ] operations = [ diff --git a/server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py b/server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py new file mode 100644 index 00000000..4cf3312e --- /dev/null +++ b/server/game_dev/migrations/0016_game_itchgameembedid_game_itchgameheight_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 5.1.15 on 2026-02-04 07:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0015_merge_20260131_1044"), + ] + + operations = [ + migrations.AddField( + model_name="game", + name="itchGameEmbedID", + field=models.PositiveBigIntegerField( + blank=True, + default=0, + help_text="If a game has a web demo stored on itch.io, please enter the embed ID", + null=True, + ), + ), + migrations.AddField( + model_name="game", + name="itchGameHeight", + field=models.PositiveBigIntegerField(default=0), + ), + migrations.AddField( + model_name="game", + name="itchGameWidth", + field=models.PositiveBigIntegerField(default=0), + ), + ] diff --git a/server/game_dev/migrations/0010_merge_20260131_1118.py b/server/game_dev/migrations/0017_merge_20260131_1118.py similarity index 64% rename from server/game_dev/migrations/0010_merge_20260131_1118.py rename to server/game_dev/migrations/0017_merge_20260131_1118.py index 35027726..e7505aa1 100644 --- a/server/game_dev/migrations/0010_merge_20260131_1118.py +++ b/server/game_dev/migrations/0017_merge_20260131_1118.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0009_merge_20260129_2104'), - ('game_dev', '0009_merge_20260131_1044'), + ('game_dev', '0014_merge_20260129_2104'), + ('game_dev', '0015_merge_20260131_1044'), ] operations = [ diff --git a/server/game_dev/migrations/0010_socialmedia.py b/server/game_dev/migrations/0018_socialmedia.py similarity index 97% rename from server/game_dev/migrations/0010_socialmedia.py rename to server/game_dev/migrations/0018_socialmedia.py index f266b880..87b9c0fa 100644 --- a/server/game_dev/migrations/0010_socialmedia.py +++ b/server/game_dev/migrations/0018_socialmedia.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0009_merge_20260131_1044"), + ("game_dev", "0015_merge_20260131_1044"), ] operations = [ diff --git a/server/game_dev/migrations/0011_alter_gameshowcase_game.py b/server/game_dev/migrations/0019_alter_gameshowcase_game.py similarity index 90% rename from server/game_dev/migrations/0011_alter_gameshowcase_game.py rename to server/game_dev/migrations/0019_alter_gameshowcase_game.py index 120447ce..f527c3be 100644 --- a/server/game_dev/migrations/0011_alter_gameshowcase_game.py +++ b/server/game_dev/migrations/0019_alter_gameshowcase_game.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0010_merge_20260131_1118'), + ('game_dev', '0017_merge_20260131_1118'), ] operations = [ diff --git a/server/game_dev/migrations/0011_merge_0010_merge_20260131_1118_0010_socialmedia.py b/server/game_dev/migrations/0020_merge_0010_merge_20260131_1118_0010_socialmedia.py similarity index 65% rename from server/game_dev/migrations/0011_merge_0010_merge_20260131_1118_0010_socialmedia.py rename to server/game_dev/migrations/0020_merge_0010_merge_20260131_1118_0010_socialmedia.py index 2034020c..091c62c4 100644 --- a/server/game_dev/migrations/0011_merge_0010_merge_20260131_1118_0010_socialmedia.py +++ b/server/game_dev/migrations/0020_merge_0010_merge_20260131_1118_0010_socialmedia.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0010_merge_20260131_1118"), - ("game_dev", "0010_socialmedia"), + ("game_dev", "0017_merge_20260131_1118"), + ("game_dev", "0018_socialmedia"), ] operations = [] diff --git a/server/game_dev/migrations/0021_merge_20260205_1434.py b/server/game_dev/migrations/0021_merge_20260205_1434.py new file mode 100644 index 00000000..307c91e1 --- /dev/null +++ b/server/game_dev/migrations/0021_merge_20260205_1434.py @@ -0,0 +1,13 @@ +# Generated by Django 5.1.15 on 2026-02-05 06:34 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0016_game_itchgameembedid_game_itchgameheight_and_more"), + ("game_dev", "0017_merge_20260131_1118"), + ] + + operations = [] diff --git a/server/game_dev/migrations/0022_merge_20260214_1112.py b/server/game_dev/migrations/0022_merge_20260214_1112.py new file mode 100644 index 00000000..40df99c0 --- /dev/null +++ b/server/game_dev/migrations/0022_merge_20260214_1112.py @@ -0,0 +1,13 @@ +# Generated by Django 5.1.15 on 2026-02-14 03:12 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0019_alter_gameshowcase_game"), + ("game_dev", "0021_merge_20260205_1434"), + ] + + operations = [] diff --git a/server/game_dev/migrations/0012_remove_socialmedia_socialmedianame.py b/server/game_dev/migrations/0023_remove_socialmedia_socialmedianame.py similarity index 82% rename from server/game_dev/migrations/0012_remove_socialmedia_socialmedianame.py rename to server/game_dev/migrations/0023_remove_socialmedia_socialmedianame.py index e51428a5..7b19e278 100644 --- a/server/game_dev/migrations/0012_remove_socialmedia_socialmedianame.py +++ b/server/game_dev/migrations/0023_remove_socialmedia_socialmedianame.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("game_dev", "0011_merge_0010_merge_20260131_1118_0010_socialmedia"), + ("game_dev", "0020_merge_0010_merge_20260131_1118_0010_socialmedia"), ] operations = [ diff --git a/server/game_dev/migrations/0024_alter_game_itchgameembedid.py b/server/game_dev/migrations/0024_alter_game_itchgameembedid.py new file mode 100644 index 00000000..d8aa8b76 --- /dev/null +++ b/server/game_dev/migrations/0024_alter_game_itchgameembedid.py @@ -0,0 +1,23 @@ +# Generated by Django 5.1.15 on 2026-02-14 03:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0022_merge_20260214_1112"), + ] + + operations = [ + migrations.AlterField( + model_name="game", + name="itchGameEmbedID", + field=models.PositiveBigIntegerField( + blank=True, + default=None, + help_text="If a game has a web demo stored on itch.io, please enter the embed ID", + null=True, + ), + ), + ] diff --git a/server/game_dev/migrations/0013_merge_20260214_1347.py b/server/game_dev/migrations/0025_merge_20260214_1347.py similarity index 60% rename from server/game_dev/migrations/0013_merge_20260214_1347.py rename to server/game_dev/migrations/0025_merge_20260214_1347.py index 9a1c3592..3fd5e451 100644 --- a/server/game_dev/migrations/0013_merge_20260214_1347.py +++ b/server/game_dev/migrations/0025_merge_20260214_1347.py @@ -6,8 +6,8 @@ class Migration(migrations.Migration): dependencies = [ - ('game_dev', '0011_alter_gameshowcase_game'), - ('game_dev', '0012_remove_socialmedia_socialmedianame'), + ('game_dev', '0019_alter_gameshowcase_game'), + ('game_dev', '0023_remove_socialmedia_socialmedianame'), ] operations = [ diff --git a/server/game_dev/migrations/0026_merge_20260214_1420.py b/server/game_dev/migrations/0026_merge_20260214_1420.py new file mode 100644 index 00000000..27f8e63c --- /dev/null +++ b/server/game_dev/migrations/0026_merge_20260214_1420.py @@ -0,0 +1,13 @@ +# Generated by Django 5.1.15 on 2026-02-14 06:20 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0024_alter_game_itchgameembedid"), + ("game_dev", "0025_merge_20260214_1347"), + ] + + operations = [] diff --git a/server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py b/server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py new file mode 100644 index 00000000..4dc7ce98 --- /dev/null +++ b/server/game_dev/migrations/0027_remove_game_itchgameembedid_game_itchgameplayableid.py @@ -0,0 +1,27 @@ +# Generated by Django 5.1.15 on 2026-02-21 06:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("game_dev", "0026_merge_20260214_1420"), + ] + + operations = [ + migrations.RemoveField( + model_name="game", + name="itchGameEmbedID", + ), + migrations.AddField( + model_name="game", + name="itchGamePlayableID", + field=models.PositiveBigIntegerField( + blank=True, + default=None, + help_text="If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID", + null=True, + ), + ), + ] diff --git a/server/game_dev/models.py b/server/game_dev/models.py index d626275d..74a6c1c5 100644 --- a/server/game_dev/models.py +++ b/server/game_dev/models.py @@ -60,6 +60,19 @@ class CompletionStatus(models.IntegerChoices): blank=True, help_text="If game is stored on itch.io, please enter the itchEmbedID, i.e., 1000200" ) + itchGamePlayableID = models.PositiveBigIntegerField( + default=None, + null=True, + blank=True, + help_text="If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID" + ) + + itchGameWidth = models.PositiveBigIntegerField( + default=0 + ) + itchGameHeight = models.PositiveBigIntegerField( + default=0 + ) thumbnail = models.ImageField(upload_to="games/", null=True) event = models.ForeignKey(Event, on_delete=models.SET_NULL, null=True, blank=True) diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index cea76ec0..937f5bc0 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -34,21 +34,33 @@ def get_social_media(self, obj): class GamesSerializer(serializers.ModelSerializer): contributors = GameContributorSerializer( - many=True, - source="game_contributors", - read_only=True + many=True, source="game_contributors", read_only=True ) class Meta: model = Game - fields = ('id', 'name', 'description', 'completion', 'active', 'hostURL', 'itchEmbedID', 'thumbnail', 'event', 'itchGameEmbedID', - 'itchGameWidth', 'itchGameHeight', "contributors") + fields = ( + "id", + "name", + "description", + "completion", + "active", + "hostURL", + "itchEmbedID", + "thumbnail", + "event", + "itchGamePlayableID", + "itchGameWidth", + "itchGameHeight", + "contributors", + ) # Contributor serializer for name and role + class ShowcaseContributorSerializer(serializers.ModelSerializer): - name = serializers.CharField(source='member.name', read_only=True) + name = serializers.CharField(source="member.name", read_only=True) role = serializers.CharField(read_only=True) social_media = serializers.SerializerMethodField() @@ -63,18 +75,24 @@ def get_social_media(self, obj): # Serializer for GameShowcase class GameshowcaseSerializer(serializers.ModelSerializer): - game_id = serializers.IntegerField(source='game.id', read_only=True) - game_name = serializers.CharField(source='game.name', read_only=True) - game_description = serializers.CharField( - source='game.description', read_only=True) + game_id = serializers.IntegerField(source="game.id", read_only=True) + game_name = serializers.CharField(source="game.name", read_only=True) + game_description = serializers.CharField(source="game.description", read_only=True) game_cover_thumbnail = serializers.ImageField( - source='game.thumbnail', read_only=True) + source="game.thumbnail", read_only=True + ) contributors = serializers.SerializerMethodField() class Meta: model = GameShowcase - fields = ('game_id', 'game_name', 'game_description', - 'description', 'contributors', 'game_cover_thumbnail') + fields = ( + "game_id", + "game_name", + "game_description", + "description", + "contributors", + "game_cover_thumbnail", + ) def get_contributors(self, obj): # Always fetch contributors from GameContributor for the related game @@ -117,15 +135,9 @@ class Meta: class MemberSerializer(serializers.ModelSerializer): social_media = SocialMediaSerializer( - many=True, source="social_media_links", read_only=True) + many=True, source="social_media_links", read_only=True + ) class Meta: model = Member - fields = [ - "name", - "profile_picture", - "about", - "pronouns", - "social_media", - "pk" - ] + fields = ["name", "profile_picture", "about", "pronouns", "social_media", "pk"] diff --git a/server/poetry.lock b/server/poetry.lock index 34f6c925..1dc664f7 100644 --- a/server/poetry.lock +++ b/server/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. [[package]] name = "asgiref" @@ -586,5 +586,5 @@ files = [ [metadata] lock-version = "2.1" -python-versions = "^3.12" -content-hash = "9576347c536499de99b323235e5722ecff72a250598b689f042441da6d57411c" +python-versions = "^3.12 <3.14" +content-hash = "34c827f5703228d41f7b807ccc2b5445c3a1dfc907729ba4c288a345201709b2" diff --git a/server/pyproject.toml b/server/pyproject.toml index 356eb1e2..25d0d82d 100644 --- a/server/pyproject.toml +++ b/server/pyproject.toml @@ -7,7 +7,7 @@ readme = "README.md" package-mode = false [tool.poetry.dependencies] -python = "^3.12" +python = "^3.12 <3.14" Django = "^5.1" djangorestframework = "^3.15.1" django-cors-headers = "^4.3.1" From fdd5597ca58670bc885616ad4de1cf9ce58f1b66 Mon Sep 17 00:00:00 2001 From: laurenpudz Date: Fri, 27 Feb 2026 22:11:51 +0800 Subject: [PATCH 22/27] mucked up conflict resolution :/ --- server/game_dev/models.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/server/game_dev/models.py b/server/game_dev/models.py index d071002d..91d7290d 100644 --- a/server/game_dev/models.py +++ b/server/game_dev/models.py @@ -77,23 +77,6 @@ class CompletionStatus(models.IntegerChoices): thumbnail = models.ImageField(upload_to="games/", null=True) event = models.ForeignKey(Event, on_delete=models.SET_NULL, null=True, blank=True) - itchGameEmbedID = models.PositiveBigIntegerField( - default=None, - null=True, - blank=True, - help_text="If a game is playable and has a web demo stored on itch.io, please enter the embed developer ID" - ) - - itchGameWidth = models.PositiveBigIntegerField( - default=0 - ) - itchGameHeight = models.PositiveBigIntegerField( - default=0 - ) - - thumbnail = models.ImageField(upload_to="games/", null=True) - event = models.ForeignKey(Event, on_delete=models.SET_NULL, null=True, blank=True) - def __str__(self): return str(self.name) From defe950148ecafdf46a7a8714ece1b1ab5072e11 Mon Sep 17 00:00:00 2001 From: laurenpudz Date: Fri, 27 Feb 2026 22:17:22 +0800 Subject: [PATCH 23/27] fixed to use solution already in main --- server/api/settings.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/server/api/settings.py b/server/api/settings.py index 699f1a5a..8e87e300 100644 --- a/server/api/settings.py +++ b/server/api/settings.py @@ -149,10 +149,7 @@ MEDIA_ROOT = BASE_DIR/"media" # The url to serve images and other media -if DEBUG: - MEDIA_URL = "http://localhost:8000/media/" -else: - MEDIA_URL = f"https://{ALLOWED_HOSTS[0]}/media/" +MEDIA_URL = "http://localhost:8000/media/" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" From 37b9748d0df49ca02f4778c1ea470ad9673b04b2 Mon Sep 17 00:00:00 2001 From: laurenpudz Date: Sat, 28 Feb 2026 11:27:05 +0800 Subject: [PATCH 24/27] Revert "fixed to use solution already in main" This reverts commit defe950148ecafdf46a7a8714ece1b1ab5072e11. --- server/api/settings.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/api/settings.py b/server/api/settings.py index 8e87e300..699f1a5a 100644 --- a/server/api/settings.py +++ b/server/api/settings.py @@ -149,7 +149,10 @@ MEDIA_ROOT = BASE_DIR/"media" # The url to serve images and other media -MEDIA_URL = "http://localhost:8000/media/" +if DEBUG: + MEDIA_URL = "http://localhost:8000/media/" +else: + MEDIA_URL = f"https://{ALLOWED_HOSTS[0]}/media/" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" From 8989ecd95abf5663d1daa9d44accf5f68442b582 Mon Sep 17 00:00:00 2001 From: laurenpudz Date: Sat, 28 Feb 2026 12:28:35 +0800 Subject: [PATCH 25/27] make media URL relative and un nest serialisers --- server/api/settings.py | 6 +----- server/game_dev/serializers.py | 19 +++++++------------ server/game_dev/views.py | 16 +++++----------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/server/api/settings.py b/server/api/settings.py index 699f1a5a..449bf063 100644 --- a/server/api/settings.py +++ b/server/api/settings.py @@ -148,11 +148,7 @@ # The directory to store images and other media MEDIA_ROOT = BASE_DIR/"media" -# The url to serve images and other media -if DEBUG: - MEDIA_URL = "http://localhost:8000/media/" -else: - MEDIA_URL = f"https://{ALLOWED_HOSTS[0]}/media/" +MEDIA_URL = "/media/" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/server/game_dev/serializers.py b/server/game_dev/serializers.py index 937f5bc0..703469ef 100644 --- a/server/game_dev/serializers.py +++ b/server/game_dev/serializers.py @@ -100,17 +100,7 @@ def get_contributors(self, obj): return ShowcaseContributorSerializer(contributors, many=True).data -class ContributorGameDataSerializer(serializers.ModelSerializer): - # Serializes data in Game model to display on a contributor's profile. - - class Meta: - model = Game - fields = ('name', 'thumbnail', - 'description') - - class ContributorGameSerializer(serializers.ModelSerializer): - # Matches games in the GameContributor model to the information about them in the Game model. game_id = serializers.IntegerField(source='game.id', read_only=True) role = serializers.CharField(read_only=True) game_data = serializers.SerializerMethodField() @@ -120,8 +110,13 @@ class Meta: fields = ['game_id', 'role', 'game_data'] def get_game_data(self, obj): - game_data = Game.objects.get(id=obj.game_id) - return ContributorGameDataSerializer(game_data).data + game = obj.game + request = self.context.get('request') + return { + 'name': game.name, + 'description': game.description, + 'thumbnail': request.build_absolute_uri(game.thumbnail.url) if game.thumbnail and request else None + } class SocialMediaSerializer(serializers.ModelSerializer): diff --git a/server/game_dev/views.py b/server/game_dev/views.py index d8603edb..24e1879c 100644 --- a/server/game_dev/views.py +++ b/server/game_dev/views.py @@ -70,18 +70,12 @@ def get(self, request): return Response(serializer.data) -class ContributorGamesListAPIView(APIView): - """ - GET /api/games/contributor// - Returns the games a particular member has contributed to. - """ - lookup_url_kwarg = "member" +class ContributorGamesListAPIView(generics.ListAPIView): + serializer_class = ContributorGameSerializer - def get(self, request, member): - contributions = GameContributor.objects.filter( - member=self.kwargs["member"]) - serializer = ContributorGameSerializer(contributions, many=True) - return Response(serializer.data) + def get_queryset(self): + member_id = self.kwargs.get("member") + return GameContributor.objects.filter(member=member_id) class MemberAPIView(generics.RetrieveAPIView): From b577ac66bbd3fcd12b1371f7a7e9c914e508143f Mon Sep 17 00:00:00 2001 From: laurenpudz Date: Sat, 28 Feb 2026 12:33:29 +0800 Subject: [PATCH 26/27] add comments back in --- server/api/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/server/api/settings.py b/server/api/settings.py index 449bf063..1f4df893 100644 --- a/server/api/settings.py +++ b/server/api/settings.py @@ -148,6 +148,7 @@ # The directory to store images and other media MEDIA_ROOT = BASE_DIR/"media" +# The path to serve images and other media MEDIA_URL = "/media/" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" From 550fa2e71c081e7938ccf86f6fa35fd973c09c95 Mon Sep 17 00:00:00 2001 From: laurenpudz Date: Sat, 28 Feb 2026 12:33:40 +0800 Subject: [PATCH 27/27] temp frontend fix for my sanity --- client/src/pages/games/[id].tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/games/[id].tsx b/client/src/pages/games/[id].tsx index 5c110783..399d4f39 100644 --- a/client/src/pages/games/[id].tsx +++ b/client/src/pages/games/[id].tsx @@ -89,7 +89,7 @@ export default function IndividualGamePage() {
- {gameEmbedID != "0" ? ( + {gameEmbedID ? (

RM9$SpnDGz&`z=EF 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�?c=KaO{5wph&!8ODd5%TV5TvQv$w97?WL3ph!J* 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 Oe4gLGxdHz*@&6CK1HPyL literal 0 HcmV?d00001 diff --git a/client/scripts/open-when-ready.js b/client/scripts/open-when-ready.js new file mode 100644 index 00000000..e69de29b diff --git a/client/src/components/main/Navbar.tsx b/client/src/components/main/Navbar.tsx index 5f87e431..d0d7946a 100644 --- a/client/src/components/main/Navbar.tsx +++ b/client/src/components/main/Navbar.tsx @@ -5,8 +5,11 @@ import Image from "next/image"; import Link from "next/link"; import { useState } from "react"; +import { useExplosionContext } from "@/contexts/ExplosionContext"; + export default function Navbar() { const [isDropdownOpen, setIsDropdownOpen] = useState(false); + const { triggerExplosionAt } = useExplosionContext(); const navItems = [ { href: "/", label: "Home" }, @@ -16,11 +19,19 @@ export default function Navbar() { { href: "/artwork", label: "Art Showcase" }, ]; + const handleNavClick = (e: React.MouseEvent) => { + triggerExplosionAt(e.clientX, e.clientY); + }; + return ( <>