Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
285 commits
Select commit Hold shift + click to select a range
5bf084d
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
4de4c3e
It just doesn't feel right...
Villagers654 Feb 20, 2026
ba6c4ce
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
12c0303
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
061c923
Fix 401
Villagers654 Feb 20, 2026
fadf9a6
Getting annoyed
Villagers654 Feb 20, 2026
1b99d3e
Found the actual issue
Villagers654 Feb 20, 2026
914e84c
Styling changes + new card component
Villagers654 Feb 20, 2026
5b0bbc0
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
37dcb93
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
4fe7a27
Various bug fixes
Villagers654 Feb 20, 2026
372698a
Fix compile
Villagers654 Feb 20, 2026
9bdf3fa
Jam editing and deletion
Villagers654 Feb 21, 2026
962eb3d
Refine editing and deleting
Villagers654 Feb 21, 2026
351adbd
Managing jams in the dashboard
Villagers654 Feb 21, 2026
464a51f
Merge remote-tracking branch 'origin/modjam' into modjam
Villagers654 Feb 21, 2026
1d8183c
Very initial modjam work
Villagers654 Feb 20, 2026
a1f4535
Unify styling
Villagers654 Feb 20, 2026
eccf123
Jam creation flow
Villagers654 Feb 20, 2026
281ae3f
Jam submission flow
Villagers654 Feb 20, 2026
1409734
Remove APP_
Villagers654 Feb 20, 2026
3e3ba86
Don't use projectlayout
Villagers654 Feb 20, 2026
f57c95b
Jam calendar
Villagers654 Feb 20, 2026
3e434b2
Proper navbar widths
Villagers654 Feb 20, 2026
9603fc6
Fix jam publishing
Villagers654 Feb 20, 2026
eea995b
More fixes for publishing
Villagers654 Feb 20, 2026
6b0a305
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
15ab488
It just doesn't feel right...
Villagers654 Feb 20, 2026
e90eea2
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
1b6de52
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
39db09b
Fix 401
Villagers654 Feb 20, 2026
14000f5
Getting annoyed
Villagers654 Feb 20, 2026
5db6921
Found the actual issue
Villagers654 Feb 20, 2026
93ec7a6
Styling changes + new card component
Villagers654 Feb 20, 2026
16bb9bd
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
6687183
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
b9896ab
Various bug fixes
Villagers654 Feb 20, 2026
d35df4a
Fix compile
Villagers654 Feb 20, 2026
f57153c
Jam editing and deletion
Villagers654 Feb 21, 2026
f6a68a4
Refine editing and deleting
Villagers654 Feb 21, 2026
e3b9812
Managing jams in the dashboard
Villagers654 Feb 21, 2026
f4c60e3
Very initial modjam work
Villagers654 Feb 20, 2026
1ef0b20
Unify styling
Villagers654 Feb 20, 2026
0f1fedb
Jam creation flow
Villagers654 Feb 20, 2026
b4479c6
Don't use projectlayout
Villagers654 Feb 20, 2026
f8ccf96
Jam calendar
Villagers654 Feb 20, 2026
e67952e
Proper navbar widths
Villagers654 Feb 20, 2026
5991e3b
Fix jam publishing
Villagers654 Feb 20, 2026
94a7ccb
More fixes for publishing
Villagers654 Feb 20, 2026
42b0645
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
279dbfc
It just doesn't feel right...
Villagers654 Feb 20, 2026
8957e49
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
1e01fc0
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
beb3f94
Fix 401
Villagers654 Feb 20, 2026
59b0f1f
Getting annoyed
Villagers654 Feb 20, 2026
0d69f96
Found the actual issue
Villagers654 Feb 20, 2026
219c1c4
Styling changes + new card component
Villagers654 Feb 20, 2026
f5643f0
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
f81b488
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
d19f663
Various bug fixes
Villagers654 Feb 20, 2026
aaf877d
Fix compile
Villagers654 Feb 20, 2026
2ad4f5c
Jam editing and deletion
Villagers654 Feb 21, 2026
46509c6
Refine editing and deleting
Villagers654 Feb 21, 2026
b1c8f7f
Managing jams in the dashboard
Villagers654 Feb 21, 2026
573cfd5
Merge remote-tracking branch 'origin/modjam' into modjam
Villagers654 Feb 21, 2026
8890787
Very initial modjam work
Villagers654 Feb 20, 2026
389e5d6
Unify styling
Villagers654 Feb 20, 2026
67a4682
Jam creation flow
Villagers654 Feb 20, 2026
f3ee4ec
Jam submission flow
Villagers654 Feb 20, 2026
4c78aee
Remove APP_
Villagers654 Feb 20, 2026
d17f0bc
Don't use projectlayout
Villagers654 Feb 20, 2026
e5b0aef
Jam calendar
Villagers654 Feb 20, 2026
33bf8ff
Proper navbar widths
Villagers654 Feb 20, 2026
20b0843
Fix jam publishing
Villagers654 Feb 20, 2026
1ec3dae
More fixes for publishing
Villagers654 Feb 20, 2026
3778541
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
ac120a4
It just doesn't feel right...
Villagers654 Feb 20, 2026
b1bc5c1
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
5b2ef0a
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
7b46eea
Fix 401
Villagers654 Feb 20, 2026
165a113
Getting annoyed
Villagers654 Feb 20, 2026
244bc49
Found the actual issue
Villagers654 Feb 20, 2026
b90cc80
Styling changes + new card component
Villagers654 Feb 20, 2026
86b3d6f
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
1e49649
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
8543b55
Various bug fixes
Villagers654 Feb 20, 2026
2209634
Fix compile
Villagers654 Feb 20, 2026
106f74f
Jam editing and deletion
Villagers654 Feb 21, 2026
4fe19a7
Refine editing and deleting
Villagers654 Feb 21, 2026
481eb11
Managing jams in the dashboard
Villagers654 Feb 21, 2026
de9d733
Very initial modjam work
Villagers654 Feb 20, 2026
8ddeb57
Unify styling
Villagers654 Feb 20, 2026
5d7fae2
Jam creation flow
Villagers654 Feb 20, 2026
4048a4f
Don't use projectlayout
Villagers654 Feb 20, 2026
cdcbd3a
Jam calendar
Villagers654 Feb 20, 2026
42a73fc
Proper navbar widths
Villagers654 Feb 20, 2026
4a341b2
Fix jam publishing
Villagers654 Feb 20, 2026
9361f00
More fixes for publishing
Villagers654 Feb 20, 2026
235573b
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
948ae5d
It just doesn't feel right...
Villagers654 Feb 20, 2026
19382bb
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
f7c1d7e
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
54809b0
Fix 401
Villagers654 Feb 20, 2026
3854d80
Getting annoyed
Villagers654 Feb 20, 2026
b846c99
Found the actual issue
Villagers654 Feb 20, 2026
c84ebe3
Styling changes + new card component
Villagers654 Feb 20, 2026
a869e69
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
28d7460
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
89db51e
Various bug fixes
Villagers654 Feb 20, 2026
1277977
Fix compile
Villagers654 Feb 20, 2026
482dcb1
Jam editing and deletion
Villagers654 Feb 21, 2026
b703773
Refine editing and deleting
Villagers654 Feb 21, 2026
d4eb90e
Managing jams in the dashboard
Villagers654 Feb 21, 2026
59d1285
Very initial modjam work
Villagers654 Feb 20, 2026
3f3ec4b
Unify styling
Villagers654 Feb 20, 2026
78b9bd8
Jam creation flow
Villagers654 Feb 20, 2026
f8b163e
Don't use projectlayout
Villagers654 Feb 20, 2026
8b42601
Jam calendar
Villagers654 Feb 20, 2026
899efc2
Proper navbar widths
Villagers654 Feb 20, 2026
28261ef
Fix jam publishing
Villagers654 Feb 20, 2026
a2b357a
More fixes for publishing
Villagers654 Feb 20, 2026
40597f5
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
11b7bc1
It just doesn't feel right...
Villagers654 Feb 20, 2026
11557f8
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
04d1be7
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
83a32ca
Fix 401
Villagers654 Feb 20, 2026
46e7803
Getting annoyed
Villagers654 Feb 20, 2026
8675381
Found the actual issue
Villagers654 Feb 20, 2026
9178986
Styling changes + new card component
Villagers654 Feb 20, 2026
3df0913
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
aef6ba3
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
5ab875e
Various bug fixes
Villagers654 Feb 20, 2026
1e173be
Fix compile
Villagers654 Feb 20, 2026
068ce9b
Jam editing and deletion
Villagers654 Feb 21, 2026
f445fa0
Refine editing and deleting
Villagers654 Feb 21, 2026
1bf487a
Managing jams in the dashboard
Villagers654 Feb 21, 2026
e21dbb5
Very initial modjam work
Villagers654 Feb 20, 2026
ea118a9
Unify styling
Villagers654 Feb 20, 2026
9dcf372
Jam creation flow
Villagers654 Feb 20, 2026
19ebe24
Don't use projectlayout
Villagers654 Feb 20, 2026
e9052d0
Jam calendar
Villagers654 Feb 20, 2026
275e18a
Proper navbar widths
Villagers654 Feb 20, 2026
b547791
Fix jam publishing
Villagers654 Feb 20, 2026
fb8273b
More fixes for publishing
Villagers654 Feb 20, 2026
3c7439c
Mild restyle and some more fixes
Villagers654 Feb 20, 2026
7e7c198
It just doesn't feel right...
Villagers654 Feb 20, 2026
82969c5
More of a unique identity again + ui bug fixes
Villagers654 Feb 20, 2026
b1b953a
Make it more clear as you make progress towards jam publishing
Villagers654 Feb 20, 2026
de9585c
Fix 401
Villagers654 Feb 20, 2026
f2736d3
Getting annoyed
Villagers654 Feb 20, 2026
adcbb52
Found the actual issue
Villagers654 Feb 20, 2026
71ec6b7
Styling changes + new card component
Villagers654 Feb 20, 2026
7723979
Make jam elements more visually distinct from project counterparts
Villagers654 Feb 20, 2026
ba8f62d
Make jam card a little closer to the jam page in terms of layout
Villagers654 Feb 20, 2026
f5787ac
Various bug fixes
Villagers654 Feb 20, 2026
fcb6cac
Fix compile
Villagers654 Feb 20, 2026
4223598
Jam editing and deletion
Villagers654 Feb 21, 2026
9968616
Refine editing and deleting
Villagers654 Feb 21, 2026
cdf2a28
Managing jams in the dashboard
Villagers654 Feb 21, 2026
c89696a
Merge remote-tracking branch 'origin/modjam' into modjam
Villagers654 Feb 21, 2026
bee651e
Implement jam submissions
Villagers654 Feb 21, 2026
c756090
Use the right endpoint
Villagers654 Feb 21, 2026
fe902c7
More configurability on how voting works
Villagers654 Feb 21, 2026
7c6b8ef
Better styling for jam submissions card
Villagers654 Feb 21, 2026
2dbd317
Fix NPE
Villagers654 Feb 21, 2026
d4e386d
Show votes before the submissions end by default
Villagers654 Feb 21, 2026
e09091b
Make the way the current votes are presented more minimal
Villagers654 Feb 21, 2026
2a1259b
Add banners back to the cards
Villagers654 Feb 21, 2026
68c9817
Implement countdown
Villagers654 Feb 21, 2026
80d7933
Calendar-based jam list
Villagers654 Feb 21, 2026
348088c
Minor styling adjustment
Villagers654 Feb 21, 2026
6d25d07
Bring calendar more in line with modtale styling
Villagers654 Feb 21, 2026
1480bed
Make the banner less dominating
Villagers654 Feb 21, 2026
82da1bb
Fix uploading banners/icons
Villagers654 Feb 23, 2026
fb9bd40
All-new jam UI
Villagers654 Feb 23, 2026
597d974
Neil made fun of my UI so I changed it
Villagers654 Feb 23, 2026
cfd819b
Markdown support
Villagers654 Feb 23, 2026
2903491
Make sure outdated data is not being served
Villagers654 Feb 23, 2026
44a7a46
Some enhancements to make sure everything is being fetched correctly
Villagers654 Feb 23, 2026
3e25adc
More minor adjustments
Villagers654 Feb 23, 2026
d9a6126
I don't like rockets or sparkles
Villagers654 Feb 23, 2026
8380b68
Optimistically handle votes
Villagers654 Feb 23, 2026
c141c41
Do jam publish requirements like project publish requirements
Villagers654 Feb 23, 2026
b3a80f3
Refactor
Villagers654 Feb 23, 2026
f602034
Be consistent
Villagers654 Feb 23, 2026
c10f292
Merge branch 'develop' into modjam
Villagers654 Feb 23, 2026
397e0c5
Merge branch 'develop' into modjam
Villagers654 Feb 24, 2026
ba3f8fa
Fix og embedding
Villagers654 Feb 24, 2026
22ca993
Show if a project was a participant/winner of a jam
Villagers654 Feb 24, 2026
8cc350b
Fix prev. commit
Villagers654 Feb 24, 2026
0448b1f
Grab the pretty names and slugs
Villagers654 Feb 24, 2026
6fbaf09
Use the jam icon if it has one
Villagers654 Feb 24, 2026
3f0f222
Better jam display
Villagers654 Feb 24, 2026
7505178
Allow configuring which of the jams the project was submitted to are …
Villagers654 Feb 24, 2026
bb0871f
Fix resolving icon url
Villagers654 Feb 24, 2026
24ebf23
Properly implement closing the vote
Villagers654 Feb 24, 2026
356afd4
Implement winners
Villagers654 Feb 24, 2026
6d2904a
Fix up the 'submission to' container
Villagers654 Feb 25, 2026
b56ed36
Make everything a Link
Villagers654 Feb 25, 2026
9a19f4a
Fix overview being half width
Villagers654 Feb 25, 2026
e765e17
Make the 'jams' button on the navbar glow for any jam related url
Villagers654 Feb 25, 2026
5ae4228
Make the participants text a little bigger
Villagers654 Feb 25, 2026
0d762af
Updated jam cards
Villagers654 Feb 25, 2026
73e135e
Fix some errors
Villagers654 Feb 25, 2026
c6745a7
Submission type restrictions
Villagers654 Feb 25, 2026
39d0276
Use /edit for the jam builder
Villagers654 Feb 25, 2026
44ee68a
Rules generator & more submission restrictions
Villagers654 Feb 25, 2026
910a3c5
Implement jams into the dashboard properly
Villagers654 Feb 25, 2026
98290a1
Allow setting jam start and end times by time rather than just by date
Villagers654 Feb 25, 2026
26f171c
Allow setting jam times by minute rather than just date
Villagers654 Feb 26, 2026
2c9c03f
More restrictions based on level of experience
Villagers654 Feb 26, 2026
cb9cc84
Only show a jam in 'past events' once it drops off the calendar
Villagers654 Feb 26, 2026
015b4a4
Fix UI bug with the tab selector
Villagers654 Feb 26, 2026
db93f7e
Judging system preliminary
Villagers654 Feb 27, 2026
2286f3e
Merge branch 'refs/heads/develop' into modjam
Villagers654 Feb 27, 2026
68b262e
Ability to hide all projects until voting starts, and submit a projec…
Villagers654 Feb 27, 2026
b42b8d8
Improved error handling & communication
Villagers654 Feb 27, 2026
a781951
Fix crash
Villagers654 Feb 27, 2026
0627444
Don't show private projects
Villagers654 Feb 27, 2026
e358181
Make it clear to users when a jam is on secret mode
Villagers654 Feb 27, 2026
6ac5830
Show participants instead of entries
Villagers654 Feb 27, 2026
e111933
Custom slugs
Villagers654 Feb 27, 2026
40a3c80
Add jams to the sitemap
Villagers654 Feb 27, 2026
f1347f7
Fix inaccurate jam end date
Villagers654 Mar 3, 2026
762ca6f
Merge branch 'develop' into modjam
Villagers654 Apr 25, 2026
677fdc1
Fix merge compilation issues
Villagers654 Apr 25, 2026
0e7cc0f
Merge develop into modjam and migrate modjam to module-based structure
Villagers654 May 23, 2026
6be3877
Fix compile
Villagers654 May 23, 2026
32972fd
Restructure JamList
Villagers654 May 23, 2026
10cfa8c
Total modjam pages restyle
Villagers654 May 23, 2026
0c0203a
Add unsaved changes indicator to jambuilder
Villagers654 May 23, 2026
9744d88
When seeding, seed all the dependencies as well
Villagers654 May 23, 2026
6fb5959
Merge branch 'develop' into modjam
Villagers654 May 23, 2026
1191f11
Merge branch 'develop' into modjam
Villagers654 May 23, 2026
efceedb
Merge branch 'develop' into modjam
Villagers654 May 23, 2026
6d1e177
Render jamlayout more efficiently
Villagers654 May 23, 2026
5e69c9e
Don't constantly resize the gallery
Villagers654 May 23, 2026
11de11a
Merge develop into modjam
Villagers654 Jun 11, 2026
9a8e772
Merge branch 'develop' into modjam
Villagers654 Jun 21, 2026
8a4c2e6
Merge branch 'develop' into modjam
Villagers654 Jun 21, 2026
968b252
Merge develop into modjam
Villagers654 Aug 12, 2026
d448a5f
Polish modjam performance and mobile UX
Villagers654 Aug 12, 2026
0def509
Add jam SSR and secure host management
Villagers654 Aug 12, 2026
538f409
Merge branch 'main' into modjam
Villagers654 Sep 3, 2026
f119872
Merge branch 'develop' into modjam
Villagers654 Sep 3, 2026
8f99016
Merge branch 'develop' into modjam
Villagers654 Sep 3, 2026
4a5e23e
Merge develop into modjam
Villagers654 Sep 3, 2026
22759ca
Merge develop into modjam
Villagers654 Sep 4, 2026
d2377b7
Merge develop into modjam
Villagers654 Sep 8, 2026
adf0c12
Merge latest develop launcher text update into modjam
Villagers654 Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Modtale CI/CD
name: Modtale CI/CD

on:
push:
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:
fi
echo "GIT_BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
echo "BRANCH_SLUG=$BRANCH_SLUG" >> $GITHUB_ENV

if [ "$BRANCH_NAME" = "main" ]; then
echo "ENV_TYPE=prod" >> $GITHUB_ENV
echo "BUILD_SERVICE_ACCOUNT=${{ vars.GCP_BUILD_SERVICE_ACCOUNT }}" >> $GITHUB_ENV
Expand All @@ -82,7 +82,7 @@ jobs:
echo "WARDEN_ENABLED=true" >> $GITHUB_ENV
echo "OAUTH_ENABLED=true" >> $GITHUB_ENV
echo "WARDEN_SECRET_NAME=WARDEN_API_KEY" >> $GITHUB_ENV

elif [ "$BRANCH_NAME" = "develop" ]; then
echo "ENV_TYPE=dev" >> $GITHUB_ENV
echo "BUILD_SERVICE_ACCOUNT=${{ vars.GCP_BUILD_SERVICE_ACCOUNT }}" >> $GITHUB_ENV
Expand All @@ -107,7 +107,7 @@ jobs:
echo "WARDEN_ENABLED=true" >> $GITHUB_ENV
echo "OAUTH_ENABLED=true" >> $GITHUB_ENV
echo "WARDEN_SECRET_NAME=WARDEN_API_KEY" >> $GITHUB_ENV

else
SLUG="$BRANCH_SLUG"
BRANCH_PREVIEW_SOURCE_R2_BUCKET_NAME="${{ vars.GCP_BRANCH_PREVIEW_SOURCE_R2_BUCKET_NAME }}"
Expand Down Expand Up @@ -437,7 +437,7 @@ jobs:
else
echo "Reusing the existing backend image for a configuration-only rollout."
fi

ARGS=(
"--image" "gcr.io/$PROJECT_ID/modtale-backend:${{ env.TAG }}"
"--region" "$REGION"
Expand Down Expand Up @@ -715,7 +715,7 @@ jobs:
else
PUBLIC_BACKEND_URL=$B_URL
fi

gcloud run services update ${{ env.BACKEND_SERVICE }} \
--region $REGION \
--update-env-vars "FRONTEND_URL=$FINAL_FRONTEND_URL,BACKEND_URL=$PUBLIC_BACKEND_URL"
Expand Down Expand Up @@ -837,21 +837,21 @@ jobs:
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Component | Status | Target Service | Service URL |" >> $GITHUB_STEP_SUMMARY
echo "|---|---|---|---|" >> $GITHUB_STEP_SUMMARY

if [ -n "$PUBLIC_API_URL" ]; then
echo "| **Backend API** | $BACKEND_STATUS | \`${{ env.BACKEND_SERVICE }}\` | [API Endpoint]($PUBLIC_API_URL) |" >> $GITHUB_STEP_SUMMARY
elif [ -n "$B_URL" ]; then
echo "| **Backend API** | $BACKEND_STATUS | \`${{ env.BACKEND_SERVICE }}\` | [API Endpoint]($B_URL/api/v1) |" >> $GITHUB_STEP_SUMMARY
else
echo "| **Backend API** | $BACKEND_STATUS | \`${{ env.BACKEND_SERVICE }}\` | *N/A* |" >> $GITHUB_STEP_SUMMARY
fi

if [ -n "$F_URL" ]; then
echo "| **Frontend App** | $FRONTEND_STATUS | \`${{ env.FRONTEND_SERVICE }}\` | [App URL]($F_URL) |" >> $GITHUB_STEP_SUMMARY
else
echo "| **Frontend App** | $FRONTEND_STATUS | \`${{ env.FRONTEND_SERVICE }}\` | *N/A* |" >> $GITHUB_STEP_SUMMARY
fi

echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "*View deployment details in [Google Cloud Console](https://console.cloud.google.com/run?project=${{ env.PROJECT_ID }}).* " >> $GITHUB_STEP_SUMMARY
Expand Down
1 change: 1 addition & 0 deletions backend/src/main/java/net/modtale/ModtaleApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
pattern = "net\\.modtale\\.status\\..*"
))
@ConfigurationPropertiesScan
@EnableCaching
@EnableMethodSecurity
public class ModtaleApplication {
public static void main(String[] args) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,10 @@ public SecurityFilterChain securityFilterChain(
.requestMatchers("/sitemap.xml", "/actuator/health", "/actuator/health/**").permitAll()
.requestMatchers("/client-metadata.json").permitAll()
.requestMatchers(HttpMethod.GET,
"/api/v1/projects",
"/api/v1/projects/**",
"/api/v1/modjams",
"/api/v1/modjams/**",
"/api/v1/tags",
"/api/v1/files/**",
"/api/v1/user/profile/**",
Expand Down Expand Up @@ -359,9 +362,10 @@ public SecurityFilterChain securityFilterChain(
"/api/v1/auth/change-password",
"/api/v1/auth/credentials"
).authenticated()
.requestMatchers(HttpMethod.POST, "/api/v1/projects/**").authenticated()
.requestMatchers(HttpMethod.PUT, "/api/v1/projects/**").authenticated()
.requestMatchers(HttpMethod.DELETE, "/api/v1/projects/**").authenticated()
.requestMatchers(HttpMethod.POST, "/api/v1/projects", "/api/v1/projects/**", "/api/v1/modjams", "/api/v1/modjams/**").authenticated()
.requestMatchers(HttpMethod.PUT, "/api/v1/projects", "/api/v1/projects/**", "/api/v1/modjams", "/api/v1/modjams/**").authenticated()
.requestMatchers(HttpMethod.DELETE, "/api/v1/projects", "/api/v1/projects/**", "/api/v1/modjams", "/api/v1/modjams/**").authenticated()
.requestMatchers(HttpMethod.PATCH, "/api/v1/modjams", "/api/v1/modjams/**").authenticated()
.requestMatchers("/api/**").authenticated()
.anyRequest().permitAll()
)
Expand Down
170 changes: 170 additions & 0 deletions backend/src/main/java/net/modtale/controller/ModjamController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
package net.modtale.controller;

import net.modtale.model.jam.Modjam;
import net.modtale.model.jam.ModjamSubmission;
import net.modtale.model.user.User;
import net.modtale.service.ModjamService;
import net.modtale.service.user.account.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/v1/modjams")
public class ModjamController {

@Autowired private ModjamService modjamService;
@Autowired private AccountService accountService;

@GetMapping
public ResponseEntity<List<Modjam>> getAllJams() {
return ResponseEntity.ok(modjamService.getAllJams());
}

@GetMapping("/user/me")
public ResponseEntity<List<Modjam>> getMyJams() {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.getUserHostedJams(user.getId()));
}

@GetMapping("/{slug}")
public ResponseEntity<Modjam> getJamBySlug(@PathVariable String slug) {
return ResponseEntity.ok(modjamService.getJamBySlug(slug));
}

@PostMapping
public ResponseEntity<Modjam> createJam(@RequestBody Modjam jam) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.createJam(jam, user.getId(), user.getUsername()));
}

@PutMapping("/{id}")
public ResponseEntity<Modjam> updateJam(@PathVariable String id, @RequestBody Modjam jam) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.updateJam(id, jam, user.getId()));
}

@PutMapping("/{id}/icon")
public ResponseEntity<?> updateIcon(@PathVariable String id, @RequestParam("file") MultipartFile file) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
try {
modjamService.updateIcon(id, file, user.getId());
return ResponseEntity.ok().build();
} catch (ResponseStatusException e) {
return ResponseEntity.status(e.getStatusCode()).body(e.getReason());
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

@PutMapping("/{id}/banner")
public ResponseEntity<?> updateBanner(@PathVariable String id, @RequestParam("file") MultipartFile file) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
try {
modjamService.updateBanner(id, file, user.getId());
return ResponseEntity.ok().build();
} catch (ResponseStatusException e) {
return ResponseEntity.status(e.getStatusCode()).body(e.getReason());
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

@DeleteMapping("/{id}")
public ResponseEntity<?> deleteJam(@PathVariable String id) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
try {
modjamService.deleteJam(id, user.getId());
return ResponseEntity.ok().build();
} catch (ResponseStatusException e) {
return ResponseEntity.status(e.getStatusCode()).body(e.getReason());
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

@GetMapping("/{jamId}/submissions")
public ResponseEntity<List<ModjamSubmission>> getSubmissions(@PathVariable String jamId) {
return ResponseEntity.ok(modjamService.getSubmissions(jamId));
}

@PostMapping("/{jamId}/participate")
public ResponseEntity<Modjam> participate(@PathVariable String jamId) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.participate(jamId, user.getId()));
}

@PostMapping("/{jamId}/leave")
public ResponseEntity<Modjam> leaveJam(@PathVariable String jamId) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.leaveJam(jamId, user.getId()));
}

@PostMapping("/{jamId}/submit")
public ResponseEntity<ModjamSubmission> submitProject(@PathVariable String jamId, @RequestBody Map<String, String> body) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.submitProject(jamId, body.get("projectId"), user.getId()));
}

@PostMapping("/{jamId}/vote")
public ResponseEntity<ModjamSubmission> vote(@PathVariable String jamId, @RequestBody Map<String, Object> body) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();

String submissionId = (String) body.get("submissionId");
String categoryId = (String) body.get("categoryId");
int score = (Integer) body.get("score");

return ResponseEntity.ok(modjamService.vote(jamId, submissionId, categoryId, score, user.getId()));
}

@PostMapping("/{jamId}/finalize")
public ResponseEntity<Modjam> finalizeJam(@PathVariable String jamId, @RequestBody List<Map<String, String>> winners) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.finalizeJam(jamId, user.getId(), winners));
}

// Judging Endpoints
@PostMapping("/{jamId}/judges/invite")
public ResponseEntity<Modjam> inviteJudge(@PathVariable String jamId, @RequestBody Map<String, String> body) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.inviteJudge(jamId, body.get("username"), user.getId()));
}

@PostMapping("/{jamId}/judges/accept")
public ResponseEntity<Modjam> acceptJudge(@PathVariable String jamId) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.acceptJudgeInvite(jamId, user.getId(), user.getUsername()));
}

@PostMapping("/{jamId}/judges/decline")
public ResponseEntity<Modjam> declineJudge(@PathVariable String jamId) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.declineJudgeInvite(jamId, user.getUsername()));
}

@DeleteMapping("/{jamId}/judges/{username}")
public ResponseEntity<Modjam> removeJudge(@PathVariable String jamId, @PathVariable String username) {
User user = accountService.getCurrentUser();
if (user == null) return ResponseEntity.status(401).build();
return ResponseEntity.ok(modjamService.removeJudge(jamId, username, user.getId()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public class ProjectDTO {
private Map<String, String> links;
private List<String> types;
private List<String> childProjectIds;
private List<String> modjamIds;
private boolean allowModpacks;
private boolean allowComments;
private boolean hmWikiEnabled;
Expand Down Expand Up @@ -106,6 +107,8 @@ public class ProjectDTO {
public void setTypes(List<String> types) { this.types = types; }
public List<String> getChildProjectIds() { return childProjectIds; }
public void setChildProjectIds(List<String> childProjectIds) { this.childProjectIds = childProjectIds; }
public List<String> getModjamIds() { return modjamIds; }
public void setModjamIds(List<String> modjamIds) { this.modjamIds = modjamIds; }
public boolean isAllowModpacks() { return allowModpacks; }
public void setAllowModpacks(boolean allowModpacks) { this.allowModpacks = allowModpacks; }
public boolean isAllowComments() { return allowComments; }
Expand Down
Loading
Loading