Skip to content

UI fixes#454

Merged
Benjtalkshow merged 13 commits into
boundlessfi:mainfrom
Benjtalkshow:ui-fixes
Mar 7, 2026
Merged

UI fixes#454
Benjtalkshow merged 13 commits into
boundlessfi:mainfrom
Benjtalkshow:ui-fixes

Conversation

@Benjtalkshow

@Benjtalkshow Benjtalkshow commented Mar 7, 2026

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

  • New Features

    • Dedicated submission page for creating and editing hackathon projects at /hackathons/{slug}/submit
  • UI/UX Improvements

    • "Edit Submission" button replaces "View Submission" in hackathon cards and banners
    • Responsive stepper redesign with improved mobile and desktop layouts
    • Enhanced editor interface for hackathon descriptions
  • Enhancements

    • Better loading states during data fetching
    • Improved participant data display with enriched user information

@vercel

vercel Bot commented Mar 7, 2026

Copy link
Copy Markdown

@Benjtalkshow 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

This PR introduces a new dedicated submission page for hackathons at /hackathons/[slug]/submit and refactors submission workflows to use slug-based routing instead of expandable screens. Changes include new page component, modified navigation handlers, enhanced data fetching with concurrent requests, UI component updates, and refined submission form handling with callback support.

Changes

Cohort / File(s) Summary
Submission Routing & Navigation
app/(landing)/hackathons/[slug]/HackathonPageClient.tsx, app/(landing)/hackathons/[slug]/submit/page.tsx
New submission page component added; HackathonPageClient modified to use slug-based routing (/hackathons/{slug}/submit) instead of tab-based navigation; added authentication and submission state management with initialization flow.
Submission UI Components
components/hackathons/hackathonBanner.tsx, components/hackathons/hackathonStickyCard.tsx
Updated submission button labels and handlers from "View Submission" (onViewSubmissionClick) to "Edit Submission" (onSubmitClick); refined conditional rendering logic for registered/submitted states.
Submission Form & Tab
components/hackathons/submissions/SubmissionForm.tsx, components/hackathons/submissions/submissionTab.tsx
SubmissionForm enhanced with onClose callback, exported as SubmissionFormContent, and guarded ExpandableScreen usage; SubmissionTab refactored to use router-based navigation, added hackathonSlug prop, integrated loading state, and replaced expandable-screen with direct routing to /hackathons/{slug}/submit.
Submission Card & Menu
components/hackathons/submissions/submissionCard.tsx
Refactored dropdown menu to use DropdownMenuTrigger and onSelect handlers; added propagation stop wrapper to prevent card click interference during menu interactions.
Data Fetching & Participants
hooks/hackathon/use-participants.ts, lib/providers/hackathonProvider.tsx
use-participants now fetches team posts and hackathon participants concurrently with enhanced merging and transformation logic; hackathonProvider guard removed allowing concurrent re-fetches.
Organization & UI Styling
components/organization/hackathons/settings/GeneralSettingsTab.tsx, components/stepper/Stepper.tsx
Replaced tiptap editor with MDEditor for description field; redesigned Stepper with responsive multi-orientation layout, horizontal mobile connectors, and improved desktop vertical connectors.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant HackathonPageClient
    participant Router
    participant SubmitProjectPage
    participant AuthGuard
    participant HackathonData
    participant SubmissionForm
    
    User->>HackathonPageClient: Visit hackathon page
    HackathonPageClient->>HackathonPageClient: useAuthStatus() + useSubmission()
    HackathonPageClient->>HackathonPageClient: Set hasSubmitted state
    
    alt User has submitted
        User->>HackathonPageClient: Click "Edit Submission"
    else User hasn't submitted
        User->>HackathonPageClient: Click "Submit Project"
    end
    
    HackathonPageClient->>Router: Navigate to /hackathons/{slug}/submit
    Router->>SubmitProjectPage: Render page component
    SubmitProjectPage->>AuthGuard: Check authentication
    
    alt Not authenticated
        AuthGuard->>Router: Redirect to sign-in
    else Authenticated
        SubmitProjectPage->>HackathonData: Fetch hackathon & submission data
        HackathonData-->>SubmitProjectPage: Return data
        SubmitProjectPage->>SubmissionForm: Render form (edit or create mode)
        User->>SubmissionForm: Fill and submit
        SubmissionForm->>SubmitProjectPage: onSuccess callback
        SubmitProjectPage->>Router: Navigate back to hackathon
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • PR #382 — Modifies SubmissionForm.tsx and submission routing/behavior simultaneously
  • PR #436 — Adjusts HackathonPageClient.tsx initialization, useEffect, and loading logic in parallel
  • PR #375 — Changes submission UI components and slug-based routing for submission pages

Suggested reviewers

  • 0xdevcollins

🐰 A new submission path hops to life today,
With slug-based routes now leading the way,
Forms dance with callbacks, routers align,
Data flows freely in patterns divine,
The hackathon journey now sparkles and shines! ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 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 The pull request title 'UI fixes' is vague and generic, failing to convey meaningful information about the specific changes made across multiple files and systems. Provide a more descriptive title that highlights the main change, such as 'Refactor hackathon submission navigation to slug-based routing' or 'Update submission flow with dedicated submit page and routing'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ 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

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


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.

@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: 11

🧹 Nitpick comments (10)
hooks/hackathon/use-participants.ts (4)

91-91: Add type parameters to the baseLookup Map.

The Map lacks generic type parameters, resulting in implicit any typing.

♻️ Suggested fix
-    const baseLookup = new Map();
+    const baseLookup = new Map<string, (typeof baseParticipants)[number]>();

As per coding guidelines: "Do not use 'any' type; always search for proper Trustless Work entity types"

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

In `@hooks/hackathon/use-participants.ts` at line 91, The Map declaration "const
baseLookup = new Map();" uses implicit any types—update it to include explicit
generics for key and value (e.g., Map<string, Participant> or Map<number,
HackathonParticipantRecord> depending on your entity types) by replacing the
declaration with typed parameters and importing the correct entity/interface
used in this hook (refer to symbols baseLookup and the hook useParticipants to
find the expected key (id) and value (participant) types); ensure you import the
Trustless Work entity type and use that instead of any.

28-29: Avoid any cast; type the teams response properly.

Casting to any bypasses type safety. Consider updating the getTeamPosts return type or creating a type guard to handle both response shapes.

♻️ Suggested approach
-            const teamsArray =
-              (teamsResponse.data as any).teams ||
-              (Array.isArray(teamsResponse.data) ? teamsResponse.data : []);
+            const responseData = teamsResponse.data;
+            const teamsArray =
+              'teams' in responseData && Array.isArray(responseData.teams)
+                ? responseData.teams
+                : Array.isArray(responseData)
+                  ? responseData
+                  : [];

As per coding guidelines: "Do not use 'any' type; always search for proper Trustless Work entity types"

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

In `@hooks/hackathon/use-participants.ts` around lines 28 - 29, Replace the unsafe
cast "(teamsResponse.data as any).teams" by properly typing the response:
declare a Team interface (or import existing entity type), update the
getTeamPosts return type to reflect both possible shapes (e.g., Team[] or {
teams: Team[] }), and add a small type guard (e.g., isTeamsObject /
isTeamsArray) that narrows teamsResponse.data before accessing .teams; then use
that guard in the teamsResponse handling so you extract a Team[] safely without
using any. Ensure references to teamsResponse.data and getTeamPosts are updated
to use the new Team type and guard.

106-114: Multiple any casts in user object merging reduce type safety.

The spread operations and as any casts on lines 109 and 114 bypass type checking. Consider defining an intermediate interface that represents the merged user shape, or use a type assertion to the expected shape after merging.

As per coding guidelines: "Do not use 'any' type; always search for proper Trustless Work entity types"

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

In `@hooks/hackathon/use-participants.ts` around lines 106 - 114, The current
merging of user objects in apiUser and profile uses multiple "as any" casts
which circumvent type checking; replace those casts by defining a proper merged
user type (e.g., an interface like MergedUser or reuse the project's Trustless
Work user/entity type) and apply that type to the result of the merge for
apiUser and profile; update the spread expressions that reference basePat,
apiParticipant and apiParticipant.user to be typed (or use a small helper
mergeUsers(base?: UserType, override?: UserType): MergedUser) so you can safely
remove "as any" and keep the final assignments typed to the expected
user/profile interfaces (refer to apiUser, profile, basePat, apiParticipant).

65-65: Type the member parameter instead of using any.

Define a union type for the member to preserve type safety while handling both formats.

♻️ Suggested fix
-        team.members.forEach((member: any) => {
+        team.members.forEach((member: string | { userId: string }) => {

As per coding guidelines: "Do not use 'any' type; always search for proper Trustless Work entity types"

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

In `@hooks/hackathon/use-participants.ts` at line 65, Replace the unsafe any in
the forEach callback by declaring a proper union type for the member (e.g., type
Participant = TeamMember | LegacyMemberRecord) and use that type in the callback
signature (team.members.forEach((member: Participant) => ...)); update code
paths that access member fields to narrow the union (type guards or property
checks) so both formats are handled safely and preserve type safety in the
use-participants hook.
components/hackathons/submissions/submissionCard.tsx (1)

168-168: Extract the propagation guard into a named handler.

Please move this inline handler into something like handleMenuTriggerClick so the JSX stays readable and the handler follows the repo convention.

♻️ Proposed refactor
+  const handleMenuTriggerClick: React.MouseEventHandler<HTMLDivElement> = e => {
+    e.stopPropagation();
+  };
+
           {isMySubmission && !isDeadlinePassed && (
-            <div onClick={e => e.stopPropagation()}>
+            <div onClick={handleMenuTriggerClick}>
               <DropdownMenu>
As per coding guidelines, "Prefer const arrow functions with explicit type annotations over function declarations" and "Event handlers should start with 'handle' prefix (e.g., handleClick, handleSubmit)".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/hackathons/submissions/submissionCard.tsx` at line 168, Extract
the inline onClick handler into a named const arrow function called
handleMenuTriggerClick with an explicit React.MouseEvent type and export-scope
consistent with other handlers in SubmissionCard; replace onClick={e =>
e.stopPropagation()} with onClick={handleMenuTriggerClick} and ensure the new
handler simply calls e.stopPropagation(); follow the repo convention of naming
event handlers with the "handle" prefix and using a const arrow function with
type annotation so the JSX remains readable and typesafe.
components/organization/hackathons/settings/GeneralSettingsTab.tsx (1)

266-292: Move data-color-mode='dark' to the wrapper <div> element.

The @uiw/react-md-editor library requires the data-color-mode attribute on a parent container element (html, body, or a wrapper div), not as a prop on the MDEditor component itself. This is the documented approach and ensures the dark theme CSS is properly scoped.

The inline backgroundColor and color styles in textareaProps and the component's style prop can remain, but consider using CSS variables (via a .wmde-markdown-var class) for more maintainable theme customization if further adjustments are needed.

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

In `@components/organization/hackathons/settings/GeneralSettingsTab.tsx` around
lines 266 - 292, Move the data-color-mode='dark' attribute off the MDEditor
component and place it on the parent wrapper div (the <div
className='overflow-hidden rounded-xl border border-zinc-800'>) so the
`@uiw/react-md-editor` dark theme CSS is properly scoped; remove the
data-color-mode prop from the MDEditor invocation in GeneralSettingsTab.tsx and
keep the inline backgroundColor/color styles as-is (or optionally consolidate
theme values into a .wmde-markdown-var CSS class for maintainability).
components/stepper/Stepper.tsx (1)

46-46: Keep sticky positioning in the parent layout, not inside Stepper.

SubmissionForm already applies md:sticky md:top-0 around this component in components/hackathons/submissions/SubmissionForm.tsx:1549-1551, while components/comment/modal.tsx:232-236 renders Stepper in a different container model. Baking md:sticky into the reusable component creates nested-sticky behavior in one flow and couples the component to page-level layout in others.

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

In `@components/stepper/Stepper.tsx` at line 46, The Stepper component currently
hardcodes responsive sticky positioning in its root div (the class string
containing "md:sticky md:top-0"), which causes nested-sticky and layout
coupling; remove the sticky classes from the Stepper root container (the div in
the Stepper component) so the component only provides spacing/layout (e.g.,
mb-8, flex, md:flex-col) and let parent containers (like SubmissionForm and
components/comment/modal.tsx) control sticky behavior by applying "md:sticky
md:top-0" where needed.
components/hackathons/hackathonStickyCard.tsx (1)

241-251: Mirror the mobile onSubmitClick guard on desktop.

This branch now renders even when onSubmitClick is undefined, so any caller that omits the handler gets a dead CTA. Keeping the same guard as HackathonBanner avoids the desktop/mobile mismatch.

Suggested fix
-            {status === 'ongoing' && isRegistered && hasSubmitted && (
+            {status === 'ongoing' &&
+              isRegistered &&
+              hasSubmitted &&
+              onSubmitClick && (
               <Button
                 onClick={onSubmitClick}
                 variant='outline'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/hackathons/hackathonStickyCard.tsx` around lines 241 - 251, The
desktop sticky card renders the "Edit Submission" Button even when onSubmitClick
is undefined, producing a dead CTA; update the conditional that renders the
Button in hackathonStickyCard (the branch checking status === 'ongoing' &&
isRegistered && hasSubmitted) to include the same onSubmitClick existence guard
used in HackathonBanner (e.g., add && onSubmitClick) so the Button (and its
FileText icon) only render when the handler is provided.
app/(landing)/hackathons/[slug]/submit/page.tsx (1)

99-110: Use a typed submission shape for initialData.

(mySubmission as any).participationType drops type safety on the new edit flow. Please narrow mySubmission to the right entity type or extend the shared submission type so this field is typed.

As per coding guidelines, **/*.{ts,tsx}: Do not use 'any' type; always search for proper Trustless Work entity types.

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

In `@app/`(landing)/hackathons/[slug]/submit/page.tsx around lines 99 - 110,
Replace the unsafe (mySubmission as any).participationType by ensuring
mySubmission is typed to the correct submission entity that includes
participationType (or extend the shared Submission type to include
participationType) and use that typed shape when building initialData in the
component; update the prop/state type where mySubmission is declared (or the
fetch/mapper that returns it) so
initialData.projectName/category/description/logo/videoUrl/introduction/links/participationType
are all strongly typed and remove the any cast in page.tsx.
components/hackathons/submissions/submissionTab.tsx (1)

127-145: Prefer an in-app refresh over window.location.reload() after delete.

A hard reload drops the current client state here, including filters, view mode, and any open UI, and it can also cut off the success toast. Since this flow already runs inside the app, refreshing the affected submission/hackathon data is a smoother fit than reloading the whole document.

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

In `@components/hackathons/submissions/submissionTab.tsx` around lines 127 - 145,
In handleConfirmDelete, remove the hard window.location.reload() and instead
update the in-app state after removeSubmission succeeds: either call the
provided refetch function (e.g., refetchSubmissions/refetch) or update the
submissions state (e.g., setSubmissions(prev => prev.filter(s => s.id !==
submissionToDelete.id))) so the UI reflects the deletion without a full reload;
keep setSubmissionToDelete(null), toast.success, and the existing
error/reporting logic. Ensure you update any derived UI (filters/view
mode/pagination) by triggering the same local refresh path your component uses
elsewhere (e.g., calling fetchSubmissions, mutate from SWR, or
queryClient.invalidateQueries if using React Query) inside handleConfirmDelete
after await removeSubmission(...).
🤖 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/`(landing)/hackathons/[slug]/HackathonPageClient.tsx:
- Around line 52-55: The hook auto-fetches before the provider state aligns
because useSubmission is passed currentHackathon?.id and autoFetch true based on
isAuthenticated; fix by binding the hook to the intended hackathon id and gate
autoFetch until the provider is aligned: call useSubmission with
hackathonSlugOrId set to the route's hackathonId (the variable used in
setCurrentHackathon) or add the condition autoFetch: !!currentHackathon &&
currentHackathon.id === hackathonId && isAuthenticated, and apply the same
change to the other occurrence (the block referenced at lines 322-341) so the
hook only auto-fetches when the provider's currentHackathon actually matches the
requested hackathon.

In `@app/`(landing)/hackathons/[slug]/submit/page.tsx:
- Around line 63-70: handleSuccess currently triggers a second success toast
even though useSubmission.create() and update() already call toast.success;
remove the toast.success(...) call from handleSuccess and keep it to just call
fetchMySubmission() and navigate via
router.push(`/hackathons/${hackathonSlug}?tab=submission`), referencing the
existing handleSuccess, fetchMySubmission, mySubmission and router.push symbols
when making the change.
- Around line 31-47: The page currently uses currentHackathon immediately,
causing stale data on client transitions; instead gate on the requested
hackathon slug and avoid using stale currentHackathon for fetching. Change logic
so you only run useSubmission and render when the provider has been synchronized
to the requested hackathon: check that currentHackathon?.slug === hackathonSlug
(or, alternatively, pass hackathonSlug directly into useSubmission as
hackathonSlugOrId) and only enable autoFetch when that match is true; keep
setCurrentHackathon(hackathonSlug) in useEffect but prevent useSubmission from
using currentHackathon (hackathonId/orgId) until the slug matches. This uses the
existing symbols setCurrentHackathon, currentHackathon, hackathonSlug,
useSubmission, and hackathonId to locate and fix the code paths.

In `@components/hackathons/submissions/submissionCard.tsx`:
- Around line 171-176: The icon-only actions Button in submissionCard.tsx
(rendering <Button ...> with the <MoreHorizontal /> icon) lacks an accessible
name; update the Button element (the actions trigger in the SubmissionCard
component) to include an appropriate aria-label like "Open submission actions"
(or similar descriptive text) so assistive technologies can announce its
purpose.

In `@components/hackathons/submissions/SubmissionForm.tsx`:
- Around line 788-793: The current success path calls both onClose() and
onSuccess(), causing duplicate route changes; change the logic in SubmissionForm
so that onSuccess is only invoked when onClose is not provided (i.e., keep
onClose() as the sole action when present, and call collapse() followed by
onSuccess?.() in the else branch). Update the block that currently references
onClose, collapse, and onSuccess so only one navigation-related callback runs
per successful submit.
- Around line 204-213: The call to useExpandableScreen() must be removed from
SubmissionForm and moved into SubmissionScreenWrapper: call
useExpandableScreen() unconditionally inside SubmissionScreenWrapper, extract
collapse and isExpanded, and pass them as props (e.g., collapse, isExpanded)
down to SubmissionFormContent/SubmissionForm; delete the try/catch hook usage in
SubmissionForm and read collapse/isExpanded from props instead. Also update the
post-submit sequence in SubmissionForm (the code that currently calls onClose
and onSuccess) to use the passed collapse/isExpanded values to decide navigation
(prefer calling collapse() when isExpanded is true, otherwise call onClose), and
then call onSuccess once—this avoids firing two navigation actions on standalone
pages. Ensure prop names match between SubmissionScreenWrapper and
SubmissionFormContent/SubmissionForm.

In `@components/stepper/Stepper.tsx`:
- Around line 83-96: The connector's height is fixed to h-[49px] in Stepper.tsx
which breaks the desktop rail when text wraps; update the element that uses
className={`hidden h-[49px] w-[1.5px] border-l border-dashed md:block
${styles.line}`} to use a dynamic height (for example replace h-[49px] with
h-full or h-auto and ensure the parent container uses a stretching layout such
as flex with items-stretch or adding min-h as needed) so the vertical line
(styles.line) grows to match the text column instead of being hard-coded.
- Line 75: The getStepStyles() function returns different shape objects and the
'completed' branch omits the circle property, causing a TypeScript type error
when accessing styles.circle in Stepper.tsx; update the return type to a
consistent StepStyles interface (or type) that includes circle, label, and any
other properties, then ensure every branch of getStepStyles() (including the
'completed' branch) returns an object that contains the circle property (even if
empty or default) so the compiler and consumers like the JSX at className={`...
${styles.circle}`} are type-safe and consistent.

In `@hooks/hackathon/use-participants.ts`:
- Line 13: The hook useParticipants currently manages isLoading via const
[isLoading, setIsLoading] = useState(false) but never exposes it; update the
hook's return object (the value returned by useParticipants) to include
isLoading so consumers can react to loading state—add isLoading alongside the
existing returned values (also check the other return block around lines 292-306
and mirror the change there) and ensure any consuming types/interfaces are
updated if applicable.
- Around line 193-216: The returned participant object can set userId to
undefined which violates ParticipantDisplay's string type; ensure userId always
becomes a string by falling back to other identifiers or a safe default: use
apiParticipant.userId || basePat?.userId || apiParticipant.id || basePat?.id ||
'' when building the return object (referencing the userId property,
apiParticipant and basePat in this mapping), so consumers of ParticipantDisplay
never receive undefined.
- Line 12: Replace the any-typed state with the correct Participant array type:
import the Participant (or ParticipantsResponse) type from the relevant types
file and change the state declaration from useState<any[]>() to
useState<Participant[]>() so apiParticipants and setApiParticipants are strongly
typed; also ensure the fetch call that uses getHackathonParticipants expects
ParticipantsResponse and assigns response.data.participants (Participant[]) into
setApiParticipants to keep types consistent.

---

Nitpick comments:
In `@app/`(landing)/hackathons/[slug]/submit/page.tsx:
- Around line 99-110: Replace the unsafe (mySubmission as any).participationType
by ensuring mySubmission is typed to the correct submission entity that includes
participationType (or extend the shared Submission type to include
participationType) and use that typed shape when building initialData in the
component; update the prop/state type where mySubmission is declared (or the
fetch/mapper that returns it) so
initialData.projectName/category/description/logo/videoUrl/introduction/links/participationType
are all strongly typed and remove the any cast in page.tsx.

In `@components/hackathons/hackathonStickyCard.tsx`:
- Around line 241-251: The desktop sticky card renders the "Edit Submission"
Button even when onSubmitClick is undefined, producing a dead CTA; update the
conditional that renders the Button in hackathonStickyCard (the branch checking
status === 'ongoing' && isRegistered && hasSubmitted) to include the same
onSubmitClick existence guard used in HackathonBanner (e.g., add &&
onSubmitClick) so the Button (and its FileText icon) only render when the
handler is provided.

In `@components/hackathons/submissions/submissionCard.tsx`:
- Line 168: Extract the inline onClick handler into a named const arrow function
called handleMenuTriggerClick with an explicit React.MouseEvent type and
export-scope consistent with other handlers in SubmissionCard; replace
onClick={e => e.stopPropagation()} with onClick={handleMenuTriggerClick} and
ensure the new handler simply calls e.stopPropagation(); follow the repo
convention of naming event handlers with the "handle" prefix and using a const
arrow function with type annotation so the JSX remains readable and typesafe.

In `@components/hackathons/submissions/submissionTab.tsx`:
- Around line 127-145: In handleConfirmDelete, remove the hard
window.location.reload() and instead update the in-app state after
removeSubmission succeeds: either call the provided refetch function (e.g.,
refetchSubmissions/refetch) or update the submissions state (e.g.,
setSubmissions(prev => prev.filter(s => s.id !== submissionToDelete.id))) so the
UI reflects the deletion without a full reload; keep
setSubmissionToDelete(null), toast.success, and the existing error/reporting
logic. Ensure you update any derived UI (filters/view mode/pagination) by
triggering the same local refresh path your component uses elsewhere (e.g.,
calling fetchSubmissions, mutate from SWR, or queryClient.invalidateQueries if
using React Query) inside handleConfirmDelete after await removeSubmission(...).

In `@components/organization/hackathons/settings/GeneralSettingsTab.tsx`:
- Around line 266-292: Move the data-color-mode='dark' attribute off the
MDEditor component and place it on the parent wrapper div (the <div
className='overflow-hidden rounded-xl border border-zinc-800'>) so the
`@uiw/react-md-editor` dark theme CSS is properly scoped; remove the
data-color-mode prop from the MDEditor invocation in GeneralSettingsTab.tsx and
keep the inline backgroundColor/color styles as-is (or optionally consolidate
theme values into a .wmde-markdown-var CSS class for maintainability).

In `@components/stepper/Stepper.tsx`:
- Line 46: The Stepper component currently hardcodes responsive sticky
positioning in its root div (the class string containing "md:sticky md:top-0"),
which causes nested-sticky and layout coupling; remove the sticky classes from
the Stepper root container (the div in the Stepper component) so the component
only provides spacing/layout (e.g., mb-8, flex, md:flex-col) and let parent
containers (like SubmissionForm and components/comment/modal.tsx) control sticky
behavior by applying "md:sticky md:top-0" where needed.

In `@hooks/hackathon/use-participants.ts`:
- Line 91: The Map declaration "const baseLookup = new Map();" uses implicit any
types—update it to include explicit generics for key and value (e.g.,
Map<string, Participant> or Map<number, HackathonParticipantRecord> depending on
your entity types) by replacing the declaration with typed parameters and
importing the correct entity/interface used in this hook (refer to symbols
baseLookup and the hook useParticipants to find the expected key (id) and value
(participant) types); ensure you import the Trustless Work entity type and use
that instead of any.
- Around line 28-29: Replace the unsafe cast "(teamsResponse.data as any).teams"
by properly typing the response: declare a Team interface (or import existing
entity type), update the getTeamPosts return type to reflect both possible
shapes (e.g., Team[] or { teams: Team[] }), and add a small type guard (e.g.,
isTeamsObject / isTeamsArray) that narrows teamsResponse.data before accessing
.teams; then use that guard in the teamsResponse handling so you extract a
Team[] safely without using any. Ensure references to teamsResponse.data and
getTeamPosts are updated to use the new Team type and guard.
- Around line 106-114: The current merging of user objects in apiUser and
profile uses multiple "as any" casts which circumvent type checking; replace
those casts by defining a proper merged user type (e.g., an interface like
MergedUser or reuse the project's Trustless Work user/entity type) and apply
that type to the result of the merge for apiUser and profile; update the spread
expressions that reference basePat, apiParticipant and apiParticipant.user to be
typed (or use a small helper mergeUsers(base?: UserType, override?: UserType):
MergedUser) so you can safely remove "as any" and keep the final assignments
typed to the expected user/profile interfaces (refer to apiUser, profile,
basePat, apiParticipant).
- Line 65: Replace the unsafe any in the forEach callback by declaring a proper
union type for the member (e.g., type Participant = TeamMember |
LegacyMemberRecord) and use that type in the callback signature
(team.members.forEach((member: Participant) => ...)); update code paths that
access member fields to narrow the union (type guards or property checks) so
both formats are handled safely and preserve type safety in the use-participants
hook.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d033aba4-ef83-4887-8199-62d564d745ec

📥 Commits

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

📒 Files selected for processing (11)
  • app/(landing)/hackathons/[slug]/HackathonPageClient.tsx
  • app/(landing)/hackathons/[slug]/submit/page.tsx
  • components/hackathons/hackathonBanner.tsx
  • components/hackathons/hackathonStickyCard.tsx
  • components/hackathons/submissions/SubmissionForm.tsx
  • components/hackathons/submissions/submissionCard.tsx
  • components/hackathons/submissions/submissionTab.tsx
  • components/organization/hackathons/settings/GeneralSettingsTab.tsx
  • components/stepper/Stepper.tsx
  • hooks/hackathon/use-participants.ts
  • lib/providers/hackathonProvider.tsx
💤 Files with no reviewable changes (1)
  • lib/providers/hackathonProvider.tsx

Comment on lines +52 to +55
const { submission: mySubmission } = useSubmission({
hackathonSlugOrId: currentHackathon?.id || '',
autoFetch: !!currentHackathon && isAuthenticated,
});

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

isInitializing is cleared before the requested hackathon is actually aligned.

await setCurrentHackathon(hackathonId) does not synchronize the provider state here, so the new useSubmission hook can still auto-fetch against whatever currentHackathon was already in context. On route-to-route transitions, that makes hasSubmitted vulnerable to the previous hackathon's submission until the provider catches up.

Also applies to: 322-341

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

In `@app/`(landing)/hackathons/[slug]/HackathonPageClient.tsx around lines 52 -
55, The hook auto-fetches before the provider state aligns because useSubmission
is passed currentHackathon?.id and autoFetch true based on isAuthenticated; fix
by binding the hook to the intended hackathon id and gate autoFetch until the
provider is aligned: call useSubmission with hackathonSlugOrId set to the
route's hackathonId (the variable used in setCurrentHackathon) or add the
condition autoFetch: !!currentHackathon && currentHackathon.id === hackathonId
&& isAuthenticated, and apply the same change to the other occurrence (the block
referenced at lines 322-341) so the hook only auto-fetches when the provider's
currentHackathon actually matches the requested hackathon.

Comment on lines +31 to +47
useEffect(() => {
if (hackathonSlug) {
setCurrentHackathon(hackathonSlug);
}
}, [hackathonSlug, setCurrentHackathon]);

const hackathonId = currentHackathon?.id || '';
const orgId = currentHackathon?.organizationId || undefined;

const {
submission: mySubmission,
isFetching: isLoadingMySubmission,
fetchMySubmission,
} = useSubmission({
hackathonSlugOrId: hackathonId || '',
autoFetch: isAuthenticated && !!hackathonId,
});

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

Gate this page on the requested hackathon, not just any hackathon in context.

setCurrentHackathon(hackathonSlug) runs after the first render, but useSubmission and the render gate both read currentHackathon immediately. On client-side transitions, that can still be the previous hackathon, so this page can fetch and prefill the wrong submission until the provider catches up.

Suggested fix
   const {
     currentHackathon,
     loading: hackathonLoading,
     setCurrentHackathon,
   } = useHackathonData();
+
+  const isCurrentHackathonReady =
+    currentHackathon?.slug === hackathonSlug;

   const hackathonId = currentHackathon?.id || '';
   const orgId = currentHackathon?.organizationId || undefined;

   const {
     submission: mySubmission,
     isFetching: isLoadingMySubmission,
     fetchMySubmission,
   } = useSubmission({
     hackathonSlugOrId: hackathonId || '',
-    autoFetch: isAuthenticated && !!hackathonId,
+    autoFetch: isAuthenticated && isCurrentHackathonReady && !!hackathonId,
   });
@@
-  if (
-    isLoading ||
-    hackathonLoading ||
-    isLoadingMySubmission ||
-    !currentHackathon
-  ) {
+  if (
+    isLoading ||
+    hackathonLoading ||
+    isLoadingMySubmission ||
+    !isCurrentHackathonReady
+  ) {
     return <LoadingScreen />;
   }

Also applies to: 73-80

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

In `@app/`(landing)/hackathons/[slug]/submit/page.tsx around lines 31 - 47, The
page currently uses currentHackathon immediately, causing stale data on client
transitions; instead gate on the requested hackathon slug and avoid using stale
currentHackathon for fetching. Change logic so you only run useSubmission and
render when the provider has been synchronized to the requested hackathon: check
that currentHackathon?.slug === hackathonSlug (or, alternatively, pass
hackathonSlug directly into useSubmission as hackathonSlugOrId) and only enable
autoFetch when that match is true; keep setCurrentHackathon(hackathonSlug) in
useEffect but prevent useSubmission from using currentHackathon
(hackathonId/orgId) until the slug matches. This uses the existing symbols
setCurrentHackathon, currentHackathon, hackathonSlug, useSubmission, and
hackathonId to locate and fix the code paths.

Comment on lines +63 to +70
const handleSuccess = () => {
fetchMySubmission();
toast.success(
mySubmission
? 'Submission updated successfully!'
: 'Project submitted successfully!'
);
router.push(`/hackathons/${hackathonSlug}?tab=submission`);

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 | 🟡 Minor

Remove the extra success toast.

useSubmission.create() and update() already call toast.success(...), so handleSuccess shows a second notification on every successful submit/edit.

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

In `@app/`(landing)/hackathons/[slug]/submit/page.tsx around lines 63 - 70,
handleSuccess currently triggers a second success toast even though
useSubmission.create() and update() already call toast.success; remove the
toast.success(...) call from handleSuccess and keep it to just call
fetchMySubmission() and navigate via
router.push(`/hackathons/${hackathonSlug}?tab=submission`), referencing the
existing handleSuccess, fetchMySubmission, mySubmission and router.push symbols
when making the change.

Comment on lines +171 to +176
<Button
variant='ghost'
size='sm'
className='h-8 w-8 p-0 text-gray-400 hover:text-white'
>
<MoreHorizontal className='h-4 w-4' />

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 an accessible name to the actions trigger.

Line 171 renders an icon-only button with no accessible name, so assistive tech will announce it as an unlabeled button. Please add an aria-label, e.g. aria-label="Open submission actions".

🔧 Proposed fix
                 <DropdownMenuTrigger asChild>
                   <Button
+                    aria-label='Open submission actions'
                     variant='ghost'
                     size='sm'
                     className='h-8 w-8 p-0 text-gray-400 hover:text-white'
                   >
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<Button
variant='ghost'
size='sm'
className='h-8 w-8 p-0 text-gray-400 hover:text-white'
>
<MoreHorizontal className='h-4 w-4' />
<Button
aria-label='Open submission actions'
variant='ghost'
size='sm'
className='h-8 w-8 p-0 text-gray-400 hover:text-white'
>
<MoreHorizontal className='h-4 w-4' />
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/hackathons/submissions/submissionCard.tsx` around lines 171 - 176,
The icon-only actions Button in submissionCard.tsx (rendering <Button ...> with
the <MoreHorizontal /> icon) lacks an accessible name; update the Button element
(the actions trigger in the SubmissionCard component) to include an appropriate
aria-label like "Open submission actions" (or similar descriptive text) so
assistive technologies can announce its purpose.

Comment on lines +204 to +213
// Use context carefully since it might not be available when used standalone
let collapse = () => {};
let open = true;
try {
const expandableCtx = useExpandableScreen();
collapse = expandableCtx.collapse;
open = expandableCtx.isExpanded;
} catch (e) {
// Standalone mode, not in ExpandableScreen
}

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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

fd -t f "SubmissionForm.tsx" -o "submission" --maxdepth 5

Repository: boundlessfi/boundless

Length of output: 204


🏁 Script executed:

find . -name "SubmissionForm.tsx" -o -name "*page.tsx" | grep -E "(submit|submission)" | head -20

Repository: boundlessfi/boundless

Length of output: 291


🏁 Script executed:

git ls-files | grep -i submission | head -20

Repository: boundlessfi/boundless

Length of output: 1340


🏁 Script executed:

wc -l components/hackathons/submissions/SubmissionForm.tsx

Repository: boundlessfi/boundless

Length of output: 122


🏁 Script executed:

sed -n '200,220p' components/hackathons/submissions/SubmissionForm.tsx

Repository: boundlessfi/boundless

Length of output: 740


🏁 Script executed:

sed -n '780,800p' components/hackathons/submissions/SubmissionForm.tsx

Repository: boundlessfi/boundless

Length of output: 505


🏁 Script executed:

cat -n components/hackathons/submissions/SubmissionForm.tsx | head -50

Repository: boundlessfi/boundless

Length of output: 1571


🏁 Script executed:

cat -n app/'(landing)'/hackathons/'[slug]'/submit/page.tsx

Repository: boundlessfi/boundless

Length of output: 4564


🏁 Script executed:

grep -n "SubmissionForm\|SubmissionFormContent" app/'(landing)'/hackathons/'[slug]'/submit/page.tsx -B 5 -A 10

Repository: boundlessfi/boundless

Length of output: 1500


🏁 Script executed:

grep -n "export\|SubmissionFormContent" components/hackathons/submissions/SubmissionForm.tsx | head -30

Repository: boundlessfi/boundless

Length of output: 405


🏁 Script executed:

sed -n '1598,1617p' components/hackathons/submissions/SubmissionForm.tsx

Repository: boundlessfi/boundless

Length of output: 648


🏁 Script executed:

sed -n '190,250p' components/hackathons/submissions/SubmissionForm.tsx

Repository: boundlessfi/boundless

Length of output: 1819


🏁 Script executed:

grep -r "SubmissionScreenWrapper\|SubmissionFormContent" --include="*.tsx" --include="*.ts" | grep -v node_modules | head -20

Repository: boundlessfi/boundless

Length of output: 1112


🏁 Script executed:

grep -n "useExpandableScreen" components/hackathons/submissions/SubmissionForm.tsx

Repository: boundlessfi/boundless

Length of output: 143


🏁 Script executed:

cat -n biome.json 2>/dev/null || cat -n biomejs.json 2>/dev/null || echo "No Biome config found"

Repository: boundlessfi/boundless

Length of output: 2350


Move useExpandableScreen() call to SubmissionScreenWrapper and pass context values as props.

The try/catch around useExpandableScreen() at lines 208–213 violates React Rules of Hooks and will fail Biome's lint/correctness/useHookAtTopLevel check. Hooks must be called unconditionally at the top level of components, not within control-flow branches.

The safe solution: Since SubmissionScreenWrapper (lines 1598–1617) is already inside the ExpandableScreen context, have it call useExpandableScreen() safely and pass collapse and isExpanded to SubmissionFormContent via props. For standalone usage (e.g., the submit page), the component already receives onClose and can ignore the context values.

Additionally, the post-submit callback sequence at lines 788–793 calls both onClose and onSuccess in the standalone page, firing two navigation actions in sequence. Pass the context values via props to avoid needing fallback logic.

🧰 Tools
🪛 Biome (2.4.4)

[error] 208-208: This hook is being called conditionally, but all hooks must be called in the exact same order in every component render.

(lint/correctness/useHookAtTopLevel)

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

In `@components/hackathons/submissions/SubmissionForm.tsx` around lines 204 - 213,
The call to useExpandableScreen() must be removed from SubmissionForm and moved
into SubmissionScreenWrapper: call useExpandableScreen() unconditionally inside
SubmissionScreenWrapper, extract collapse and isExpanded, and pass them as props
(e.g., collapse, isExpanded) down to SubmissionFormContent/SubmissionForm;
delete the try/catch hook usage in SubmissionForm and read collapse/isExpanded
from props instead. Also update the post-submit sequence in SubmissionForm (the
code that currently calls onClose and onSuccess) to use the passed
collapse/isExpanded values to decide navigation (prefer calling collapse() when
isExpanded is true, otherwise call onClose), and then call onSuccess once—this
avoids firing two navigation actions on standalone pages. Ensure prop names
match between SubmissionScreenWrapper and SubmissionFormContent/SubmissionForm.

) : (
<div
className={`flex size-[46px] items-center justify-center rounded-full text-xl font-bold ${styles.circle}`}
className={`flex size-[40px] items-center justify-center rounded-full text-lg font-bold md:size-[46px] md:text-xl ${styles.circle}`}

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 | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# First, let's check if the file exists and view its contents around the lines in question
find . -name "Stepper.tsx" -type f | head -5

Repository: boundlessfi/boundless

Length of output: 97


🏁 Script executed:

#!/bin/bash
# Read the Stepper.tsx file to see the implementation
cat -n ./components/stepper/Stepper.tsx

Repository: boundlessfi/boundless

Length of output: 4438


🏁 Script executed:

#!/bin/bash
# Check for tsconfig.json files
find . -name "tsconfig.json" -type f | head -5

Repository: boundlessfi/boundless

Length of output: 80


🏁 Script executed:

#!/bin/bash
# Read the tsconfig.json to check strict mode
cat ./tsconfig.json

Repository: boundlessfi/boundless

Length of output: 764


Add circle property to getStepStyles() return type to ensure TypeScript type safety.

The 'completed' branch returns a shape missing the circle property, causing a type error at line 75 where styles.circle is accessed. In strict TypeScript mode, this fails compilation. Define a consistent StepStyles type with all properties across all branches:

Suggested fix
+type StepStyles = {
+  circle: string;
+  title: string;
+  description: string;
+  line: string;
+};
+
-  const getStepStyles = (state: StepState) => {
+  const getStepStyles = (state: StepState): StepStyles => {
     switch (state) {
       case 'completed':
         return {
+          circle: '',
           title: 'text-card',
           description: 'text-white/60',
           line: 'border-primary',
         };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/stepper/Stepper.tsx` at line 75, The getStepStyles() function
returns different shape objects and the 'completed' branch omits the circle
property, causing a TypeScript type error when accessing styles.circle in
Stepper.tsx; update the return type to a consistent StepStyles interface (or
type) that includes circle, label, and any other properties, then ensure every
branch of getStepStyles() (including the 'completed' branch) returns an object
that contains the circle property (even if empty or default) so the compiler and
consumers like the JSX at className={`... ${styles.circle}`} are type-safe and
consistent.

Comment on lines +83 to +96
className={`hidden h-[49px] w-[1.5px] border-l border-dashed md:block ${styles.line}`}
/>
)}
</div>

<div className='flex flex-col gap-2 pt-1'>
<h4 className={`font-base font-medium ${styles.title}`}>
<div className='mt-1 flex flex-col items-center gap-1 pt-1 text-center md:mt-0 md:items-start md:gap-2 md:text-left'>
<h4
className={`text-xs font-medium sm:text-sm md:text-base ${styles.title}`}
>
{step.title}
</h4>
<p className={`text-sm leading-[145%] ${styles.description}`}>
<p
className={`hidden text-sm leading-[145%] md:block ${styles.description}`}
>

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 | 🟡 Minor

The desktop connector height is hard-coded against variable copy.

Lines 88-97 let each step grow with wrapped titles/descriptions, but Line 83 caps the connector at 49px. Once the text column is taller than the icon column, the line stops short of the next marker and the desktop progress rail breaks.

Suggested fix
-          <figure
-            key={index}
-            className='group relative flex flex-1 flex-col items-center gap-2 md:flex-none md:flex-row md:items-start md:gap-4'
-          >
+          <figure
+            key={index}
+            className='group relative flex flex-1 flex-col items-center gap-2 md:flex-none md:flex-row md:items-stretch md:gap-4'
+          >
...
-            <div className='z-10 flex flex-col items-center bg-black px-2 md:bg-transparent md:px-0'>
+            <div className='z-10 flex flex-col items-center bg-black px-2 md:h-full md:bg-transparent md:px-0'>
...
-                  className={`hidden h-[49px] w-[1.5px] border-l border-dashed md:block ${styles.line}`}
+                  className={`hidden w-[1.5px] flex-1 border-l border-dashed md:block ${styles.line}`}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/stepper/Stepper.tsx` around lines 83 - 96, The connector's height
is fixed to h-[49px] in Stepper.tsx which breaks the desktop rail when text
wraps; update the element that uses className={`hidden h-[49px] w-[1.5px]
border-l border-dashed md:block ${styles.line}`} to use a dynamic height (for
example replace h-[49px] with h-full or h-auto and ensure the parent container
uses a stretching layout such as flex with items-stretch or adding min-h as
needed) so the vertical line (styles.line) grows to match the text column
instead of being hard-coded.

const { currentHackathon } = useHackathonData();
const params = useParams();
const [teams, setTeams] = useState<TeamRecruitmentPost[]>([]);
const [apiParticipants, setApiParticipants] = useState<any[]>([]);

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 | 🟡 Minor

Avoid using any type for apiParticipants state.

The coding guidelines prohibit using any type. Based on the relevant code snippets, getHackathonParticipants returns ParticipantsResponse where data.participants is of type Participant[]. Use the proper type from the type definitions.

🛠️ Suggested fix
+import type { Participant } from '@/types/hackathon/participant';
 import { getHackathonParticipants } from '@/lib/api/hackathon';
-  const [apiParticipants, setApiParticipants] = useState<any[]>([]);
+  const [apiParticipants, setApiParticipants] = useState<Participant[]>([]);

As per coding guidelines: "Do not use 'any' type; always search for proper Trustless Work entity types"

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const [apiParticipants, setApiParticipants] = useState<any[]>([]);
const [apiParticipants, setApiParticipants] = useState<Participant[]>([]);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hooks/hackathon/use-participants.ts` at line 12, Replace the any-typed state
with the correct Participant array type: import the Participant (or
ParticipantsResponse) type from the relevant types file and change the state
declaration from useState<any[]>() to useState<Participant[]>() so
apiParticipants and setApiParticipants are strongly typed; also ensure the fetch
call that uses getHackathonParticipants expects ParticipantsResponse and assigns
response.data.participants (Participant[]) into setApiParticipants to keep types
consistent.

const params = useParams();
const [teams, setTeams] = useState<TeamRecruitmentPost[]>([]);
const [apiParticipants, setApiParticipants] = useState<any[]>([]);
const [isLoading, setIsLoading] = useState(false);

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 | 🟡 Minor

isLoading state is set but never returned from the hook.

The hook manages isLoading state (line 13) but does not expose it in the return object. Consumers of this hook cannot determine when data is being fetched, which may lead to missing loading indicators in the UI.

🛠️ Suggested fix
   return {
     participants: filteredAndSortedParticipants,
     allParticipants: participants,
     teams,
     totalParticipants: participants.length,
     submittedCount,
+    isLoading,
     searchTerm,
     sortBy,

Also applies to: 292-306

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

In `@hooks/hackathon/use-participants.ts` at line 13, The hook useParticipants
currently manages isLoading via const [isLoading, setIsLoading] =
useState(false) but never exposes it; update the hook's return object (the value
returned by useParticipants) to include isLoading so consumers can react to
loading state—add isLoading alongside the existing returned values (also check
the other return block around lines 292-306 and mirror the change there) and
ensure any consuming types/interfaces are updated if applicable.

Comment on lines +193 to +216
return {
id: apiParticipant.id || basePat?.id,
userId: userId,
name: name === ' ' ? 'Anonymous' : name, // Fix empty space from trim
username,
avatar,
hasSubmitted: !!(apiParticipant.submission || basePat?.submission),
joinedDate,
// Use role from Team if found, then from API, otherwise default
role:
teamInfo?.role ||
(apiParticipant as any).role ||
(basePat as any)?.role ||
'Participant',
categories: apiParticipant.categories || basePat?.categories || [],
projects: projectsCount,
followers: followersCount,
teamId: teamInfo?.teamId || apiParticipant.teamId || basePat?.teamId,
teamName:
teamInfo?.teamName || apiParticipant.teamName || basePat?.teamName,
isIndividual:
(apiParticipant.participationType || basePat?.participationType) ===
'individual' && !teamInfo,
};

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 | 🟡 Minor

userId can be undefined, but ParticipantDisplay expects string.

Based on the relevant code snippet for ParticipantDisplay, userId is typed as string (non-optional). However, the detection logic on lines 117-121 can result in undefined if none of the fallbacks match. This could cause runtime issues or type mismatches for consumers.

🛠️ Suggested fix
       return {
         id: apiParticipant.id || basePat?.id,
-        userId: userId,
+        userId: userId ?? '',
         name: name === ' ' ? 'Anonymous' : name,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
return {
id: apiParticipant.id || basePat?.id,
userId: userId,
name: name === ' ' ? 'Anonymous' : name, // Fix empty space from trim
username,
avatar,
hasSubmitted: !!(apiParticipant.submission || basePat?.submission),
joinedDate,
// Use role from Team if found, then from API, otherwise default
role:
teamInfo?.role ||
(apiParticipant as any).role ||
(basePat as any)?.role ||
'Participant',
categories: apiParticipant.categories || basePat?.categories || [],
projects: projectsCount,
followers: followersCount,
teamId: teamInfo?.teamId || apiParticipant.teamId || basePat?.teamId,
teamName:
teamInfo?.teamName || apiParticipant.teamName || basePat?.teamName,
isIndividual:
(apiParticipant.participationType || basePat?.participationType) ===
'individual' && !teamInfo,
};
return {
id: apiParticipant.id || basePat?.id,
userId: userId ?? '',
name: name === ' ' ? 'Anonymous' : name, // Fix empty space from trim
username,
avatar,
hasSubmitted: !!(apiParticipant.submission || basePat?.submission),
joinedDate,
// Use role from Team if found, then from API, otherwise default
role:
teamInfo?.role ||
(apiParticipant as any).role ||
(basePat as any)?.role ||
'Participant',
categories: apiParticipant.categories || basePat?.categories || [],
projects: projectsCount,
followers: followersCount,
teamId: teamInfo?.teamId || apiParticipant.teamId || basePat?.teamId,
teamName:
teamInfo?.teamName || apiParticipant.teamName || basePat?.teamName,
isIndividual:
(apiParticipant.participationType || basePat?.participationType) ===
'individual' && !teamInfo,
};
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hooks/hackathon/use-participants.ts` around lines 193 - 216, The returned
participant object can set userId to undefined which violates
ParticipantDisplay's string type; ensure userId always becomes a string by
falling back to other identifiers or a safe default: use apiParticipant.userId
|| basePat?.userId || apiParticipant.id || basePat?.id || '' when building the
return object (referencing the userId property, apiParticipant and basePat in
this mapping), so consumers of ParticipantDisplay never receive undefined.

@Benjtalkshow
Benjtalkshow merged commit ba798d7 into boundlessfi:main Mar 7, 2026
6 of 8 checks passed
Benjtalkshow added a commit that referenced this pull request Mar 7, 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
0xdevcollins added a commit that referenced this pull request Mar 7, 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.

---------

Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com>
@coderabbitai coderabbitai Bot mentioned this pull request Mar 7, 2026
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>
@coderabbitai coderabbitai Bot mentioned this pull request Mar 9, 2026
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>
@coderabbitai coderabbitai Bot mentioned this pull request Mar 9, 2026
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…
This was referenced Mar 13, 2026
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.

1 participant