Skip to content

feat: Migrate WDC-related forms to new paths and add hackathon submission form#50

Merged
jlengstorf merged 6 commits intocodetv-dev:feat/wdc-hackathon-formsfrom
cdvillard:feat/wdc-form
Aug 9, 2025
Merged

feat: Migrate WDC-related forms to new paths and add hackathon submission form#50
jlengstorf merged 6 commits intocodetv-dev:feat/wdc-hackathon-formsfrom
cdvillard:feat/wdc-form

Conversation

@cdvillard
Copy link
Contributor

@cdvillard cdvillard commented Aug 8, 2025

image

This moves the filming submission form from /forms/web-dev-challenge to /forms/web-dev-challenge/filming, and adds a new route for the hackathon submission form at /forms/web-dev-challenge/hackathon. This will have effects on forms/discord and forms/submitted that need to be addressed before this goes live.

To-dos:

  • Create the form
  • Scaffold the actions

@netlify
Copy link

netlify bot commented Aug 8, 2025

👷 Deploy request for codetv-automations pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 0f081ec

@netlify
Copy link

netlify bot commented Aug 8, 2025

‼️ Deploy request for codetv rejected.

Name Link
🔨 Latest commit 5e9dd86

@netlify
Copy link

netlify bot commented Aug 8, 2025

Deploy Preview for codetv-links ready!

Name Link
🔨 Latest commit 0f081ec
🔍 Latest deploy log https://app.netlify.com/projects/codetv-links/deploys/6896df14846b4f0008e5a1f5
😎 Deploy Preview https://deploy-preview-50--codetv-links.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@cdvillard
Copy link
Contributor Author

Still working on the actions, but if/when you want to take this over, I'm happy to merge this into any other branch you'd like. Not sure how to tie this into a specific hackathon or what system you want to introduce for that, but I think a straightforward approach would be to say which hackathon the user is submitting to.

Copy link
Contributor

@jlengstorf jlengstorf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great! I'll take it from here and wire it up with the env vars to check that it's all working as expected, but this is SO helpful. Thank you!

<div class="instructions">
<h1>Web Dev Challenge Hackathon Submission</h1>
<p>
Thanks so much for taking part of the Web Dev Challenge Hackathon! This form will let you submit your hackathon project for [INSERT HACKATION HERE].
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: we'll need to set this up to correspond to the specific hackathon

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seeing that you have a calendar integration already, I wonder if you could set up date ranges for each hackathon with an indicator for the active hackathon?

There's also the possibility of turning this into its own component or system to allow for multiple hackathons at once.

id="githubRepo"
class="input"
placeholder="https://www.github.com/..."
pattern="https://www.github.com/.*"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Something to think about: do we want to allow gitlab, etc.? We probably should. Need to think a bit about whether that presents any issues. Probably not?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As long as it's a public link to the code's repository, I don't see the harm in allowing links to other repositories unless there are deeper integrations planned.

By submitting your email address to CodeTV as part of this promotion, you agree and consent that you may be contacted by CodeTV or one of CodeTV’s successors or assigns to notify you if you are selected as a winner, send you updates about future CodeTV promotions, and send you other CodeTV news. You may opt out of any emails from CodeTV by clicking the unsubscribe button at the bottom of any email received from CodeTV. Additionally, CodeTV will share your name and email address with the sponsor of this promotion. By submitting your name and email address to CodeTV as part of this promotion, you agree and consent to allow CodeTV to share your name and email address with the sponsor of this promotion. Once shared, CodeTV will have no control over how the sponsor communicates with you or what the sponsor does with your name and email address; you must communicate directly with the sponsor to manage any communications with the sponsor.
</p>
<p>
You further agree that, unless you affirmatively opt out by unchecking the box in the entry form, the sponsor of this promotion may display your App at its discretion as an example of how to use their tool or technology to build an app.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
You further agree that, unless you affirmatively opt out by unchecking the box in the entry form, the sponsor of this promotion may display your App at its discretion as an example of how to use their tool or technology to build an app.
You further agree that, unless you affirmatively opt out by unchecking the box in the entry form, CodeTV and the sponsor of this promotion may display your App at their sole discretion for marketing, educational, and promotional purposes.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

expanding this language to allow for using the apps in CodeTV pages, etc.

<button type="submit" class="button">Submit</button>

<input type="hidden" name="id" value={userDetails._id} />
<input type="hidden" name="username" value={user?.username} />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: add a hidden field identifying the specific hackathon

Comment on lines +244 to +254
.terms-conditions {
background: var(--bg);
border: 1px solid color-mix(in oklch, var(--text-muted) 25%, transparent);
border-radius: 3px;
display: block;
font-size: 0.875em;
margin-block-start: 16px;
max-block-size: 35dvb;
overflow-y: scroll;
padding: 8px;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably need to pull this out into a shared stylesheet (probably need to pull a LOT of CSS out into shared stylesheets lol)

or, maybe the terms stuff should be wrapped up in a component? might be the responsible choice

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I may have thought to make a PR to introduce a Storybook integration and start a CodeTV design system.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

definitely not a bad idea. I haven't looked at Storybook + Astro


.checkbox {
inline-size: 20px;
min-width: 20px;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was this causing issues on a certain browser? the inline-size should be handling this, I would think

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Chrome, at least, I found the checkbox for the sharing opt-out checkbox group was smaller than the TOC agreement checkbox group despite having the same markup. I think it came down to there being more text content in the former of the two checkbox groups. I tried things like min-inline-size and flex-grow but this worked best to keep it consistent.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, gotcha. thanks!


const res = await fetch(
`https://sheets.googleapis.com/v4/spreadsheets/${config.sheet.id}/values/${config.sheet.range}:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS`,
`https://sheets.googleapis.com/v4/spreadsheets/${config.sheets.filming.id}/values/${config.sheets.filming.range}:append?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS`,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO think through how this should work. spreadsheet per hackathon? (probably yes) or could be a single sheet that can be filtered by hackathon, or one spreadsheet with multiple tabs

whatever solution, probably need to adjust the config a bit here

tocAgreement: boolean;
doNotShare: boolean;
}) {
const accessToken = await getGoogleAccessToken();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO might want to move this into its own step in the workflow in case we do other Google things and want to share the token

* I've updated libs/inngest/src/integrations/google/config.ts, changing the `sheet`
* property into an object for `filming` and `hackathon`. The latter of course needs a new id,
* but the rest should work the same.
*/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep, all looking good. thank you!

githubRepo: z.string(),
deployedApp: z.string(),
tocAgreement: z.boolean(),
doNotShare: z.boolean(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: check if this one needs to be optional

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The doNotShare should be optional. I can make another PR to fix that later.

@jlengstorf jlengstorf changed the base branch from main to feat/wdc-hackathon-forms August 9, 2025 18:17
@jlengstorf jlengstorf marked this pull request as ready for review August 9, 2025 18:17
@jlengstorf jlengstorf merged commit 5851a40 into codetv-dev:feat/wdc-hackathon-forms Aug 9, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants