Skip to content

Commit 5a6bcfe

Browse files
Merge branch 'main' of https://github.com/codersforcauses/game-dev into issue-81-Art_in_Gameshowcase_GameSerializer_Data
2 parents c274274 + 51e872d commit 5a6bcfe

53 files changed

Lines changed: 664 additions & 342 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci-backend.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ jobs:
5858
env:
5959
EMAIL_PORT: 1025
6060
FRONTEND_URL: http://localhost:3000
61+
API_ALLOWED_HOSTS: localhost
6162
run: poetry run python manage.py migrate
6263

6364
- name: Run tests 🧪
@@ -66,6 +67,7 @@ jobs:
6667
JWT_SIGNING_KEY: NjMgNmYgNmQgNmQgNzUgNmUgNjkgNzQgNzkgNzMgNzAgNjkgNzIgNjkgNzQgNjYgNmYgNzUgNmUgNjQgNjEgNzQgNjkgNmYgNmU=
6768
EMAIL_PORT: 1025
6869
FRONTEND_URL: http://localhost:3000
70+
API_ALLOWED_HOSTS: localhost
6971
run: |
7072
poetry run python3 -m pip install coverage
7173
poetry run coverage run manage.py test
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Committee Members
2+
3+
Profiles of the Committee Members of the club that are displayed on the about page.
4+
5+
## Fields
6+
7+
**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.
8+
9+
**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.
10+
11+
## Other Notes
12+
13+
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)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Games
2+
3+
Pages for games can be added and edited at the row 'Game' of the GAME_DEV section on the main admin page.
4+
5+
### Fields
6+
7+
**Name:** Required field for the game's name. A character field (includes letters, numbers and symbols) of maximum length 200 characters.
8+
9+
**Descripiton:** Required field for the game's description. A text field.
10+
11+
**Completion:** Required field for the game's completion. A multichoice option field with four options including:
12+
- "Work in progress (Unplayable)"
13+
- "Playable - In Development"
14+
- "Beta - Stable but not Final"
15+
- "Completed"
16+
17+
**Active:** Required field for if the game is continued to be being worked on. A boolean field.
18+
19+
**Host URL:** Optional field for the game's host URL. A URL field with a maximum length 2083 characters
20+
21+
**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/".
22+
23+
**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.
24+
25+
**Event:** Optional field for the event at which the game was created. Links the game to an event. Foreign key field for an event.
26+
27+
**Itch Game Playable 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.**
28+
29+
**Itch Game Width:** This field is required if the playable field ID is non null. 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=".
30+
31+
**Itch Game Height:** This field is required if the playable field ID is non null. 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=".
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## About/Committee Page
2+
3+
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.
4+
5+
## Hardcoded content to be modified by committee members
6+
7+
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
8+
9+
## Other Notes
10+
11+
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.

client/package-lock.json

Lines changed: 22 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/src/components/main/Footer.tsx

Lines changed: 72 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,12 @@
22
import { motion } from "framer-motion";
33
import {
44
Calendar,
5-
Clock,
65
Gamepad2,
7-
Handshake,
86
Heart,
97
Home,
10-
Link as LucideLink,
118
Map,
129
Palette,
13-
Pencil,
1410
Sparkles,
15-
Upload,
1611
Users,
1712
} from "lucide-react";
1813
import Image from "next/image";
@@ -23,15 +18,19 @@ import { useRef } from "react";
2318
import LinksList from "@/components/ui/LinksList";
2419
import NetworkCanvas from "@/components/ui/NetworkCanvas";
2520
import SocialIconButton from "@/components/ui/SocialIconButton";
26-
import { social_media } from "@/gamedev-metadata.json";
2721

2822
export interface ListLink {
2923
label: string;
3024
href: string;
3125
icon: ReactNode;
3226
}
3327

34-
const quickLinks: ListLink[] = [
28+
type socialMedia = {
29+
url: string;
30+
alt_text: string;
31+
};
32+
33+
/*const quickLinks: ListLink[] = [
3534
{
3635
label: "Join the Club",
3736
href: "#",
@@ -44,7 +43,7 @@ const quickLinks: ListLink[] = [
4443
},
4544
{ label: "Upcoming Jams", href: "#", icon: <Clock className="h-4 w-4" /> },
4645
{ label: "Resources", href: "#", icon: <Pencil className="h-4 w-4" /> },
47-
];
46+
];*/
4847

4948
// Main navigation links (ideally should be shared with Navbar)
5049
export const mainLinks: ListLink[] = [
@@ -67,6 +66,25 @@ export const mainLinks: ListLink[] = [
6766
},
6867
];
6968

69+
const socialMedia: socialMedia[] = [
70+
{
71+
url: "https://www.facebook.com/people/Game-Development-UWA/61576948012356/",
72+
alt_text: "Facebook",
73+
},
74+
{
75+
url: "https://discord.com/invite/JvnuVyMUff",
76+
alt_text: "Discord",
77+
},
78+
{
79+
url: "https://www.instagram.com/gamedevelopmentuwa",
80+
alt_text: "Instagram",
81+
},
82+
{
83+
url: "https://game-development-uwa.itch.io/",
84+
alt_text: "Itch.io",
85+
},
86+
];
87+
7088
export default function Footer() {
7189
const footerRef = useRef<HTMLElement | null>(null);
7290
return (
@@ -77,7 +95,7 @@ export default function Footer() {
7795
>
7896
<div className="relative z-10 border-t border-purple-500/20">
7997
<div className="container mx-auto px-4 py-12 sm:px-6 lg:px-8">
80-
<div className="mb-12 grid grid-cols-1 gap-8 lg:grid-cols-3">
98+
<div className="mb-12 grid grid-cols-1 gap-8 lg:grid-cols-2">
8199
<div className="space-y-4 lg:col-span-1">
82100
<div className="group flex items-center gap-4">
83101
<motion.div
@@ -110,42 +128,33 @@ export default function Footer() {
110128
Game Development
111129
</h3>
112130
<p className="font-jersey10 text-lg text-gray-400">
113-
CreatePlayInspire
131+
DesignCreatePlay
114132
</p>
115133
</div>
116134
</div>
117-
<a
118-
href="mailto:UWAgamedev@gmail.com"
119-
className="block font-jersey10 text-xl text-gray-300 transition-colors hover:text-purple-400"
120-
>
121-
UWAgamedev@gmail.com
135+
<a className="block font-jersey10 text-xl text-gray-300 transition-colors hover:text-purple-400">
136+
Email coming soon!
122137
</a>
123138
<p className="font-jersey10 text-xl leading-relaxed text-gray-300/80">
124-
Building the next generation of game developers at UWA game
125-
development club
139+
Building the next generation of game developers!
126140
</p>
127141
<div className="flex gap-3 pt-2">
128-
{Object.entries(social_media).map(
129-
([platform, data], index) => (
130-
<SocialIconButton
131-
key={index}
132-
url={data.url}
133-
socialMediaName={platform}
134-
/>
135-
),
136-
)}
142+
{socialMedia.map((data) => (
143+
<SocialIconButton
144+
key={data.alt_text}
145+
url={data.url}
146+
altText={data.alt_text}
147+
/>
148+
))}
137149
</div>
138150
</div>
139-
<LinksList
140-
title="Quick Links"
141-
titleIcon={<LucideLink className="h-4 w-4 text-accent" />}
142-
links={quickLinks}
143-
/>
144-
<LinksList
145-
title="Explore"
146-
titleIcon={<Map className="h-4 w-4 text-purple-400" />}
147-
links={mainLinks}
148-
/>
151+
<div className="justify-center lg:flex">
152+
<LinksList
153+
title="Explore"
154+
titleIcon={<Map className="h-4 w-4 text-purple-400" />}
155+
links={mainLinks}
156+
/>
157+
</div>
149158
</div>
150159
<div className="relative my-8">
151160
<div className="absolute inset-0 flex items-center">
@@ -158,30 +167,36 @@ export default function Footer() {
158167
</div>
159168
</div>
160169
<div className="flex flex-col items-center justify-between gap-4 sm:flex-row">
161-
<div className="flex items-center gap-2 font-jersey10 text-xl text-gray-400">
162-
<span>© {new Date().getFullYear()} CFC Game Dev</span>
163-
<span className="text-purple-500"></span>
164-
<span>All rights reserved</span>
170+
<div className="flex items-center gap-2 font-jersey10 text-xl text-gray-400 sm:w-48 lg:w-80">
171+
<div>
172+
© {new Date().getFullYear()} CFC ~ GDUWA
173+
<span className="mx-2 text-purple-500"></span>
174+
All rights reserved
175+
</div>
165176
</div>
166-
<Link
167-
href=""
168-
className="group flex -translate-x-[52px] items-center gap-2.5 rounded-full border border-purple-500/20 bg-gradient-to-r from-purple-500/10 to-pink-500/10 px-4 py-2 transition-all duration-300 hover:border-purple-500/40 hover:shadow-lg hover:shadow-purple-500/20"
169-
onClick={() => window.open("/Constitution-V1.pdf")}
170-
>
171-
<span className="font-jersey10 text-xl text-gray-300 transition-colors group-hover:text-white">
172-
Constitution
173-
</span>
174-
</Link>
175-
<div className="flex items-center gap-2 font-jersey10 text-xl text-gray-400">
176-
Made with
177-
<motion.div
178-
animate={{ scale: [1, 1.2, 1] }}
179-
transition={{ duration: 1.5, repeat: Infinity }}
177+
<div className="flex justify-center sm:w-48 lg:w-80">
178+
<Link
179+
href=""
180+
className="group flex w-fit items-center gap-2.5 rounded-full border border-purple-500/20 bg-gradient-to-r from-purple-500/10 to-pink-500/10 px-4 py-2 transition-all duration-300 hover:border-purple-500/40 hover:shadow-lg hover:shadow-purple-500/20"
181+
onClick={() => window.open("/Constitution-V1.pdf")}
180182
>
181-
<Heart className="h-4 w-4 fill-current text-red-500" />
182-
</motion.div>
183-
in Perth, UWA
183+
<div className="font-jersey10 text-xl text-gray-300 transition-colors group-hover:text-white">
184+
Constitution
185+
</div>
186+
</Link>
184187
</div>
188+
<span className="flex items-center justify-end gap-2 font-jersey10 text-xl text-gray-400 sm:w-48 lg:w-80">
189+
<pre className="gap-2 font-jersey10 text-xl">
190+
Made with
191+
<motion.span
192+
animate={{ scale: [1, 1.2, 1] }}
193+
transition={{ duration: 1.5, repeat: Infinity }}
194+
>
195+
<Heart className="mx-2 inline h-4 w-4 fill-current text-red-500" />
196+
</motion.span>
197+
in UWA, Perth
198+
</pre>
199+
</span>
185200
</div>
186201
</div>
187202
</div>

0 commit comments

Comments
 (0)