From a33242120a28a29a620f3cfe627cbe2b1b4ae86c Mon Sep 17 00:00:00 2001 From: Eugene Lopin Date: Fri, 12 Dec 2025 10:15:56 -0500 Subject: [PATCH 1/2] Update README.md --- README.md | 46 ++++++++++++---------------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 1bc06dbb8..e09da15a4 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,20 @@ -# Agentic AI App Hackathon Template +"Skip the fluff. Get the wisdom." -Welcome! This repository is your starting point for the **Agentic AI App Hackathon**. It includes: +Transform hour-long podcasts into bite-sized insights you can consume in minutes. Our AI extracts the 20% that matters—giving you 80% of the value—so you can level up without the time commitment. -- A consistent folder structure -- An environment spec (`environment.yml` or `Dockerfile`) -- Documentation placeholders to explain your design and demo +Perfect for: -## 📋 Submission Checklist +Commuters who want to learn on-the-go +Content creators hunting for viral-worthy insights +Anyone who's tired of 3-hour episodes just to find 10 minutes of gold +Think: TikTok-length knowledge drops from your favorite podcasts—actionable, shareable, and scroll-stopping. -- [ ] All code in `src/` runs without errors -- [ ] `ARCHITECTURE.md` contains a clear diagram sketch and explanation -- [ ] `EXPLANATION.md` covers planning, tool use, memory, and limitations -- [ ] `DEMO.md` links to a 3–5 min video with timestamped highlights +Key messaging angles for TikTok/IG: +Speed: "Why spend 2 hours when you can get it in 5 minutes?" -## 🚀 Getting Started - -1. **Clone / Fork** this template. Very Important. Fork Name MUST be the same name as the teamn name - - -## 📂 Folder Layout - -![Folder Layout Diagram](images/folder-githb.png) - - - -## 🏅 Judging Criteria - -- **Technical Excellence ** - This criterion evaluates the robustness, functionality, and overall quality of the technical implementation. Judges will assess the code's efficiency, the absence of critical bugs, and the successful execution of the project's core features. - -- **Solution Architecture & Documentation ** - This focuses on the clarity, maintainability, and thoughtful design of the project's architecture. This includes assessing the organization and readability of the codebase, as well as the comprehensiveness and conciseness of documentation (e.g., GitHub README, inline comments) that enables others to understand and potentially reproduce or extend the solution. - -- **Innovative Gemini Integration ** - This criterion specifically assesses how effectively and creatively the Google Gemini API has been incorporated into the solution. Judges will look for novel applications, efficient use of Gemini's capabilities, and the impact it has on the project's functionality or user experience. You are welcome to use additional Google products. - -- **Societal Impact & Novelty ** - This evaluates the project's potential to address a meaningful problem, contribute positively to society, or offer a genuinely innovative and unique solution. Judges will consider the originality of the idea, its potential real‑world applicability, and its ability to solve a challenge in a new or impactful way. +FOMO solution: "Never miss the best insights from top podcasts again" +Creator tool: "Find clip-worthy moments instantly" +Smart consumption: "Learn smarter, not longer" From 7703db9a6d084ee3b7997c51612a21c79fab64ba Mon Sep 17 00:00:00 2001 From: Hugo Melo Date: Fri, 12 Dec 2025 10:35:07 -0500 Subject: [PATCH 2/2] scaffold react bun app --- .gitignore | 175 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 36 ++++++---- bun.lockb | Bin 0 -> 57082 bytes index.html | 12 ++++ index.ts | 1 + package.json | 22 +++++++ src/App.tsx | 8 +++ src/index.tsx | 5 ++ tsconfig.json | 27 ++++++++ vite.config.ts | 6 ++ 10 files changed, 281 insertions(+), 11 deletions(-) create mode 100644 .gitignore create mode 100755 bun.lockb create mode 100644 index.html create mode 100644 index.ts create mode 100644 package.json create mode 100644 src/App.tsx create mode 100644 src/index.tsx create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..9b1ee42e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/README.md b/README.md index e09da15a4..0336a2bf3 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,34 @@ -"Skip the fluff. Get the wisdom." +# PodVibe.fm + +> "Skip the fluff. Get the wisdom." Transform hour-long podcasts into bite-sized insights you can consume in minutes. Our AI extracts the 20% that matters—giving you 80% of the value—so you can level up without the time commitment. -Perfect for: +## Getting Started -Commuters who want to learn on-the-go -Content creators hunting for viral-worthy insights -Anyone who's tired of 3-hour episodes just to find 10 minutes of gold -Think: TikTok-length knowledge drops from your favorite podcasts—actionable, shareable, and scroll-stopping. +### Prerequisites + +- [Bun](https://bun.sh/) v1.0+ + +### Installation -Key messaging angles for TikTok/IG: +```bash +bun install +``` -Speed: "Why spend 2 hours when you can get it in 5 minutes?" +### Development -FOMO solution: "Never miss the best insights from top podcasts again" +```bash +bun run dev +``` -Creator tool: "Find clip-worthy moments instantly" +Opens at http://localhost:5173 -Smart consumption: "Learn smarter, not longer" +## About + +**Perfect for:** +- Commuters who want to learn on-the-go +- Content creators hunting for viral-worthy insights +- Anyone who's tired of 3-hour episodes just to find 10 minutes of gold + +Think: TikTok-length knowledge drops from your favorite podcasts—actionable, shareable, and scroll-stopping. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..71b77fe19c4fbff9d50a17ac6ed4cc04818a3b1f GIT binary patch literal 57082 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 + + + + + PodVibe.fm + + +
+ + + diff --git a/index.ts b/index.ts new file mode 100644 index 000000000..f67b2c645 --- /dev/null +++ b/index.ts @@ -0,0 +1 @@ +console.log("Hello via Bun!"); \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 000000000..037bb9f49 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "podvibe.fm", + "module": "index.ts", + "type": "module", + "scripts": { + "dev": "bunx --bun vite" + }, + "devDependencies": { + "@types/bun": "latest", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.2", + "vite": "5" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "react": "^19.2.3", + "react-dom": "^19.2.3" + } +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 000000000..8f4d20682 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,8 @@ +export function App() { + return ( +
+

PodVibe.fm

+

Skip the fluff. Get the wisdom.

+
+ ); +} diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 000000000..a942bc4bc --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,5 @@ +import { createRoot } from "react-dom/client"; +import { App } from "./App"; + +const root = createRoot(document.getElementById("root")!); +root.render(); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..238655f2c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + // Enable latest features + "lib": ["ESNext", "DOM"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 000000000..081c8d9f6 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; + +export default defineConfig({ + plugins: [react()], +});