Skip to content

axixatechnologies/MinuteMate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 

Repository files navigation

βœ… πŸ“Œ Project Name:

MinuteMate : Your AI buddy for perfect meeting minutes


βœ… 🎯 Problem Solved

  • User Google Meet ya Zoom mein live baat kar rahe hain.

  • Flask web app mein login karke woh meeting browser tab ke audio ko screen share permission ke saath record karenge.

  • Recording stop hone par:

    1. Audio server par save hoga.
    2. Audio β†’ Text: Speech-to-Text API se transcript.
    3. Transcript β†’ Gemini AI se clean summary + action items.
    4. DB mein meeting record store hoga: show, delete, download options.

βœ… βš™οΈ Tech Stack (Layer-wise)

Layer Stack
🌐 Frontend HTML, Tailwind CSS/Bootstrap, Vanilla JS, Jinja2 (Flask)
πŸŽ™οΈ Audio JS Web API: getDisplayMedia + MediaRecorder
🐍 Backend Python Flask 3.x, Flask-Login, Flask-SQLAlchemy
πŸ”— Auth Flask-Login + hashed passwords
πŸ—£οΈ STT Google Cloud Speech-to-Text OR Whisper (local)
🧠 AI Gemini AI (google-generativeai Python SDK)
πŸ—„οΈ Database MySQL (users, meetings, files)
πŸ—ƒοΈ Storage Audio files: /recordings/ folder on server
πŸ“„ Export .txt or .pdf with pdfkit (optional)
πŸ“¦ Env .env for API keys (Gemini, Google STT)

βœ… πŸ“‚ Folder Structure

meeting-notes-app/
β”‚
β”œβ”€β”€ app.py               # Flask entry point
β”œβ”€β”€ models.py            # SQLAlchemy DB models
β”œβ”€β”€ auth.py              # Login/signup logic
β”œβ”€β”€ templates/           # Jinja2 templates: login, dashboard, detail
β”œβ”€β”€ static/              # JS (audio capture), CSS
β”œβ”€β”€ recordings/          # Uploaded meeting audio files
β”œβ”€β”€ transcripts/         # Saved transcript text
β”œβ”€β”€ .env                 # API keys
β”œβ”€β”€ requirements.txt
└── README.md

βœ… πŸ“œ Database Schema β€” MySQL

πŸ”‘ Table: users

Column Name Type Details
id INT, PK, AUTO_INC
name VARCHAR(255)
email VARCHAR(255), UNIQUE
password_hash VARCHAR(255) Hashed password
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

πŸ”‘ Table: meetings

Column Name Type Details
id INT, PK, AUTO_INC
user_id INT, FK β†’ users.id
title VARCHAR(255) β€œTeam Sync - 2025-06-30”
audio_file VARCHAR(255) Path to saved audio file
transcript LONGTEXT Full transcribed text
summary TEXT Gemini summary
action_items JSON Gemini action items as JSON
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

βœ… πŸ—‚οΈ Key Modules Breakdown

βœ… 1️⃣ User Authentication

  • auth.py

    • /signup: Name, Email, Password β†’ hashed store.
    • /login: Email + Password check.
    • /logout: Session clear.
  • Flask-Login manages session.

  • Protect routes: @login_required.


βœ… 2️⃣ Meeting Dashboard

  • /dashboard:

    • Show list of old meetings: | Title | Date | View | Download | Delete |
    • β€œNew Meeting Note” button β†’ triggers capture.

βœ… 3️⃣ New Meeting Flow

Step 1: Click β€œStart New Meeting Note”. Step 2: JS calls:

navigator.mediaDevices.getDisplayMedia({ audio: true, video: true })

User selects tab/window β†’ mic audio shared.

Step 3: MediaRecorder records audio:

const recorder = new MediaRecorder(stream, { mimeType: 'audio/webm' });
recorder.ondataavailable = (e) => sendChunk(e.data);

Step 4: Stop:

  • Stop button β†’ all chunks merge β†’ send to Flask /upload.

βœ… 4️⃣ Audio Upload Endpoint

  • /upload_audio: POST route

    • Receives audio blob.
    • Saves file to /recordings/meeting-xyz.webm.

βœ… 5️⃣ Transcription Module

  • Flask:

    • Pass saved audio to Google Speech-to-Text API OR
    • Local Whisper model (whisper Python lib).
  • Result: Plain text transcript.


βœ… 6️⃣ Gemini Summarization

  • Gemini API call:

    You are a smart meeting assistant.
    Given these meeting notes:
    """ ... """
    Tasks:
    1. Write a short summary (<=100 words).
    2. List clear action items (Who, What, When).
    
  • Save:

    • Summary β†’ DB field.
    • Action Items β†’ JSON column.

βœ… 7️⃣ Meeting Viewer

  • /meeting/<id>: Show page

    • Title
    • Summary
    • Action Items (formatted list)
    • Link to download .txt or .pdf.

βœ… 8️⃣ Delete Meeting

  • /delete/<id>: Deletes:

    • DB record.
    • Audio/transcript files.

βœ… πŸ“Š Flow Diagram

[Browser]
    ↓ Share Tab + Mic (getDisplayMedia)
    ↓ MediaRecorder β†’ audio blob
    ↓ POST /upload_audio

[Flask Server]
    β†’ Save file
    β†’ Transcribe (STT)
    β†’ Prompt Gemini
    β†’ Store summary + actions in DB
    β†’ Show on dashboard

βœ… πŸ” Security Notes

  • Store audio files safely, cleanup old files.
  • Hash passwords.
  • Use HTTPS when deploying.

βœ… πŸ“œ Example Requirements.txt

Flask
Flask-Login
Flask-SQLAlchemy
python-dotenv
google-generativeai
google-cloud-speech
whisper
mysqlclient
pdfkit (optional)

About

Your AI buddy for perfect meeting minutes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published