A modern desktop application for managing notes and tasks, featuring a Kanban board, calendar view, real-time cloud synchronization with Firebase, AI assistant powered by Groq, and deadline notifications via a Telegram bot.
Notes-App is a comprehensive solution designed to help users, especially students, keep track of their tasks and deadlines efficiently. The application provides a clean, intuitive user interface with both a Kanban board for workflow visualization and a calendar for a clear overview of upcoming deadlines.
- Kanban Board: Organize tasks into "Upcoming" and "Completed" columns
- Calendar View: Full monthly calendar displaying all deadlines
- Ask with Kanee (AI Assistant): Chat with AI for homework help (supports math rendering)
- Real-time Cloud Sync: Task data synchronized with Google Firestore
- Telegram Bot Notifications: Automated reminders 24 hours before deadline
- Natural Language Input: Add tasks using everyday language
- Light & Dark Mode: Switch between themes
- System Tray Integration: Run in background, accessible from system tray
| Layer | Technology |
|---|---|
| Backend | Python, Flask, Flask-SocketIO |
| Desktop | pywebview, pystray |
| Frontend | HTML5, CSS3, JavaScript, FullCalendar.js, MathJax |
| Database | SQLite (local), Google Firestore (cloud) |
| AI | Groq API (Llama 3.3 70B) |
| Bot | Telegram Bot API |
- Python 3.8+
- Git
- Google Account (for Firebase)
- Telegram Account (for Bot)
- Groq API Key (for AI Assistant)
git clone https://github.com/Kanee18/Notes-app-desktop.git
cd Notes-app-desktop# Create virtual environment
python -m venv .venv
# Activate (Windows)
.\.venv\Scripts\activate
# Activate (macOS/Linux)
source .venv/bin/activatepip install -r requirements.txt- Go to Firebase Console
- Create a new project
- Enable Firestore Database
- Go to Project settings > Service accounts
- Click "Generate new private key"
- Rename the downloaded file to
firebase-credentials.json - Place it in the project root directory
- Open Telegram and search for
@BotFather - Send
/newbotand follow the prompts - Copy the API Token provided
- Get your Telegram User ID from
@userinfobot
Create settings.json in the project root:
{
"telegram_token": "YOUR_TELEGRAM_BOT_TOKEN",
"telegram_id": "YOUR_TELEGRAM_USER_ID",
"groq_api_key": "YOUR_GROQ_API_KEY"
}Instead of settings.json, you can use environment variable:
Windows (PowerShell):
$env:GROQ_API_KEY = "your_groq_api_key_here"macOS/Linux:
export GROQ_API_KEY="your_groq_api_key_here"Get your free Groq API key at: https://console.groq.com/
Open 3 separate terminals and run:
Terminal 1 - API Server:
python api_server.pyTerminal 2 - Telegram Bot:
cd bot
python run_bot.pyTerminal 3 - Desktop App:
python note_app.pyIf you don't need Telegram notifications:
Terminal 1:
python api_server.pyTerminal 2:
python note_app.pyNotes-app-desktop/
├── note_app.py # Desktop app entry point
├── api_server.py # Flask API server
├── app/
│ ├── config.py # Configuration paths
│ ├── utils.py # Utility functions
│ ├── core/
│ │ ├── database.py # SQLite local database
│ │ └── notifier.py # Background notification service
│ └── services/
│ └── firebase_service.py # Firestore cloud sync
├── bot/
│ ├── run_bot.py # Telegram bot runner
│ └── bot_logic.py # Bot message handlers
├── static/
│ ├── css/index.css # Application styles
│ └── js/script.js # Frontend logic
├── templates/
│ └── index.html # Main HTML template
├── firebase-credentials.json # Firebase credentials (gitignored)
├── settings.json # App settings (gitignored)
└── notes.db # Local SQLite database (gitignored)
| Issue | Solution |
|---|---|
| AI not responding | Check if GROQ_API_KEY is set or in settings.json |
| Firebase error | Ensure firebase-credentials.json exists in root |
| Notes not syncing | Click "Sync Data" button, check Telegram ID in Settings |
| App won't start | Make sure api_server.py is running first |
This project is licensed under the MIT License.
Kanee18
- GitHub: @Kanee18