diff --git a/README.md b/README.md
index 622a55d..5cd5097 100644
--- a/README.md
+++ b/README.md
@@ -21,13 +21,14 @@ Implemented:
Todo:
-- Auto migration of meeting files (incase of format changes)
+- Markdown formatting
+- Auto generate notes when recording is stopped
+- Different note templates
Later:
- Cool recording indicator (dancing bars)
- Connecting to your Google calendar
-- Different note templates
- AI chat for asking questions about a meeting
- Ability to use different models
- Ability to use different STT providers
diff --git a/landing-page/.gitignore b/landing-page/.gitignore
new file mode 100644
index 0000000..f650315
--- /dev/null
+++ b/landing-page/.gitignore
@@ -0,0 +1,27 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# env files
+.env*
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
\ No newline at end of file
diff --git a/landing-page/app/components/community.tsx b/landing-page/app/components/community.tsx
new file mode 100644
index 0000000..7567e22
--- /dev/null
+++ b/landing-page/app/components/community.tsx
@@ -0,0 +1,68 @@
+import { Button } from "@/components/ui/button"
+import { Card, CardContent } from "@/components/ui/card"
+import { Star, GitFork, Users, Heart } from "lucide-react"
+
+export default function Community() {
+ return (
+
+
+
+
Join the Open-Source Community
+
+ Meetingnotes is built by the community for the community. Star us on GitHub, contribute features, or report
+ issues.
+
+
+
+
+
+
+
+
1.2k
+
GitHub Stars
+
+
+
+
+
+
+
180
+
Forks
+
+
+
+
+
+
+
50+
+
Contributors
+
+
+
+
+
+
+
+
+
+
+
+
Help Build the Future
+
+ Add integrations, templates, or custom models! Every contribution makes Meetingnotes better for everyone.
+
+
+ "As an open-source project, Meetingnotes is transparent and customizable—perfect for privacy-focused users."
+
+ – Developer & Contributor
+
+
+
+ )
+}
diff --git a/landing-page/app/components/features.tsx b/landing-page/app/components/features.tsx
new file mode 100644
index 0000000..250af79
--- /dev/null
+++ b/landing-page/app/components/features.tsx
@@ -0,0 +1,78 @@
+import { Card, CardContent } from "@/components/ui/card"
+import { Mic, Lightbulb, Settings, FolderOpen } from "lucide-react"
+
+export default function Features() {
+ const features = [
+ {
+ icon: ,
+ title: "Live Transcription",
+ description:
+ "Records mic and system audio using Deepgram for real-time transcripts. No meeting bots required—transcribe directly from your computer's audio.",
+ image: "/placeholder.svg?height=200&width=300",
+ },
+ {
+ icon: ,
+ title: "AI-Enhanced Notes",
+ description:
+ "Generates summaries and highlights from transcripts plus your manual notes, powered by OpenAI. Get intelligent insights from every meeting.",
+ image: "/placeholder.svg?height=200&width=300",
+ },
+ {
+ icon: ,
+ title: "Customization & Privacy",
+ description:
+ "Edit system prompts, add personal blurbs, and store everything locally. Use your own API keys for complete control and privacy.",
+ image: "/placeholder.svg?height=200&width=300",
+ },
+ {
+ icon: ,
+ title: "Easy Management",
+ description:
+ "Search, delete, copy notes/transcripts, and auto-update the app. Organize your meeting history with powerful management tools.",
+ image: "/placeholder.svg?height=200&width=300",
+ },
+ ]
+
+ return (
+
+
+
+
Powerful Features, All Free and Open Source
+
+ Meetingnotes handles your meeting notes effortlessly, from live transcription to AI-generated summaries.
+ Customize it to fit your workflow, and contribute to make it even better.
+
+
+
+
+ {features.map((feature, index) => (
+
+
+
+
{feature.icon}
+
+
{feature.title}
+
{feature.description}
+
+
+
+
+
+ ))}
+
+
+
+
Coming Soon
+
+ Google Calendar integration, note templates, AI chat for questions, and more integrations (email, Slack).
+
+
Contribute on GitHub to help build these features!
+
+
+
+ )
+}
diff --git a/landing-page/app/components/final-cta.tsx b/landing-page/app/components/final-cta.tsx
new file mode 100644
index 0000000..79084b9
--- /dev/null
+++ b/landing-page/app/components/final-cta.tsx
@@ -0,0 +1,60 @@
+import { Button } from "@/components/ui/button"
+import { Download, Github, ArrowRight } from "lucide-react"
+
+export default function FinalCTA() {
+ return (
+
+
+
+ Ready for Smarter,
+
+ Free Meeting Notes?
+
+
+
+ Download Meetingnotes today and experience AI-powered notes without the cost. It's open source, so make it
+ your own.
+
+
+
+
+
+
+
+
+
+
100% Free Forever
+
+ No hidden costs, no subscriptions, no premium tiers. Just free, powerful meeting notes.
+
+
+
+
+
Privacy First
+
+ Your data never leaves your device. Complete control over your meeting notes and transcripts.
+
+
+
+
+
Open Source
+
+ Transparent, customizable, and community-driven. Contribute and help shape the future.
+
+
+
+
+
+ )
+}
diff --git a/landing-page/app/components/footer.tsx b/landing-page/app/components/footer.tsx
new file mode 100644
index 0000000..8ddddb7
--- /dev/null
+++ b/landing-page/app/components/footer.tsx
@@ -0,0 +1,137 @@
+import { Github, Twitter, Mail, Heart } from "lucide-react"
+
+export default function Footer() {
+ return (
+
+ )
+}
diff --git a/landing-page/app/components/header.tsx b/landing-page/app/components/header.tsx
new file mode 100644
index 0000000..4d6c5fc
--- /dev/null
+++ b/landing-page/app/components/header.tsx
@@ -0,0 +1,50 @@
+import { Button } from "@/components/ui/button"
+import { Github, Download } from "lucide-react"
+
+export default function Header() {
+ return (
+
+
+
+
+ MN
+
+ Meetingnotes
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/landing-page/app/components/hero.tsx b/landing-page/app/components/hero.tsx
new file mode 100644
index 0000000..11d9214
--- /dev/null
+++ b/landing-page/app/components/hero.tsx
@@ -0,0 +1,95 @@
+import { Button } from "@/components/ui/button"
+import { Badge } from "@/components/ui/badge"
+import { Download, Github, Star, Shield, Code, Zap } from "lucide-react"
+
+export default function Hero() {
+ return (
+
+
+
+ ✨ Open-Source Alternative to Granola – Completely Free!
+
+
+
+ The Free, Open-Source
+
+ AI Notetaker for Busy
+
+ Engineers
+
+
+
+ Meetingnotes records your meetings, creates live transcripts, and generates enhanced notes using AI—all on
+ your device, with zero costs. Bring your OpenAI API key.
+
+
+
+
+
+ 100% Free
+ No subscriptions, ever
+
+
+
+ 100% Private
+ All data stored locally
+
+
+
+ 100% Open Source
+ Contribute on GitHub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Demo Video
+
See Meetingnotes in action
+
+
+
+ Watch how Meetingnotes transcribes meetings and generates AI-enhanced notes in real-time
+
+
+
+
+
+
+
+ 1.2k stars on GitHub
+
+ •
+ 500+ downloads
+ •
+ 50+ contributors
+
+
+
+ )
+}
diff --git a/landing-page/app/components/how-it-works.tsx b/landing-page/app/components/how-it-works.tsx
new file mode 100644
index 0000000..6d092ba
--- /dev/null
+++ b/landing-page/app/components/how-it-works.tsx
@@ -0,0 +1,67 @@
+import { Card, CardContent } from "@/components/ui/card"
+import { Download, Key, Play, FileText } from "lucide-react"
+
+export default function HowItWorks() {
+ const steps = [
+ {
+ number: "01",
+ icon: ,
+ title: "Download & Setup",
+ description:
+ "Download and install on macOS. Enter your Deepgram and OpenAI API keys (stored securely on-device).",
+ },
+ {
+ number: "02",
+ icon: ,
+ title: "Start Recording",
+ description: "Start a meeting—Meetingnotes records audio and shows a live transcript in real-time.",
+ },
+ {
+ number: "03",
+ icon: ,
+ title: "Add Your Notes",
+ description: "Add your own notes during the call to complement the automatic transcription.",
+ },
+ {
+ number: "04",
+ icon: ,
+ title: "Get AI Summary",
+ description: "End the meeting—AI generates enhanced notes instantly. Edit, copy, or search later.",
+ },
+ ]
+
+ return (
+
+
+
+
How meetingnotes Works
+
+ Get started in minutes with our simple, privacy-first approach to meeting notes.
+
+
+
+
+ {steps.map((step, index) => (
+
+
+
{step.number}
+
+ {step.icon}
+
+
{step.title}
+
{step.description}
+
+
+ ))}
+
+
+
+
+ "meetingnotes saves me hours every week—best part? It's free and open source!"
+
+ – Open-Source Contributor
+
+
+
+ )
+}
diff --git a/landing-page/app/components/pricing.tsx b/landing-page/app/components/pricing.tsx
new file mode 100644
index 0000000..d60bacf
--- /dev/null
+++ b/landing-page/app/components/pricing.tsx
@@ -0,0 +1,140 @@
+import { Card, CardContent } from "@/components/ui/card"
+import { Button } from "@/components/ui/button"
+import { Check, DollarSign, Key, Shield } from "lucide-react"
+
+export default function Pricing() {
+ return (
+
+
+
+
Pricing That Makes Sense
+
+ No subscriptions, no hidden fees, no premium tiers. Just bring your own API keys and enjoy unlimited
+ AI-powered meeting notes.
+
+
+
+
+
+
+ ✨ COMPLETELY FREE FOREVER
+
+
+
+
+
$0
+
Forever and always
+
+
+
+
+
What's Included
+
+
+
+ Unlimited meeting recordings
+
+
+
+ Real-time AI transcription
+
+
+
+ AI-enhanced meeting summaries
+
+
+
+ Complete data privacy (local storage)
+
+
+
+ Full source code access
+
+
+
+ Customizable AI prompts
+
+
+
+ Regular updates and improvements
+
+
+
+
+
+
How It Works
+
+
+
+
+
Bring Your Own API Keys
+
+ Use your Deepgram and OpenAI API keys. Pay only for what you use, directly to the providers.
+
+
+
+
+
+
+
+
Your Keys, Your Control
+
+ API keys are stored securely on your device. We never see or store your credentials.
+
+
+
+
+
+
+
+
Typical Costs
+
+ ~$0.28/hour using Deepgram Nova-3 and GPT-4o-mini. Pay only for what you use, no markup or
+ subscriptions.
+
+
+
+
+
+
+
+
+
Compare to Alternatives
+
+
+
Meetingnotes
+
$0 + API costs
+
~$0.28/hour
+
+
+
Granola
+
$18/month
+
Subscription required
+
+
+
Fathom
+
$15/month
+
Limited features
+
+
+
Fireflies
+
$10/month
+
Usage limits
+
+
+
+
+
+
+
+ No credit card required • No account needed • No data collection
+
{children}
+
+ )
+}
diff --git a/landing-page/app/page.tsx b/landing-page/app/page.tsx
new file mode 100644
index 0000000..7c9dbd6
--- /dev/null
+++ b/landing-page/app/page.tsx
@@ -0,0 +1,25 @@
+import Header from "./components/header"
+import Hero from "./components/hero"
+import Features from "./components/features"
+import HowItWorks from "./components/how-it-works"
+import Privacy from "./components/privacy"
+import Pricing from "./components/pricing"
+import Community from "./components/community"
+import FinalCTA from "./components/final-cta"
+import Footer from "./components/footer"
+
+export default function Home() {
+ return (
+