Skip to content

Kanee18/Notes-app-desktop

Repository files navigation

NOTES-APP: A Desktop Task Management Application

License Python Flask

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.

About The Project

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.

Key Features:

  • 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

Tech Stack

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

Getting Started

Prerequisites

  • Python 3.8+
  • Git
  • Google Account (for Firebase)
  • Telegram Account (for Bot)
  • Groq API Key (for AI Assistant)

Installation

1. Clone the Repository

git clone https://github.com/Kanee18/Notes-app-desktop.git
cd Notes-app-desktop

2. Create Virtual Environment

# Create virtual environment
python -m venv .venv

# Activate (Windows)
.\.venv\Scripts\activate

# Activate (macOS/Linux)
source .venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

4. Set Up Firebase

  1. Go to Firebase Console
  2. Create a new project
  3. Enable Firestore Database
  4. Go to Project settings > Service accounts
  5. Click "Generate new private key"
  6. Rename the downloaded file to firebase-credentials.json
  7. Place it in the project root directory

5. Set Up Telegram Bot

  1. Open Telegram and search for @BotFather
  2. Send /newbot and follow the prompts
  3. Copy the API Token provided
  4. Get your Telegram User ID from @userinfobot

6. Create Settings File

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"
}

7. Set Groq API Key (Alternative Method)

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/


Running the Application

Option 1: Run All Services (Recommended)

Open 3 separate terminals and run:

Terminal 1 - API Server:

python api_server.py

Terminal 2 - Telegram Bot:

cd bot
python run_bot.py

Terminal 3 - Desktop App:

python note_app.py

Option 2: Run Desktop Only (Without Telegram Bot)

If you don't need Telegram notifications:

Terminal 1:

python api_server.py

Terminal 2:

python note_app.py

Project Structure

Notes-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)

Troubleshooting

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

License

This project is licensed under the MIT License.


Author

Kanee18

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors