Skip to content

feat(newsletter): implement newsletter API integration with subscribe…#452

Merged
0xdevcollins merged 3 commits into
boundlessfi:mainfrom
ryzen-xp:feat/newsletter-api-integration
Mar 8, 2026
Merged

feat(newsletter): implement newsletter API integration with subscribe…#452
0xdevcollins merged 3 commits into
boundlessfi:mainfrom
ryzen-xp:feat/newsletter-api-integration

Conversation

@ryzen-xp

@ryzen-xp ryzen-xp commented Mar 7, 2026

Copy link
Copy Markdown
Contributor

Close #447

Screencast.From.2026-03-07.22-56-54.mp4

This is Pages that show responses

Screencast.From.2026-03-07.07-40-48.mp4

Summary by CodeRabbit

  • New Features

    • Newsletter subscription now supports topic selection (bounties, hackathons, grants, updates) and source tagging.
    • Added confirmation and unsubscribe-success pages.
    • Added preference management for newsletter tags.
  • Bug Fixes / Improvements

    • Added dedicated error pages for confirmation/unsubscribe failures with contextual messages.
    • Improved backend proxying for subscribe/unsubscribe/confirm/preferences and more consistent error handling and validation.

@vercel

vercel Bot commented Mar 7, 2026

Copy link
Copy Markdown

@ryzen-xp is attempting to deploy a commit to the Threadflow Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Mar 7, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds full newsletter flows: proxy API routes for subscribe/confirm/unsubscribe/preferences, new frontend pages for confirmation and unsubscribe success/error, updates the newsletter UI to support tags, and extends the client API/types for newsletter operations.

Changes

Cohort / File(s) Summary
Frontend pages (confirmation / unsubscribe)
app/(landing)/newsletter/confirmed/page.tsx, app/(landing)/newsletter/confirm/error/page.tsx, app/(landing)/newsletter/unsubscribed/page.tsx, app/(landing)/newsletter/unsubscribe/error/page.tsx
New static success pages and error pages that read reason query param; render localized messages and provide a "Back to home" link.
API proxy routes
app/api/newsletter/subscribe/route.ts, app/api/newsletter/confirm/[token]/route.ts, app/api/newsletter/unsubscribe/[token]/route.ts, app/api/newsletter/unsubscribe/route.ts, app/api/newsletter/preferences/route.ts
Subscribe route switched to backend /api/newsletter/subscribe. New proxy handlers for confirm/unsubscribe tokens (manual redirect handling to success or error pages), POST unsubscribe by email, and PATCH preferences; backend responses forwarded with status and JSON-safe parsing/fallbacks.
Newsletter UI & client API/types
components/overview/Newsletter.tsx, lib/api/waitlist.ts
Newsletter component adds multi-tag selection (bounties, hackathons, grants, updates), sends source: 'website' and tags. API layer adds NewsletterTag, NEWSLETTER_TAGS, new request/response types, standardized NewsletterApiError/codeMap/throwApiError, and functions: newsletterUnsubscribe, newsletterUpdatePreferences. Error handling unified and tag validation added.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Client as Newsletter Form
    participant FrontendAPI as Next.js API Route<br/>/api/newsletter/subscribe
    participant BackendAPI as Backend API<br/>/api/newsletter/subscribe

    User->>Client: Submit (email, name, tags, source)
    Client->>FrontendAPI: POST payload
    FrontendAPI->>BackendAPI: Forward POST

    alt Success (201)
        BackendAPI-->>FrontendAPI: 201 + message
        FrontendAPI-->>Client: 201 + message
        Client->>User: Show "Check inbox" confirmation
    else Already Subscribed (409)
        BackendAPI-->>FrontendAPI: 409
        FrontendAPI-->>Client: 409
        Client->>User: Show "Already subscribed" error
    else Rate Limited (429)
        BackendAPI-->>FrontendAPI: 429
        FrontendAPI-->>Client: 429
        Client->>User: Show "Rate limited" error
    else Invalid Tags (400)
        BackendAPI-->>FrontendAPI: 400
        FrontendAPI-->>Client: 400
        Client->>User: Show "Invalid tags" error
    end
Loading
sequenceDiagram
    participant User
    participant Email as Email Client
    participant ConfirmRoute as Next.js Route<br/>/api/newsletter/confirm/[token]
    participant BackendAPI as Backend API<br/>/api/newsletter/confirm/{token}
    participant Browser as Browser Redirect

    User->>Email: Click confirmation link
    Email->>ConfirmRoute: Request confirm token
    ConfirmRoute->>BackendAPI: GET /confirm/{token} (redirect: manual)

    alt Token Valid (302)
        BackendAPI-->>ConfirmRoute: 302 + Location
        ConfirmRoute-->>Browser: Redirect to Location or<br/>/newsletter/confirmed
    else Token Expired (400)
        BackendAPI-->>ConfirmRoute: 400
        ConfirmRoute-->>Browser: Redirect to /newsletter/confirm/error?reason=expired
    else Token Invalid (404)
        BackendAPI-->>ConfirmRoute: 404
        ConfirmRoute-->>Browser: Redirect to /newsletter/confirm/error?reason=invalid
    end
Loading
sequenceDiagram
    participant User
    participant Email as Email Client
    participant UnsubRoute as Next.js Route<br/>/api/newsletter/unsubscribe/[token]
    participant BackendAPI as Backend API<br/>/api/newsletter/unsubscribe/{token}
    participant Browser as Browser Redirect

    User->>Email: Click unsubscribe link
    Email->>UnsubRoute: Request unsubscribe token
    UnsubRoute->>BackendAPI: GET /unsubscribe/{token} (redirect: manual)

    alt Token Valid (302)
        BackendAPI-->>UnsubRoute: 302 + Location
        UnsubRoute-->>Browser: Redirect to Location or<br/>/newsletter/unsubscribed
    else Token Invalid (404)
        BackendAPI-->>UnsubRoute: 404
        UnsubRoute-->>Browser: Redirect to /newsletter/unsubscribe/error?reason=invalid
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • 0xdevcollins
  • Benjtalkshow

Poem

🐰 A Rabbit's Newsletter Note
Hops through routes and tiny tags,
Tokens, links, and gentle nags.
Inbox waits — a chirp, a cheer,
Confirmed and freed from every fear.
Homeward bound, I hop with glee — subscribe and be with me! 🥕📬

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive Title is truncated and incomplete; appears to be cut off mid-sentence (ends with 'subscribe…'), making it unclear what the full intended change summary is. Provide the complete PR title. Ensure it concisely summarizes the main change (e.g., 'feat(newsletter): implement full newsletter API integration').
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed All required functionality from issue #447 has been implemented: API routes for subscribe/confirm/unsubscribe/preferences, client-side helpers with types and error handling, UI pages for confirmation/unsubscribe flows, and tag support in the subscribe form.
Out of Scope Changes check ✅ Passed All changes directly support the newsletter API integration objectives; no unrelated modifications detected in the changeset.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ryzen-xp

ryzen-xp commented Mar 7, 2026

Copy link
Copy Markdown
Contributor Author

Hello @0xdevcollins , API not working can you plz fix that it using guard

@0xdevcollins

Copy link
Copy Markdown
Collaborator

Hello @0xdevcollins , API not working can you plz fix that it using guard
Hola @ryzen-xp,
It has been fixed

feat(newsletter): Imp some extra things
@ryzen-xp
ryzen-xp marked this pull request as ready for review March 7, 2026 17:27
@ryzen-xp
ryzen-xp requested a review from 0xdevcollins as a code owner March 7, 2026 17:27

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
app/api/newsletter/subscribe/route.ts (1)

3-6: ⚠️ Potential issue | 🟡 Minor

Separate JSON parsing errors from backend errors; malformed JSON should return 400, not 500.

request.json() throws on invalid payloads, and the current catch block maps that client-side error to HTTP 500. This conflates client validation failures with internal server errors. Extract JSON parsing into its own try-catch and return 400 for parse failures.

🛠️ Suggested fix
 export async function POST(request: NextRequest) {
+  let body: unknown;
+
   try {
-    const body = await request.json();
+    body = await request.json();
+  } catch {
+    return NextResponse.json(
+      { message: 'Invalid JSON body', status: 400 },
+      { status: 400 }
+    );
+  }
 
+  try {
     let backendUrl =
       process.env.NEXT_PUBLIC_API_URL || 'https://staging-api.boundlessfi.xyz';
     backendUrl = backendUrl.replace(/\/$/, '').replace(/\/api$/i, '');
 
     const response = await fetch(`${backendUrl}/api/newsletter/subscribe`, {
       method: 'POST',
       headers: {
         'Content-Type': 'application/json',
         ...(request.headers.get('user-agent') && {
           'User-Agent': request.headers.get('user-agent')!,
         }),
       },
       body: JSON.stringify(body),
     });
 
     const data = await response.json().catch(() => ({}));
     return NextResponse.json(data, { status: response.status });
   } catch {
     return NextResponse.json(
       { message: 'Internal server error', status: 500 },
       { status: 500 }
     );
   }
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/api/newsletter/subscribe/route.ts` around lines 3 - 6, The POST handler
currently treats any error from request.json() as an internal server error;
isolate JSON parsing by wrapping const body = await request.json() in its own
try-catch inside the POST function and, on parse failure, return a 400 response
(Bad Request) with an appropriate message; keep the existing outer try-catch for
backend/database errors so they still return 500, and reference the POST
function and the request.json() call when making the change.
🧹 Nitpick comments (7)
components/overview/Newsletter.tsx (1)

28-32: Render the topic checkboxes from NEWSLETTER_TAGS and extract a named toggle handler.

The allowed tags are already centralized in lib/api/waitlist.ts, but this component redefines the same literals locally. That creates an easy drift point, and the inline onChange makes the toggle logic harder to reuse or test.

Suggested refactor
 import {
+  NEWSLETTER_TAGS,
   newsletterSubscribe,
   type NewsletterApiError,
   type NewsletterTag,
 } from '@/lib/api/waitlist';
@@
+  const handleTagToggle = (tag: NewsletterTag): void => {
+    setSelectedTags(previous =>
+      previous.includes(tag)
+        ? previous.filter(currentTag => currentTag !== tag)
+        : [...previous, tag]
+    );
+  };
+
@@
-                      {(
-                        [
-                          'bounties',
-                          'hackathons',
-                          'grants',
-                          'updates',
-                        ] as NewsletterTag[]
-                      ).map(tag => (
+                      {NEWSLETTER_TAGS.map(tag => (
                         <label
                           key={tag}
                           className='flex cursor-pointer items-center gap-1.5 text-sm text-[`#D9D9D9`]'
                         >
                           <input
                             type='checkbox'
                             className='accent-[`#A7F950`]'
                             checked={selectedTags.includes(tag)}
-                            onChange={() =>
-                              setSelectedTags(p =>
-                                p.includes(tag)
-                                  ? p.filter(t => t !== tag)
-                                  : [...p, tag]
-                              )
-                            }
+                            onChange={() => handleTagToggle(tag)}
                           />

As per coding guidelines, "Event handlers should start with 'handle' prefix (e.g., handleClick, handleSubmit)".

Also applies to: 203-230

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/overview/Newsletter.tsx` around lines 28 - 32, The component
Newsletter.tsx currently redefines tag literals and uses inline onChange
handlers; replace the local literals by importing and mapping NEWSLETTER_TAGS
from lib/api/waitlist.ts to render the topic checkboxes, and extract the inline
toggle logic into a named handler (e.g., handleToggleTag) that accepts the tag
id and toggles selection in state; update checkbox props to call handleToggleTag
instead of inline functions and ensure the handler name follows the "handle"
prefix convention for testability and reuse.
app/(landing)/newsletter/unsubscribe/error/page.tsx (1)

6-31: Use clearer names and the repo’s typed const-component style.

This has the same readability issue as the sibling confirm error page: msgs, p, Content, and Page are pretty generic, and the component declarations don’t follow the preferred const ... = (): JSX.Element => pattern.

As per coding guidelines, "Use descriptive variable, function, and component names in JavaScript/TypeScript" and "Prefer const arrow functions with explicit type annotations over function declarations".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/`(landing)/newsletter/unsubscribe/error/page.tsx around lines 6 - 31,
Rename generic identifiers to descriptive names and convert function
declarations to the repo's typed const-arrow-component style: rename msgs to
unsubscribeErrorMessages, p to searchParams (or unsubscribeSearchParams) and
change Content to UnsubscribeErrorContent and Page to UnsubscribeErrorPage;
implement both components as const UnsubscribeErrorContent = (): JSX.Element =>
and const UnsubscribeErrorPage = (): JSX.Element =>, use useSearchParams()
assigned to the new searchParams name, and update any references (e.g., msgs ->
unsubscribeErrorMessages, p.get -> searchParams.get) so the mapping and exports
remain correct.
lib/api/waitlist.ts (1)

10-123: Move the newsletter client into its own module.

Adding the new newsletter types and helpers to lib/api/waitlist.ts keeps “waitlist” as the import path for newsletter code just as this PR is replacing that flow. A dedicated lib/api/newsletter.ts would better match the new surface and the objective to minimize waitlist references.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@lib/api/waitlist.ts` around lines 10 - 123, The newsletter types and
functions (NewsletterTag, NEWSLETTER_TAGS, NewsletterSubscribeRequest,
NewsletterUnsubscribeRequest, NewsletterPreferencesRequest, NewsletterApiError,
throwApiError, newsletterSubscribe, newsletterUnsubscribe,
newsletterUpdatePreferences) should be moved out of lib/api/waitlist.ts into a
new module lib/api/newsletter.ts: create the new file, copy over those exports
exactly, remove them from waitlist.ts, and update all import sites that
previously imported newsletter symbols from the waitlist module to instead
import from the new newsletter module so the waitlist path no longer contains
newsletter code.
app/(landing)/newsletter/confirm/error/page.tsx (1)

6-32: Rename the opaque locals and use typed const components.

msgs, p, Content, and Page make this page harder to scan than it needs to be, and both components are declared with function instead of the repo’s preferred typed const-arrow style. Names like confirmationMessages, searchParams, and ConfirmationErrorPage would read much cleaner here.

As per coding guidelines, "Use descriptive variable, function, and component names in JavaScript/TypeScript" and "Prefer const arrow functions with explicit type annotations over function declarations".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/`(landing)/newsletter/confirm/error/page.tsx around lines 6 - 32, Rename
ambiguous locals and convert the function declarations to typed const arrow
components: change msgs to confirmationMessages and p to searchParams (update
the lookup expression using searchParams.get('reason')), rename Content to a
descriptive component name like ConfirmationErrorContent and Page to
ConfirmationErrorPage, and convert both from function declarations to const
arrow components with explicit types (e.g., const ConfirmationErrorContent:
React.FC = () => { ... } and const ConfirmationErrorPage: React.FC = () => { ...
}), keeping the same JSX and behavior but updating all references to the new
identifiers.
app/api/newsletter/preferences/route.ts (1)

3-11: Use the shared backend URL normalization pattern here.

This route assumes NEXT_PUBLIC_API_URL is always set and never ends with /api, so a small config drift turns this into undefined/api/... or .../api/api/.... Reusing the normalized helper pattern already used under app/api/ would make the newsletter proxies much less brittle.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/api/newsletter/preferences/route.ts` around lines 3 - 11, Replace the
direct use of process.env in the PATCH handler with the shared URL-normalization
helper used by other routes: import the helper (e.g., normalizeBackendUrl or
getBackendUrl) into this module, compute backendUrl =
normalizeBackendUrl(process.env.NEXT_PUBLIC_API_URL) at the top, and use
`${backendUrl}/api/newsletter/preferences` inside the PATCH function instead of
the raw backendUrl constant; also ensure the helper's return is validated (throw
or return a 500/appropriate response if it yields undefined) so PATCH does not
build an invalid URL.
app/(landing)/newsletter/unsubscribed/page.tsx (1)

1-14: Use the repo’s typed const component pattern here.

This is fine functionally, but it diverges from the project’s TSX convention. Converting the default function export to a named const with an explicit return type keeps these new page components consistent.

♻️ Suggested refactor
+import type { JSX } from 'react';
 import Link from 'next/link';
-export default function NewsletterUnsubscribedPage() {
-  return (
+const NewsletterUnsubscribedPage = (): JSX.Element => (
     <main className='flex min-h-screen flex-col items-center justify-center gap-4 text-white'>
       <h1 className='text-3xl font-semibold'>You&apos;ve been unsubscribed</h1>
       <p className='text-[`#D9D9D9`]'>
         You won&apos;t receive any more emails from us.
       </p>
       <Link href='/' className='text-[`#A7F950`] underline'>
         Back to home
       </Link>
     </main>
-  );
-}
+);
+
+export default NewsletterUnsubscribedPage;
As per coding guidelines, `**/*.{js,jsx,ts,tsx}` should “Prefer const arrow functions with explicit type annotations over function declarations”.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/`(landing)/newsletter/unsubscribed/page.tsx around lines 1 - 14, Convert
the default function declaration NewsletterUnsubscribedPage into a named const
arrow component with an explicit return type; specifically, change the
declaration to a const named NewsletterUnsubscribedPage typed as returning
React.JSX.Element (or JSX.Element) and keep the same JSX body, then export
default NewsletterUnsubscribedPage so the component follows the repo's typed
const component pattern and TSX convention.
app/(landing)/newsletter/confirmed/page.tsx (1)

1-14: Use the repo’s typed const component pattern here as well.

Same note as the unsubscribed page: this works, but it doesn’t follow the project’s preferred TSX component style.

♻️ Suggested refactor
+import type { JSX } from 'react';
 import Link from 'next/link';
-export default function NewsletterConfirmedPage() {
-  return (
+const NewsletterConfirmedPage = (): JSX.Element => (
     <main className='flex min-h-screen flex-col items-center justify-center gap-4 text-white'>
       <h1 className='text-3xl font-semibold'>You&apos;re subscribed! 🎉</h1>
       <p className='text-[`#D9D9D9`]'>
         Your subscription has been confirmed. Welcome aboard!
       </p>
       <Link href='/' className='text-[`#A7F950`] underline'>
         Back to home
       </Link>
     </main>
-  );
-}
+);
+
+export default NewsletterConfirmedPage;
As per coding guidelines, `**/*.{js,jsx,ts,tsx}` should “Prefer const arrow functions with explicit type annotations over function declarations”.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/`(landing)/newsletter/confirmed/page.tsx around lines 1 - 14, Convert the
default exported function declaration NewsletterConfirmedPage into the repo’s
typed const arrow component pattern: replace "export default function
NewsletterConfirmedPage() { ... }" with a const arrow like "const
NewsletterConfirmedPage: React.FC = () => { ... }" and then "export default
NewsletterConfirmedPage"; add an import for React if your linter/TS config
requires it so the React.FC type is available; keep the JSX and classNames
unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@app/api/newsletter/confirm/`[token]/route.ts:
- Around line 14-17: The current 302 branch in route.ts forwards the backend
Location header via NextResponse.redirect, which can send users to the backend
host; instead always redirect successful confirmations to the frontend success
page. Change the code inside the if (res.status === 302) block so
NextResponse.redirect uses the frontend success URL (e.g.,
`${appUrl}/newsletter/confirmed`) unconditionally (remove/resist using
res.headers.get('Location')), keeping the rest of the response logic unchanged.

In `@app/api/newsletter/unsubscribe/`[token]/route.ts:
- Around line 14-17: The redirect currently proxies the backend Location header
when res.status === 302; change the logic in the unsubscribe route handler (the
block that checks res.status === 302 and calls NextResponse.redirect) to always
redirect to the frontend success page using appUrl + '/newsletter/unsubscribed'
instead of using res.headers.get('Location'), so successful unsubscribes
deterministically land on the frontend outcome page.

In `@components/overview/Newsletter.tsx`:
- Around line 87-109: The submit handler allows re-entrant requests; add an
early guard in the onSubmit function to return immediately if isSubmitting is
true, and ensure the submit control is disabled while isSubmitting is true
(update the Submit button/element to use the isSubmitting state and disable
clicks/keyboard submits); keep using setIsSubmitting(true/false) around the
newsletterSubscribe call and preserve existing error handling in onSubmit,
referencing the onSubmit function, isSubmitting/setIsSubmitting state, and the
newsletterSubscribe call so duplicate submissions are prevented.

In `@lib/api/waitlist.ts`:
- Around line 46-58: The current mapping in codeMap and throwApiError
incorrectly classifies every HTTP 400 as 'INVALID_TAGS', causing
subscribe/unsubscribe/preferences to show wrong error text; update throwApiError
(used by subscribe, unsubscribe, preferences) to not assume 400 =>
'INVALID_TAGS' by either (a) changing the 400 entry in codeMap to a generic
'BAD_REQUEST' or 'VALIDATION_ERROR' and (b) allowing callers to pass an explicit
error code in the body (e.g., body.code) that throwApiError will prefer when
present; update throwApiError to use body.code ?? codeMap[status] ?? 'UNKNOWN'
and keep the thrown type as NewsletterApiError so
components/overview/Newsletter.tsx receives the correct, endpoint-specific code.

---

Outside diff comments:
In `@app/api/newsletter/subscribe/route.ts`:
- Around line 3-6: The POST handler currently treats any error from
request.json() as an internal server error; isolate JSON parsing by wrapping
const body = await request.json() in its own try-catch inside the POST function
and, on parse failure, return a 400 response (Bad Request) with an appropriate
message; keep the existing outer try-catch for backend/database errors so they
still return 500, and reference the POST function and the request.json() call
when making the change.

---

Nitpick comments:
In `@app/`(landing)/newsletter/confirm/error/page.tsx:
- Around line 6-32: Rename ambiguous locals and convert the function
declarations to typed const arrow components: change msgs to
confirmationMessages and p to searchParams (update the lookup expression using
searchParams.get('reason')), rename Content to a descriptive component name like
ConfirmationErrorContent and Page to ConfirmationErrorPage, and convert both
from function declarations to const arrow components with explicit types (e.g.,
const ConfirmationErrorContent: React.FC = () => { ... } and const
ConfirmationErrorPage: React.FC = () => { ... }), keeping the same JSX and
behavior but updating all references to the new identifiers.

In `@app/`(landing)/newsletter/confirmed/page.tsx:
- Around line 1-14: Convert the default exported function declaration
NewsletterConfirmedPage into the repo’s typed const arrow component pattern:
replace "export default function NewsletterConfirmedPage() { ... }" with a const
arrow like "const NewsletterConfirmedPage: React.FC = () => { ... }" and then
"export default NewsletterConfirmedPage"; add an import for React if your
linter/TS config requires it so the React.FC type is available; keep the JSX and
classNames unchanged.

In `@app/`(landing)/newsletter/unsubscribe/error/page.tsx:
- Around line 6-31: Rename generic identifiers to descriptive names and convert
function declarations to the repo's typed const-arrow-component style: rename
msgs to unsubscribeErrorMessages, p to searchParams (or unsubscribeSearchParams)
and change Content to UnsubscribeErrorContent and Page to UnsubscribeErrorPage;
implement both components as const UnsubscribeErrorContent = (): JSX.Element =>
and const UnsubscribeErrorPage = (): JSX.Element =>, use useSearchParams()
assigned to the new searchParams name, and update any references (e.g., msgs ->
unsubscribeErrorMessages, p.get -> searchParams.get) so the mapping and exports
remain correct.

In `@app/`(landing)/newsletter/unsubscribed/page.tsx:
- Around line 1-14: Convert the default function declaration
NewsletterUnsubscribedPage into a named const arrow component with an explicit
return type; specifically, change the declaration to a const named
NewsletterUnsubscribedPage typed as returning React.JSX.Element (or JSX.Element)
and keep the same JSX body, then export default NewsletterUnsubscribedPage so
the component follows the repo's typed const component pattern and TSX
convention.

In `@app/api/newsletter/preferences/route.ts`:
- Around line 3-11: Replace the direct use of process.env in the PATCH handler
with the shared URL-normalization helper used by other routes: import the helper
(e.g., normalizeBackendUrl or getBackendUrl) into this module, compute
backendUrl = normalizeBackendUrl(process.env.NEXT_PUBLIC_API_URL) at the top,
and use `${backendUrl}/api/newsletter/preferences` inside the PATCH function
instead of the raw backendUrl constant; also ensure the helper's return is
validated (throw or return a 500/appropriate response if it yields undefined) so
PATCH does not build an invalid URL.

In `@components/overview/Newsletter.tsx`:
- Around line 28-32: The component Newsletter.tsx currently redefines tag
literals and uses inline onChange handlers; replace the local literals by
importing and mapping NEWSLETTER_TAGS from lib/api/waitlist.ts to render the
topic checkboxes, and extract the inline toggle logic into a named handler
(e.g., handleToggleTag) that accepts the tag id and toggles selection in state;
update checkbox props to call handleToggleTag instead of inline functions and
ensure the handler name follows the "handle" prefix convention for testability
and reuse.

In `@lib/api/waitlist.ts`:
- Around line 10-123: The newsletter types and functions (NewsletterTag,
NEWSLETTER_TAGS, NewsletterSubscribeRequest, NewsletterUnsubscribeRequest,
NewsletterPreferencesRequest, NewsletterApiError, throwApiError,
newsletterSubscribe, newsletterUnsubscribe, newsletterUpdatePreferences) should
be moved out of lib/api/waitlist.ts into a new module lib/api/newsletter.ts:
create the new file, copy over those exports exactly, remove them from
waitlist.ts, and update all import sites that previously imported newsletter
symbols from the waitlist module to instead import from the new newsletter
module so the waitlist path no longer contains newsletter code.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 28accb7d-f8c8-4582-8b03-8bd0fe80a323

📥 Commits

Reviewing files that changed from the base of the PR and between 6c0f9d2 and bb0c965.

📒 Files selected for processing (11)
  • app/(landing)/newsletter/confirm/error/page.tsx
  • app/(landing)/newsletter/confirmed/page.tsx
  • app/(landing)/newsletter/unsubscribe/error/page.tsx
  • app/(landing)/newsletter/unsubscribed/page.tsx
  • app/api/newsletter/confirm/[token]/route.ts
  • app/api/newsletter/preferences/route.ts
  • app/api/newsletter/subscribe/route.ts
  • app/api/newsletter/unsubscribe/[token]/route.ts
  • app/api/newsletter/unsubscribe/route.ts
  • components/overview/Newsletter.tsx
  • lib/api/waitlist.ts

Comment thread app/api/newsletter/confirm/[token]/route.ts Outdated
Comment thread app/api/newsletter/unsubscribe/[token]/route.ts Outdated
Comment thread components/overview/Newsletter.tsx
Comment thread lib/api/waitlist.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
app/api/newsletter/preferences/route.ts (1)

8-8: Apply consistent URL normalization across all newsletter routes.

The preferences route normalizes NEXT_PUBLIC_API_URL by removing trailing slashes and the /api suffix, while subscribe duplicates this normalization inline, but unsubscribe, unsubscribe/[token], and confirm/[token] use the raw URL directly. Extract the normalization function to a shared utility and apply it consistently across all newsletter routes to avoid future maintenance issues and ensure predictable behavior if the env var format changes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/api/newsletter/preferences/route.ts` at line 8, Extract the URL
normalization logic into a shared utility function (e.g., normalizeBackendUrl)
and replace any inline or raw usage of process.env.NEXT_PUBLIC_API_URL in all
newsletter route handlers (preferences, subscribe, unsubscribe,
unsubscribe/[token], confirm/[token]) so each computes backendUrl =
normalizeBackendUrl(process.env.NEXT_PUBLIC_API_URL) and imports the new
utility; ensure the utility removes trailing slashes and an optional "/api"
suffix and update each route to import and use normalizeBackendUrl instead of
duplicating logic or using the raw env value.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@app/api/newsletter/preferences/route.ts`:
- Around line 10-27: The PATCH handler currently calls req.json() and fetch(...)
without catching errors; wrap the request body parsing and the backend fetch in
separate try/catch blocks inside the exported PATCH function so malformed JSON
returns a clear 400 response (use NextResponse.json with a descriptive message)
and network/fetch errors return a 502/503 with an explanatory message; after a
successful fetch, safely parse the backend response (handle res.json() errors)
and preserve res.status when returning via NextResponse.json; reference the
PATCH function, req.json(), fetch(`${backendUrl}/api/newsletter/preferences`),
and the final NextResponse.json to locate where to add these try/catch handlers
and adjusted status/messages.

In `@app/api/newsletter/unsubscribe/`[token]/route.ts:
- Around line 3-4: The code currently reads NEXT_PUBLIC_API_URL into backendUrl
and falls back appUrl to '' which leads to relative redirects and uncaught fetch
errors; update the unsubscribe route to fail closed: validate that backendUrl
(NEXT_PUBLIC_API_URL) is present before using fetch and, if missing, construct
absolute URLs using the incoming request origin (_req.nextUrl.origin) as the
base for new URL('/...', _req.nextUrl.origin) when calling
NextResponse.redirect; also wrap the fetch call in try/catch to handle
network/backend failures and on error redirect to the error page using an
absolute URL built from _req.nextUrl.origin (or return a safe error response) so
redirects never use relative strings and fetch failures are handled.

---

Nitpick comments:
In `@app/api/newsletter/preferences/route.ts`:
- Line 8: Extract the URL normalization logic into a shared utility function
(e.g., normalizeBackendUrl) and replace any inline or raw usage of
process.env.NEXT_PUBLIC_API_URL in all newsletter route handlers (preferences,
subscribe, unsubscribe, unsubscribe/[token], confirm/[token]) so each computes
backendUrl = normalizeBackendUrl(process.env.NEXT_PUBLIC_API_URL) and imports
the new utility; ensure the utility removes trailing slashes and an optional
"/api" suffix and update each route to import and use normalizeBackendUrl
instead of duplicating logic or using the raw env value.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: daa75c53-3322-4ef6-8bce-8abcf34dffea

📥 Commits

Reviewing files that changed from the base of the PR and between bb0c965 and f6bae2b.

📒 Files selected for processing (3)
  • app/api/newsletter/confirm/[token]/route.ts
  • app/api/newsletter/preferences/route.ts
  • app/api/newsletter/unsubscribe/[token]/route.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/api/newsletter/confirm/[token]/route.ts

Comment on lines +10 to +27
export async function PATCH(req: NextRequest) {
const body = await req.json();

if (!backendUrl) {
return NextResponse.json(
{ message: 'Server configuration error: NEXT_PUBLIC_API_URL is not set' },
{ status: 500 }
);
}

const res = await fetch(`${backendUrl}/api/newsletter/preferences`, {
method: 'PATCH',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
});
return NextResponse.json(await res.json().catch(() => ({})), {
status: res.status,
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Add error handling for JSON parsing and network failures.

Two failure scenarios are not gracefully handled:

  1. Line 11: req.json() throws if the request body is malformed JSON, resulting in an unhandled exception.
  2. Lines 20-24: fetch() throws on network errors (e.g., backend unreachable), also resulting in an unhandled exception.

Both cases produce opaque 500 errors without meaningful messages.

🛠️ Proposed fix with error handling
 export async function PATCH(req: NextRequest) {
-  const body = await req.json();
+  let body;
+  try {
+    body = await req.json();
+  } catch {
+    return NextResponse.json(
+      { message: 'Invalid JSON body' },
+      { status: 400 }
+    );
+  }
 
   if (!backendUrl) {
     return NextResponse.json(
       { message: 'Server configuration error: NEXT_PUBLIC_API_URL is not set' },
       { status: 500 }
     );
   }
 
-  const res = await fetch(`${backendUrl}/api/newsletter/preferences`, {
-    method: 'PATCH',
-    headers: { 'Content-Type': 'application/json' },
-    body: JSON.stringify(body),
-  });
-  return NextResponse.json(await res.json().catch(() => ({})), {
-    status: res.status,
-  });
+  try {
+    const res = await fetch(`${backendUrl}/api/newsletter/preferences`, {
+      method: 'PATCH',
+      headers: { 'Content-Type': 'application/json' },
+      body: JSON.stringify(body),
+    });
+    return NextResponse.json(await res.json().catch(() => ({})), {
+      status: res.status,
+    });
+  } catch {
+    return NextResponse.json(
+      { message: 'Failed to connect to backend service' },
+      { status: 502 }
+    );
+  }
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/api/newsletter/preferences/route.ts` around lines 10 - 27, The PATCH
handler currently calls req.json() and fetch(...) without catching errors; wrap
the request body parsing and the backend fetch in separate try/catch blocks
inside the exported PATCH function so malformed JSON returns a clear 400
response (use NextResponse.json with a descriptive message) and network/fetch
errors return a 502/503 with an explanatory message; after a successful fetch,
safely parse the backend response (handle res.json() errors) and preserve
res.status when returning via NextResponse.json; reference the PATCH function,
req.json(), fetch(`${backendUrl}/api/newsletter/preferences`), and the final
NextResponse.json to locate where to add these try/catch handlers and adjusted
status/messages.

Comment on lines +3 to +4
const backendUrl = process.env.NEXT_PUBLIC_API_URL;
const appUrl = process.env.NEXT_PUBLIC_APP_URL ?? '';

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Official Next.js docs: in App Router route handlers, should NextResponse.redirect()be given an absolute URL (for examplenew URL('/path', request.url)) rather than a relative string path?

💡 Result:

Yes—per the official Next.js docs, in App Router Route Handlers you should pass NextResponse.redirect() an absolute URL, typically by constructing one from the incoming request, e.g.:

return NextResponse.redirect(new URL('/path', request.url))

The NextResponse API reference shows redirect() producing a redirect to a URL object and uses new URL('/new', request.url) in its example [1]. Next.js also documents that passing a relative (or invalid) URL to NextResponse.redirect() is not supported and you “must always pass absolute URL” (either by cloning request.nextUrl or using new URL(..., request.url)) [2].


🏁 Script executed:

cat -n app/api/newsletter/unsubscribe/[token]/route.ts

Repository: boundlessfi/boundless

Length of output: 821


Fail closed when env config is missing or the backend is down.

If NEXT_PUBLIC_API_URL is unset, fetch() will throw here, and the '' fallback for appUrl produces relative redirect targets. Next.js App Router requires absolute URLs for NextResponse.redirect()—relative string paths are not supported and will fail. Additionally, uncaught fetch errors will return 500 instead of redirecting to the error page. Guard backendUrl, use _req.nextUrl.origin as the base, and catch fetch failures.

Suggested fix
 const backendUrl = process.env.NEXT_PUBLIC_API_URL;
-const appUrl = process.env.NEXT_PUBLIC_APP_URL ?? '';
+const appUrl = process.env.NEXT_PUBLIC_APP_URL;

 export async function GET(
   _req: NextRequest,
   { params }: { params: Promise<{ token: string }> }
 ) {
+  const origin = appUrl ?? _req.nextUrl.origin;
+  if (!backendUrl) {
+    return NextResponse.redirect(
+      new URL('/newsletter/unsubscribe/error', origin)
+    );
+  }
+
   const { token } = await params;
-  const res = await fetch(`${backendUrl}/api/newsletter/unsubscribe/${token}`, {
-    redirect: 'manual',
-  });
+  let res: Response;
+  try {
+    res = await fetch(`${backendUrl}/api/newsletter/unsubscribe/${token}`, {
+      redirect: 'manual',
+    });
+  } catch {
+    return NextResponse.redirect(
+      new URL('/newsletter/unsubscribe/error', origin)
+    );
+  }
+
   if (res.status === 302) {
-    return NextResponse.redirect(`${appUrl}/newsletter/unsubscribed`);
+    return NextResponse.redirect(new URL('/newsletter/unsubscribed', origin));
   }
   return NextResponse.redirect(
-    `${appUrl}/newsletter/unsubscribe/error?reason=invalid`
+    new URL('/newsletter/unsubscribe/error?reason=invalid', origin)
   );
 }

Per Next.js documentation, NextResponse.redirect() requires absolute URLs constructed via new URL('/path', request.url). Also applies to lines 11–18.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@app/api/newsletter/unsubscribe/`[token]/route.ts around lines 3 - 4, The code
currently reads NEXT_PUBLIC_API_URL into backendUrl and falls back appUrl to ''
which leads to relative redirects and uncaught fetch errors; update the
unsubscribe route to fail closed: validate that backendUrl (NEXT_PUBLIC_API_URL)
is present before using fetch and, if missing, construct absolute URLs using the
incoming request origin (_req.nextUrl.origin) as the base for new URL('/...',
_req.nextUrl.origin) when calling NextResponse.redirect; also wrap the fetch
call in try/catch to handle network/backend failures and on error redirect to
the error page using an absolute URL built from _req.nextUrl.origin (or return a
safe error response) so redirects never use relative strings and fetch failures
are handled.

@0xdevcollins
0xdevcollins merged commit 4ae1761 into boundlessfi:main Mar 8, 2026
4 of 8 checks passed
0xdevcollins added a commit that referenced this pull request Mar 8, 2026
* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
0xdevcollins added a commit that referenced this pull request Mar 8, 2026
* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* Create hackathon-detail-design.md (#466)

* Production (#472)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>
Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Benjtalkshow added a commit that referenced this pull request Mar 9, 2026
* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

* merge David's Pr (#473)

* Create hackathon-detail-design.md (#466)

* Production (#472)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behav…
Benjtalkshow added a commit that referenced this pull request Mar 10, 2026
* Create hackathon-detail-design.md (#466)

* Production (#472)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

* Production (#474)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and p…
Benjtalkshow added a commit that referenced this pull request Mar 10, 2026
* Create hackathon-detail-design.md (#466)

* Production (#472)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

* Production (#474)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa …
Benjtalkshow added a commit that referenced this pull request Mar 11, 2026
* Create hackathon-detail-design.md (#466)

* Production (#472)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

* Production (#474)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for em…
Benjtalkshow added a commit that referenced this pull request Mar 11, 2026
* Create hackathon-detail-design.md (#466)

* Production (#472)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Merge fixes to production (#467)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

* UI fixes (#458)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* Blog fix (#464)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* Blog fix (#465)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* fix: fix auto refresh ib submission page

* fix: hackathon submission fixes

* fix: fix coderabbit corrections

* fix: fix coderabbit corrections

* chore: write boundless on x challenge blog

* fix: remove blog

* chore: add blog content

* fix: fix broken blog image and notification redirect

* merge fork main to boundlessfi main (#468)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge to main (#469)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge (#470)

* fix: improve timeline input , ui improvement and fixes for participation tab

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* merge fork to main (#471)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>

* merg to prod (#461)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

* feat(newsletter): implement newsletter API integration with subscribe… (#452)

* feat(newsletter): implement newsletter API integration with subscribe, confirm, unsubscribe, and preferences

* Draft
feat(newsletter): Imp some extra things

* feat(newsletter): add API routes, client helpers, and UI pages

* Docs: add comprehensive bug test report for organization features (#456)

* Test: add comprehensive bug test report for organization features

* docs: update bug test report for organization features and address critical issues

* fix: update branch name in bug test report and upgrade dompurify to version 3.3.2

* fix: update the milestone submission flow for campaign

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>

* Create hackathon-detail-design.md (#466)

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>
Co-authored-by: Sandeep chauhan <92181599+ryzen-xp@users.noreply.github.com>
Co-authored-by: Ekene Ngwudike <94962750+Ekene001@users.noreply.github.com>
Co-authored-by: David Emulo <161654052+Davidemulo@users.noreply.github.com>

* Production (#474)

* merg to prod (#450)

* fix: improve timeline input , ui improvement and fixes for participation tab (#442)

* feat: integrate Sentry for error tracking and reporting

- Added Sentry configuration for both server and edge environments to capture errors and performance metrics.
- Updated error handling across various components to report errors to Sentry, enhancing monitoring capabilities.
- Introduced a new MessagesProvider for managing in-app messaging and notifications.
- Refactored the .env.example file to include Sentry DSN and related configurations for production environments.
- Removed the deprecated connect-wallet component to streamline the codebase.

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* UI fixes (#445)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: handle potential null values in notification data

- Updated notification handling to safely access properties using optional chaining.
- Ensured that the notification data is checked for null values before accessing its properties in various components, improving robustness and preventing runtime errors.

* feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) (#443)

* feat: enforce submission requirements (requireGithub, requireDemoVideo, requireOtherLinks)

- Add dynamic schema validation based on currentHackathon flags
- Enforce requireDemoVideo at schema level with Zod refine
- Add Step 2 validation for requireGithub, requireDemoVideo, requireOtherLinks
- Add final validation pass in onSubmit before API call
- Add dynamic asterisk (*) to required field labels
- Add legend and helper text for required fields
- Wrap links section in FormField for proper error display

* UI fixes (#444)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* feat: prevent removal of required links and style required asterisks in red

Made-with: Cursor

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>

* feat(submissions): enforce team size limits (teamMin, teamMax) (#446)

* feat(submissions): enforce team size limits (teamMin, teamMax)

- Add validation in handleNext (Step 0) to block progression when team
  size is below teamMin, showing specific message with members needed
- Guard handleAddInvitee function to prevent adding members when team
  reaches teamMax capacity
- Add capacity indicator Badge showing "X / Y members" with visual
  states: orange when below minimum, yellow when at capacity
- Disable "Add Member" button and inputs when team is full
- Display helper text when team is below minimum requirement

Closes #405

* fix(submissions): remove hardcoded team size fallbacks

- Use undefined instead of hardcoded defaults (1, 10)
- Add hasTeamLimits guard to only enforce when hackathon defines limits
- Conditionally render Badge and helper text when limits are defined

* refactor: enhance error handling and submission response structure

- Introduced a utility function to standardize API error messages across submission operations.
- Updated the create and update submission functions to handle optional chaining for response checks.
- Improved the response structure to include messages for successful submissions.
- Adjusted the CreateSubmissionRequest interface to remove the hackathonId field and made organizationId optional in the update submission request.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
Co-authored-by: Matias Aguilar <aaguilar1x@gmail.com>
Co-authored-by: felipevega2x <feliaguilar5@gmail.com>
Co-authored-by: Josué Araya Marín <104031367+Josue19-08@users.noreply.github.com>

* UI fixes (#451) (#453)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* ui-fixes (#455)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* merge to prod (#457)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* fix: fix hackathon submission and participant page

* fix: fix hackathon submission and participant page

* feat(navbar): enhance navbar styles and layout

- Added CSS variables for active navbar link states, improving visual feedback.
- Refactored navbar layout for better alignment and responsiveness, including adjustments for mobile and desktop views.
- Updated component structure to ensure consistent styling and behavior across different states.

* feat(announcements): enhance announcement rendering and markdown support

- Implemented a `stripMarkdown` function to convert Markdown content to plain text for better preview handling in the announcement page.
- Created an `AnnouncementPreview` component to render announcements with Markdown support, improving content display in the announcements tab.
- Updated the announcement editor to utilize a dynamic Markdown editor, enhancing the editing experience for users.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>

* merg to prod (#459)

* UI fixes (#451)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and password login

* fix: fix conflict

* fix: fix submission form

* UI fixes (#454)

* fix: improve timeline input , ui improvement and fixes for participation tab

* fix: implement 2fa for email and p…
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.

Implement Newsletter API integration (subscribe, confirm, unsubscribe, preferences)

2 participants