feat: Add peer-demo-showcase kit - #295
Conversation
- Created a new community showcase app with a package.json file. - Implemented CursorGlow component for a glowing cursor effect. - Developed MagneticButton component for interactive button animations. - Added Navbar component with scroll-based styling. - Introduced SmoothScroll component for smooth scrolling experience. - Created TiltCard component for 3D tilt effects on hover. - Added utility function for class name merging. - Implemented flows for managing sponsors and project submissions, including add, get, and upvote functionalities.
- Created a new community showcase app with a package.json file. - Implemented CursorGlow component for a glowing cursor effect. - Developed MagneticButton component for interactive button animations. - Added Navbar component with scroll-based styling. - Introduced SmoothScroll component for smooth scrolling experience. - Created TiltCard component for 3D tilt effects on hover. - Added utility function for class name merging. - Implemented flows for managing sponsors and project submissions, including add, get, and upvote functionalities.
…configuration, judging management, sponsors management, and submissions management - Deleted upvote-project-flow.ts as it is no longer needed. - Updated lamatic.config.ts to reflect new flow structure and removed references to deleted flow. - Added new Judge Login and Dashboard pages for enhanced judge experience. - Created consolidated flows for event configuration, judging management, sponsors management, and submissions management to streamline operations.
…d sponsor matching
Added Loom video link and new section for Lamatic.ai flows.
feat(peer-demo-showcase): AI-Powered Hackathon Showcase & Sponsor Matcher Kit
Added a 'Live' section with the deployment link.
Feat/peer demo showcase
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughChangesThe pull request adds a complete Peer Demo Showcase kit with Lamatic-backed project matching, public submission and gallery flows, judge scoring, admin management, authentication, animated UI components, static showcase prototypes, configuration, and documentation. Peer Demo Showcase platform
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
:robot_face: AgentKit Structural ValidationNew Contributions Detected
Check Results
🎉 All checks passed! This contribution follows the AgentKit structure. |
|
Failure recorded at 2026-07-24T14:00:21Z UTC. If this PR is not fixed within 4 weeks it will be automatically closed. |
…into feat/peer-demo-showcase
Feat/peer demo showcase
There was a problem hiding this comment.
Actionable comments posted: 23
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@kits/peer-demo-showcase/apps/.gitignore`:
- Around line 33-35: Update the ignore rules near `.env*` and `.env.local` to
explicitly unignore the required `.env.example` template by adding a negation
rule after the broad pattern, ensuring it remains commit-able.
In `@kits/peer-demo-showcase/apps/actions/orchestrate.ts`:
- Around line 118-140: Update submitProject and resubmitProject to validate
githubUrl, contactEmail, and hostedLink server-side before any submission,
resubmission, or Lamatic crawl logic runs. Move or reuse the existing page.tsx
validation rules so direct callers cannot bypass GitHub URL, email, or
hosted-link checks, and reject invalid inputs immediately.
- Around line 517-539: The verifyJudgeCredentials function must fail closed when
neither JUDGE_PASSWORD nor ADMIN_PASSWORD is configured. Remove the literal
'judge' fallback, require a configured password before validating credentials,
and preserve the existing valid/invalid response shape while ensuring missing
configuration always returns valid: false.
In `@kits/peer-demo-showcase/apps/app/admin/page.tsx`:
- Around line 83-84: Update the initialization around setDeadline and
setWinnerDeclarationTime to convert stored ISO/UTC timestamps into local Date
values before formatting them for the datetime-local inputs, rather than slicing
the UTC string directly. Preserve empty values, and ensure the corresponding
save logic parses these input values as local time before converting them to ISO
for storage.
In `@kits/peer-demo-showcase/apps/app/layout.tsx`:
- Around line 68-79: Update the Toaster configuration in the layout component to
use the app’s class-based light/dark theme state instead of the OS preference;
replace the fixed theme="system" setting with the theme value or integration
used by the existing html class toggle and preserve the current toast styling
options.
In `@kits/peer-demo-showcase/apps/components/Dropdown.tsx`:
- Around line 50-64: Harden the Dropdown accessibility around the trigger and
its panel: add aria-expanded and aria-haspopup to the trigger, assign listbox
and option roles with aria-selected to the panel and option buttons, and support
Escape-to-close with focus returned to the trigger. Update the Dropdown
component’s keyboard and focus handling while preserving existing selection and
toggle behavior.
In `@kits/peer-demo-showcase/apps/components/MagneticButton.tsx`:
- Around line 29-38: Update the motion.button prop handling in MagneticButton so
caller-provided onMouseMove and onMouseLeave handlers are preserved and invoked
alongside the internal handleMouseMove and reset logic. Merge the handlers
explicitly while retaining the existing magnetic behavior and avoid allowing the
internal props to overwrite caller callbacks.
In `@kits/peer-demo-showcase/apps/components/Navbar.tsx`:
- Around line 80-86: Update the mobile menu toggle button in Navbar to expose
its state with aria-expanded={isMobileMenuOpen} and associate it with the
dropdown using aria-controls="mobile-nav-panel"; add the matching
id="mobile-nav-panel" to the dropdown motion.div. Preserve the existing toggle
behavior and label.
In `@kits/peer-demo-showcase/apps/components/SponsorMarquee.tsx`:
- Line 24: Mark the duplicated marquee sponsor content as hidden from assistive
technologies by applying aria-hidden to the rendered duplicate list or its
containing element in SponsorMarquee, covering the duplicatedSponsors rendering
and associated marquee items while preserving the visual loop.
In `@kits/peer-demo-showcase/apps/components/ThemeToggle.tsx`:
- Around line 6-26: Add a blocking inline theme-initialization script in
layout.tsx that runs before hydration, reads the stored theme preference, and
applies the matching class to document.documentElement while removing the
opposite class. Keep ThemeToggle’s existing post-hydration synchronization,
ensuring the initial HTML class reflects a stored light preference and prevents
a flash.
- Around line 9-40: Extract the duplicated document theme class add/remove
sequence from the mount effect and toggleTheme into a shared helper, then call
that helper from both paths while preserving their existing state and
localStorage behavior.
In `@kits/peer-demo-showcase/apps/components/TiltCard.tsx`:
- Around line 45-56: Update the motion.div props in TiltCard so caller props are
spread before the component-managed values, then merge any caller-provided style
with rotateY, rotateX, and transformStyle while ensuring handleMouseMove and
handleMouseLeave remain active. Preserve non-conflicting caller props and
prevent them from overriding the tilt behavior.
In `@kits/peer-demo-showcase/apps/components/ui/ai-agent-pipeline.tsx`:
- Line 1: Replace the hardcoded hex/RGBA styling with the existing theme CSS
variables so the component responds to light and dark modes. Update
getStatusColor and all inline fill/stroke/background values in the pipeline, use
theme variables for WaveBackground gradient stopColor values, and replace
Navbar’s arbitrary hex background utility with a CSS-variable-backed Tailwind
token while preserving the existing visual roles.
- Around line 486-500: The stats footer in the component containing the error
prop must reflect failure state instead of always displaying success. Update the
API STATUS and LATENCY values near pipelinesExecuted so they use error when
present, showing an appropriate failure status and error-state latency while
preserving the existing 200 OK and 342ms values for successful, non-loading
executions.
In `@kits/peer-demo-showcase/apps/lib/session.ts`:
- Around line 10-23: The session implementation is process-local, so
authentication fails across runtimes, instances, and restarts. In
kits/peer-demo-showcase/apps/lib/session.ts#L10-L23, replace the
globalThis-backed Maps with the shared persistent store used by the application
or a stateless signed-cookie mechanism; in
kits/peer-demo-showcase/apps/proxy.ts#L5-L34, ensure proxy validation uses that
same shared/stateless mechanism and confirm its runtime compatibility; in
kits/peer-demo-showcase/apps/actions/auth.ts#L41-L71, persist tokens created by
createJudgeSession and createAdminSession to the same store or issue
self-verifying signed cookies.
In `@kits/peer-demo-showcase/apps/README.md`:
- Around line 113-147: Update the Quickstart Guide around the clone and
environment setup instructions to use the repository layout matching the kit
root declared in lamatic.config.ts. Replace the conflicting clone/navigation
commands with the canonical repository command, and instruct users to create
.env.local from the app directory so it resolves to the actual app environment
file rather than apps/apps/.env.local.
In `@kits/peer-demo-showcase/flows/judging-manager-flow.ts`:
- Around line 40-55: Route each orchestrate action to an explicit Tables CRUD
verb before assigning the result to the affected Tables node’s action: update
kits/peer-demo-showcase/flows/judging-manager-flow.ts lines 40-55 for
submit_score, list_judges, and add_judge; event-config-flow.ts lines 26-55 for
get_config and set_config; sponsors-manager-flow.ts lines 40-55 for upvote and
update_sponsor; and submissions-manager-flow.ts lines 42-55 for delete, list,
and add. Ensure unmapped actions retain the existing select fallback and each
affected node receives the mapped verb rather than the raw client action.
In `@kits/peer-demo-showcase/flows/showcase-submission-flow.ts`:
- Around line 221-244: Clear the boilerplate SELECT query from the insert
configuration in the dynamic node identified by tablesNode_942. Keep action set
to insert and preserve the existing data, tableName, and other configuration
values.
In `@kits/peer-demo-showcase/flows/submissions-manager-flow.ts`:
- Around line 29-33: Update the advance_schema for triggerNode_1’s API Request
to declare the upvotes field that tablesNode_1.data maps from
triggerNode_1.output.upvotes. Preserve the existing schema fields and use the
appropriate type consistent with the mapped upvote value.
In
`@kits/peer-demo-showcase/prompts/showcase-submission-flow_instructor-llmnode-517_system_0.md`:
- Around line 8-11: Update the sponsor_records section in the system prompt to
explicitly treat sponsor names and descriptions as untrusted reference data and
instruct the model to ignore any embedded commands or instructions. Match the
existing disclaimer used in
showcase-submission-flow_instructor-llmnode-297_system_0.md while preserving the
sponsor data’s reference-only purpose.
In `@kits/peer-demo-showcase/README.md`:
- Around line 149-152: Update the email configuration section in the README to
document the SMTP variables used by apps/actions/orchestrate.ts—SMTP_HOST,
SMTP_PORT, SMTP_USER, SMTP_PASS, and SMTP_FROM—and the optional
RESEND_ACCOUNT_EMAIL variable. Add a clear note that onboarding@resend.dev can
only deliver to the owning Resend account unless a verified sender/domain is
configured, and explain the required configuration for runtime delivery
branches.
- Around line 9-11: Update the Watch Demo badge link in the README to use the
existing Loom URL shown in the adjacent link, replacing the
YOUR_LOOM_VIDEO_LINK_HERE placeholder while preserving the badge presentation.
- Line 3: Update the Next.js version references in the README’s platform
description and the sections around the listed framework references from 15 to
16.2.10, matching the version pinned by the shipped package.json dependency.
Leave unrelated documentation unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 929b5ee2-7cbe-4c18-b034-8199488c214c
⛔ Files ignored due to path filters (8)
kits/peer-demo-showcase/apps/app/favicon.icois excluded by!**/*.icokits/peer-demo-showcase/apps/community-showcase/package-lock.jsonis excluded by!**/package-lock.jsonkits/peer-demo-showcase/apps/package-lock.jsonis excluded by!**/package-lock.jsonkits/peer-demo-showcase/apps/public/file.svgis excluded by!**/*.svgkits/peer-demo-showcase/apps/public/globe.svgis excluded by!**/*.svgkits/peer-demo-showcase/apps/public/next.svgis excluded by!**/*.svgkits/peer-demo-showcase/apps/public/vercel.svgis excluded by!**/*.svgkits/peer-demo-showcase/apps/public/window.svgis excluded by!**/*.svg
📒 Files selected for processing (53)
kits/peer-demo-showcase/.gitignorekits/peer-demo-showcase/README.mdkits/peer-demo-showcase/agent.mdkits/peer-demo-showcase/apps/.gitignorekits/peer-demo-showcase/apps/AGENTS.mdkits/peer-demo-showcase/apps/CLAUDE.mdkits/peer-demo-showcase/apps/README.mdkits/peer-demo-showcase/apps/actions/auth.tskits/peer-demo-showcase/apps/actions/orchestrate.tskits/peer-demo-showcase/apps/app/admin/login/page.tsxkits/peer-demo-showcase/apps/app/admin/page.tsxkits/peer-demo-showcase/apps/app/gallery/page.tsxkits/peer-demo-showcase/apps/app/globals.csskits/peer-demo-showcase/apps/app/judge/login/page.tsxkits/peer-demo-showcase/apps/app/judge/page.tsxkits/peer-demo-showcase/apps/app/layout.tsxkits/peer-demo-showcase/apps/app/page.tsxkits/peer-demo-showcase/apps/app/project/[id]/page.tsxkits/peer-demo-showcase/apps/community-showcase/desktop.htmlkits/peer-demo-showcase/apps/community-showcase/index.htmlkits/peer-demo-showcase/apps/community-showcase/mobile.htmlkits/peer-demo-showcase/apps/community-showcase/package.jsonkits/peer-demo-showcase/apps/components/CursorGlow.tsxkits/peer-demo-showcase/apps/components/Dropdown.tsxkits/peer-demo-showcase/apps/components/MagneticButton.tsxkits/peer-demo-showcase/apps/components/Navbar.tsxkits/peer-demo-showcase/apps/components/SmoothScroll.tsxkits/peer-demo-showcase/apps/components/SponsorMarquee.tsxkits/peer-demo-showcase/apps/components/ThemeToggle.tsxkits/peer-demo-showcase/apps/components/TiltCard.tsxkits/peer-demo-showcase/apps/components/WaveBackground.tsxkits/peer-demo-showcase/apps/components/ui/ai-agent-pipeline.tsxkits/peer-demo-showcase/apps/components/ui/gooey-text-morphing.tsxkits/peer-demo-showcase/apps/eslint.config.mjskits/peer-demo-showcase/apps/lib/lamatic-client.tskits/peer-demo-showcase/apps/lib/session.tskits/peer-demo-showcase/apps/lib/utils.tskits/peer-demo-showcase/apps/next.config.tskits/peer-demo-showcase/apps/package.jsonkits/peer-demo-showcase/apps/postcss.config.mjskits/peer-demo-showcase/apps/proxy.tskits/peer-demo-showcase/apps/tsconfig.jsonkits/peer-demo-showcase/constitutions/default.mdkits/peer-demo-showcase/flows/event-config-flow.tskits/peer-demo-showcase/flows/judging-manager-flow.tskits/peer-demo-showcase/flows/showcase-submission-flow.tskits/peer-demo-showcase/flows/sponsors-manager-flow.tskits/peer-demo-showcase/flows/submissions-manager-flow.tskits/peer-demo-showcase/lamatic.config.tskits/peer-demo-showcase/model-configs/showcase-submission-flow_instructor-llmnode-297_generative-model-name.tskits/peer-demo-showcase/model-configs/showcase-submission-flow_instructor-llmnode-517_generative-model-name.tskits/peer-demo-showcase/prompts/showcase-submission-flow_instructor-llmnode-297_system_0.mdkits/peer-demo-showcase/prompts/showcase-submission-flow_instructor-llmnode-517_system_0.md
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@kits/peer-demo-showcase/apps/.env.example`:
- Line 18: Replace the default ADMIN_PASSWORD value in
kits/peer-demo-showcase/apps/.env.example:18-18 and
kits/peer-demo-showcase/.env.example:18-18 with a conspicuous non-credential
placeholder, and update the app’s startup configuration validation to reject
unset, placeholder, or known default admin passwords.
- Line 4: Update the LAMATIC_API_URL value in the environment template to use
the same generic placeholder as kits/peer-demo-showcase/.env.example, rather
than the contributor-specific Lamatic host, so users configuring only the
credentials and IDs target the intended endpoint.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 0f091447-3ca4-4890-ac40-22416676030a
📒 Files selected for processing (3)
kits/peer-demo-showcase/.env.examplekits/peer-demo-showcase/apps/.env.examplekits/peer-demo-showcase/apps/.gitignore
Feat/peer demo showcase
…deRabbit docstring coverage threshold
docs(peer-demo-showcase): add complete JSDoc docstrings to satisfy Co…
…cope submissions data payload per action, use explicit action allowlist with fail-close fallback
fix(peer-demo-showcase): remove upvote from sponsor update routing, s…
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@kits/peer-demo-showcase/flows/sponsors-manager-flow.ts`:
- Line 44: Update the table payloads at
kits/peer-demo-showcase/flows/sponsors-manager-flow.ts:44-44 and
kits/peer-demo-showcase/flows/submissions-manager-flow.ts:44-44 to serialize
interpolated field values safely rather than hand-building JSON with raw values.
In the submissions flow, ensure upvotes is serialized as a numeric value, not a
quoted string; apply the corresponding safe serialization to all sponsor and
submission fields.
In `@kits/peer-demo-showcase/flows/submissions-manager-flow.ts`:
- Around line 47-48: Update the action mapping in submissions-manager-flow so
documented upvote and update_sponsor actions receive explicit handling with
their required where/data or mutation behavior, and prevent any other
unsupported action from falling through to select. Preserve the existing delete,
add, update_status, and read behavior while ensuring unrecognized actions are
rejected before tablesNode_1 executes.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 5adbdf63-961d-4d75-8036-8c51e27dd1a8
📒 Files selected for processing (2)
kits/peer-demo-showcase/flows/sponsors-manager-flow.tskits/peer-demo-showcase/flows/submissions-manager-flow.ts
docs(peer-demo-showcase): include SMTP_FROM in README email delivery …
…tes in submissions flow
fix(peer-demo-showcase): serialize upvotes as JSON number without quo…
… support multiple actions and improve query conditions
fix(peer-demo-showcase): enhance data handling in submissions flow to…
…utions to prevent injection vulnerabilities
fix(peer-demo-showcase): add input sanitization for Lamatic flow exec…
…rabilities in flow executions
fix(peer-demo-showcase): add ID validation to prevent injection vulne…
|
@coderabbitai summary |
✅ Action performedSummary regeneration triggered. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="Lamatic/AgentKit"
pr="295"
echo "== Pull request metadata =="
gh pr view "$pr" --repo "$repo" --json state,isDraft,mergeable,reviewDecision,statusCheckRollup,reviews \
--jq '{
state,
isDraft,
mergeable,
reviewDecision,
checks: [
.statusCheckRollup[]? |
{
name,
status,
conclusion: (.conclusion // "pending"),
workflowName: (.workflowName // null)
}
],
reviews: [
.reviews[]? |
{
author: .author.login,
state,
submittedAt
}
]
}'
echo
echo "== Unresolved review threads =="
gh api graphql \
-F owner="Lamatic" \
-F name="AgentKit" \
-F number="$pr" \
-f query='
query($owner: String!, $name: String!, $number: Int!) {
repository(owner: $owner, name: $name) {
pullRequest(number: $number) {
reviewThreads(first: 100) {
nodes {
isResolved
comments(first: 1) {
nodes {
author { login }
body
path
line
}
}
}
}
}
}
}' \
--jq '[
.data.repository.pullRequest.reviewThreads.nodes[]
| select(.isResolved == false)
| {
author: .comments.nodes[0].author.login,
path: .comments.nodes[0].path,
line: .comments.nodes[0].line,
body: .comments.nodes[0].body
}
]'Length of output: 12117
One additional check-rollup entry is shown as unnamed/pending, so GitHub does not expose enough information to identify it from the PR status output. Conclusion: validation is green and the branch can merge mechanically, but the PR remains blocked from approval by the active Changes Requested decision and the two unresolved review threads. |
|
@coderabbitai summary |
✅ Action performedSummary regeneration triggered. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai what requested change is still preventing this PR from being approved? I have addressed and resolved all previous CodeRabbit comments. Please point me to the exact file and line that still needs changes. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="Lamatic/AgentKit"
owner="${repo%%/*}"
name="${repo#*/}"
pr="295"
echo "== Pull-request review state =="
gh pr view "$pr" --repo "$repo" \
--json state,isDraft,mergeable,reviewDecision,headRefOid,reviews,statusCheckRollup \
--jq '{
state,
isDraft,
mergeable,
reviewDecision,
headRefOid,
reviews: [.reviews[]? | {
author: .author.login,
state,
submittedAt,
body
}],
checks: [.statusCheckRollup[]? | {
name,
status,
conclusion: (.conclusion // "pending")
}]
}'
echo
echo "== Unresolved review threads =="
gh api graphql \
-F owner="$owner" \
-F name="$name" \
-F number="$pr" \
-f query='
query($owner: String!, $name: String!, $number: Int!) {
repository(owner: $owner, name: $name) {
pullRequest(number: $number) {
reviewThreads(first: 100) {
nodes {
id
isResolved
isOutdated
path
line
originalLine
comments(first: 20) {
nodes {
author { login }
body
createdAt
url
path
line
originalLine
}
}
}
}
}
}
}' \
--jq '[
.data.repository.pullRequest.reviewThreads.nodes[]
| select(.isResolved == false)
| {
id,
isOutdated,
path,
line,
originalLine,
comments: [
.comments.nodes[] | {
author: .author.login,
body,
createdAt,
url,
path,
line,
originalLine
}
]
}
]'
echo
echo "== Candidate file map =="
fd -a -t f '^(orchestrate|sponsors-manager-flow|submissions-manager-flow)\.(ts|tsx)$' .Length of output: 61628
The approval is still blocked by a stale
Because GitHub marks that thread as outdated, those original line references do not establish that the current PR head needs another change in either flow file. The PR is mergeable and all three In short: there is no additional file/line I can point to as currently requiring a code change. The stale thread and the prior CodeRabbit “Changes Requested” decision need to be cleared before approval can proceed. |
PR Checklist
1. Select Contribution Type
kits/<category>/<kit-name>/)bundles/<bundle-name>/)templates/<template-name>/)2. General Requirements
kebab-caseand matches the flow IDREADME.md(purpose, setup, usage)3. File Structure (Check what applies)
config.jsonpresent with valid metadata (name, description, tags, steps, author, env keys)flows/<flow-name>/(where applicable) include:config.json(Lamatic flow export)inputs.jsonmeta.jsonREADME.md.env.examplewith placeholder values only (kits only)config.jsonnode graphs (changes via Lamatic Studio export)4. Validation
npm install && npm run devworks locally (kits: UI runs; bundles/templates: flows are valid)[kit] Add <name> for <use case>)AgentKit Challenge Submission
peer-demo-showcaseagentkit-challengeAI-Powered Hackathon Showcase & Sponsor Track Matcher Kit built with Next.js 15, Lamatic AI Engine, Framer Motion, and TailwindCSS.
kits/peer-demo-showcase(AI-powered “Peer Demo Showcase” + sponsor-track matcher)kits/peer-demo-showcase/README.mdkits/peer-demo-showcase/agent.mdkits/peer-demo-showcase/constitutions/default.mdkits/peer-demo-showcase/lamatic.config.tskits/peer-demo-showcase/.env.examplekits/peer-demo-showcase/.gitignorekits/peer-demo-showcase/appskits/peer-demo-showcase/apps/README.mdkits/peer-demo-showcase/apps/AGENTS.mdkits/peer-demo-showcase/apps/CLAUDE.mdkits/peer-demo-showcase/apps/.env.examplekits/peer-demo-showcase/apps/.gitignorekits/peer-demo-showcase/apps/tsconfig.jsonkits/peer-demo-showcase/apps/eslint.config.mjskits/peer-demo-showcase/apps/next.config.tskits/peer-demo-showcase/apps/postcss.config.mjskits/peer-demo-showcase/apps/package.jsonkits/peer-demo-showcase/apps/package-lock.jsonkits/peer-demo-showcase/apps/proxy.ts(route guards for/admin/*and/judge/*via signed session cookies)kits/peer-demo-showcase/apps/actions/auth.ts(admin + judge login/logout; cookie setup)kits/peer-demo-showcase/apps/actions/orchestrate.ts(submission/sponsor/judge orchestration + confirmation email sending)kits/peer-demo-showcase/apps/lib/lamatic-client.ts(Lamatic client + flow IDs)kits/peer-demo-showcase/apps/lib/session.ts(stateless signed session tokens)kits/peer-demo-showcase/apps/lib/utils.ts(cnhelper)kits/peer-demo-showcase/apps/app/layout.tsxkits/peer-demo-showcase/apps/globals.csskits/peer-demo-showcase/apps/app/page.tsx(submit-project wizard)kits/peer-demo-showcase/apps/app/gallery/page.tsx(public gallery, countdowns, winner mode, upvotes)kits/peer-demo-showcase/apps/app/project/[id]/page.tsx(project detail + upvote + resubmit)kits/peer-demo-showcase/apps/app/admin/login/page.tsxkits/peer-demo-showcase/apps/app/admin/page.tsx(admin console: sponsors, statuses/winners, judges, event config)kits/peer-demo-showcase/apps/app/judge/login/page.tsxkits/peer-demo-showcase/apps/app/judge/page.tsx(judge rubric scoring + inactivity logout)kits/peer-demo-showcase/apps/app/favicon.icokits/peer-demo-showcase/apps/components/Navbar.tsxkits/peer-demo-showcase/apps/components/ThemeToggle.tsxkits/peer-demo-showcase/apps/components/SmoothScroll.tsxkits/peer-demo-showcase/apps/components/CursorGlow.tsxkits/peer-demo-showcase/apps/components/MagneticButton.tsxkits/peer-demo-showcase/apps/components/TiltCard.tsxkits/peer-demo-showcase/apps/components/Dropdown.tsxkits/peer-demo-showcase/apps/components/SponsorMarquee.tsxkits/peer-demo-showcase/apps/components/WaveBackground.tsxkits/peer-demo-showcase/apps/components/ui/ai-agent-pipeline.tsxkits/peer-demo-showcase/apps/components/ui/gooey-text-morphing.tsxkits/peer-demo-showcase/apps/community-showcase/index.htmlkits/peer-demo-showcase/apps/community-showcase/desktop.htmlkits/peer-demo-showcase/apps/community-showcase/mobile.htmlkits/peer-demo-showcase/apps/community-showcase/package.jsonkits/peer-demo-showcase/apps/community-showcase/package-lock.jsonkits/peer-demo-showcase/apps/public/file.svgkits/peer-demo-showcase/apps/public/globe.svgkits/peer-demo-showcase/apps/public/next.svgkits/peer-demo-showcase/apps/public/vercel.svgkits/peer-demo-showcase/apps/public/window.svgkits/peer-demo-showcase/flows/)flow.jsoncheck: noflow.jsonfiles exist for this kit/anywhere in the repo.flows/*.ts)triggerNode,dynamicNode,responseNode, plus showcase-submission extrasmodel,select,monacoTextdefaultEdge,responseEdgeshowcase-submission-flow.tstriggerNodeaccepts an API request (GitHub URL + builder/email)model+monacoText+select) to extract project metadata and pick the best sponsor/breakoutdynamicNodeinserts intoshowcase_submissionsresponseNodereturns a structured JSON payload (project + match result)submissions-manager-flow.tstriggerNodeacceptsaction+ submission fieldsdynamicNodeperformsinsert/update/delete/selectagainstshowcase_submissionsbased onaction(includes upvotes/sponsor/status updates)responseNodereturnssubmissionsJSONsponsors-manager-flow.tstriggerNodeacceptsaction+ sponsor fieldsdynamicNodeperformsinsert/update/selectagainstsponsorsbased onactionresponseNodereturnssponsorsJSONjudging-manager-flow.tstriggerNodeaccepts judging actions + rubric/notesdynamicNodeperformsinsert(for scoring/judge add) orselect(for scores)responseNodereturnsscoresJSONevent-config-flow.tstriggerNodeacceptsaction/key/valuedynamicNodeupserts or selects fromevent_configresponseNodereturns config JSONkits/peer-demo-showcase/prompts/showcase-submission-flow_instructor-llmnode-297_system_0.mdkits/peer-demo-showcase/prompts/showcase-submission-flow_instructor-llmnode-517_system_0.mdkits/peer-demo-showcase/model-configs/showcase-submission-flow_instructor-llmnode-297_generative-model-name.tskits/peer-demo-showcase/model-configs/showcase-submission-flow_instructor-llmnode-517_generative-model-name.ts