Automate your meeting notes and actions—privately!
No more scrambling to remember who promised what. This full-stack, AI-powered solution securely transcribes meeting audio, generates smart summaries, extracts action items and decisions, and allows you to schedule follow-ups in your own Nextcloud calendar.
Your data stays on your infrastructure—never sent to Google or Microsoft.
- 🎙️ Audio Transcription: Uses Whisper for accurate, fast meeting transcription.
- 🧠 Automatic Summarization: Get concise meeting summaries with NLTK & Sumy.
- ✅ Action Item & Decision Extraction: AI highlights “who will do what, by when.”
- 📅 Nextcloud Calendar Integration: Seamlessly turns action items into private calendar events.
- 🌐 Modern React Dashboard: Fast, responsive UI with Vite & Tailwind CSS.
- 📤 RESTful API: For audio and JSON transcript processing.
- 🧪 Full Testing Coverage: Vitest + Playwright.
- 🔒 Zero Vendor Lock-in: No Google, no Microsoft, no cloud lock.
Full details: See
setup_instructions.md.
git clone https://github.com/emorse224/meeting-summary-dashboard.gitcd backend
python -m venv venv
venv\Scripts�ctivate # On Windows
source venv/bin/activate # On Mac/Linux
pip install -r requirements.txt
python run.pycd frontend
npm install
npm start- Frontend runs at http://localhost:3000
- Backend runs at http://localhost:5000
docker-compose up --build- Frontend: http://localhost:5173
- Backend: http://localhost:5000
-
Backend: Place your Nextcloud credentials in
~/.app_secrets/env.json:{ "NEXTCLOUD_URL": "https://yourdomain/remote.php/dav", "NEXTCLOUD_USERNAME": "your_username", "NEXTCLOUD_PASSWORD": "your_password_or_app_password" } -
Use app passwords if you have Nextcloud 2FA.
-
.envfile for Whisper, Nexcloud, etc.
Your actions, your calendar, your privacy.
- Action items auto-create private calendar events.
- Works with any CalDAV-compatible client (iOS, Android, Outlook, Thunderbird).
- Setup: Find your CalDAV link (Nextcloud Calendar > Settings > Info), add to
env.json, restart backend.
POST /process-audio
Content-Type: multipart/form-data
(audio file as 'audio' field)Response:
{ "transcript": "...", "entities": [] }POST /process-json
Content-Type: application/json
{ "transcript": "...", "entities": [] }Response:
{ "summary": [...], "actions": [...], "decisions": [...] }POST /api/schedule-actions
Content-Type: application/json
{
"actions": [
{
"include": true,
"datetime": "YYYY-MM-DDTHH:MM",
"text": "Owner will do something",
"owner": "Owner Name"
}
]
}Click to expand
frontend/
public/
src/
App.jsx
components/
AudioUploadForm.jsx
CalendarEventForm.jsx
DecisionsPanel.jsx
ErrorBoundary.jsx
NextcloudConnect.jsx
ReviewPanel.jsx
SummaryPanel.jsx
TranscriptPanel.jsx
hooks/
UseMeetingState.jsx
utils/
dateUtils.js
tests/
unit/
integration/
e2e/
index.js
index.css
setupTests.js
tailwind.config.js
postcss.config.js
vite.config.js
package.json
backend/
run.py
app/
__init__.py
routes/
audio_routes.py
json_routes.py
services/
audio_processor.py
calendar_integration.py
llm_utils.py
nlp_analysis.py
utils/
entity_utils.py
logger.py
logging_utils.py
nextcloud_utils.py
transcripts/
logs/
uploads/
tests/
- Vitest for frontend/unit/integration
- Playwright for end-to-end
- Coverage >95%
- Run all tests:
npm test
- Speaker diarization (who spoke when)
- User authentication
- Google/Microsoft Calendar support (optional)
This project is licensed under GNU GPLv3.
- Check backend logs at
backend/logs/server.log - Open an issue or submit a PR
- Nextcloud help: Nextcloud Docs
Enjoy secure, private, AI-powered meeting management!