Skip to content

NoteSpark: An intelligent notes app that turns your keywords into fully-formed, structured notes using the power of Google's Gemini AI.

Notifications You must be signed in to change notification settings

ByteMeShiv/NoteSpark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NoteSpark ⚡

NoteSpark is a smart, minimal notes application built with Django. It goes beyond a simple notepad by integrating Google's Gemini API, allowing you to generate detailed, structured notes from just a few keywords.

This app serves as a powerful personal knowledge base, a writing assistant, and a demonstration of how to integrate modern AI into a classic full-stack web application.

Core Features

  • Full CRUD Functionality: Create, read, update, and delete notes.
  • AI-Powered Content Generation: Uses the Google Gemini API to generate rich, formatted notes directly from your title or keywords.
  • Markdown Rendering: Write in Markdown and have it beautifully rendered as HTML on the detail page.
  • PDF Export: Download any note as a PDF document for offline use or sharing.
  • Responsive UI: A clean, mobile-friendly interface built with Bootstrap and custom CSS.
  • Dynamic Loader: A simple JavaScript loader provides user feedback (and funny quotes) while waiting for the AI to respond.

Tech Stack

  • Backend: Python, Django
  • AI: Google Gemini API (google-generativeai)
  • Frontend: HTML, Bootstrap 5, CSS, vanilla JavaScript
  • Database: SQLite3 (development)
  • Key Libraries:
    • xhtml2pdf (for PDF generation)
    • markdown (for template filtering)
    • python-dotenv (for API key management)

Local Setup & Installation

Follow these steps to get the project running on your local machine.

  1. Clone the Repository:

    git clone https://your-repo-url/notespark.git
    cd notespark
  2. Create and Activate a Virtual Environment:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install Dependencies:

    pip install -r requirements.txt

    (Note: You may need to create a requirements.txt file first: pip freeze > requirements.txt)

  4. Set Up Environment Variables:

    • Create a file named .env in the root project directory (where manage.py is).
    • Add your Gemini API key to this file:
      GOOGLE_API_KEY="YOUR_API_KEY_HERE"
  5. Run Database Migrations:

    python manage.py migrate
  6. Run the Development Server:

    python manage.py runserver

    Your app will be live at http://127.0.0.1:8000/.

Future Roadmap

This project is built to grow. Here's a look at what's planned next:

v2.0: Polish & Utility

  • Secure Authentication: Implement Django's built-in auth system to add user login/logout. All notes will be private to the user who created them.
  • Rich Text Editor: Replace the plain <textarea> with a WYSIWYG editor like django-ckeditor for a friendlier editing experience.
  • Note Sharing: Add a "Share" button to generate a secret, public URL (using UUIDs) for read-only note sharing.
  • QR Code Sharing: Alongside the share link, generate a downloadable QR code for easy desktop-to-mobile sharing.
  • Tagging System: Implement a ManyToManyField to add tags to notes (e.g., "work," "python") and filter by them.

v3.0: Advanced AI & "Next-Gen" Features

  • AI Tag Suggester: Use the Gemini API to automatically suggest relevant tags for a note based on its content.
  • Semantic Search: Integrate PostgreSQL with pgvector to create embeddings for each note, enabling a search bar that finds notes by meaning, not just keywords.
  • Decoupled Frontend (Streaming): Re-architect the frontend using JavaScript (like React or Vue) and a Django REST Framework (DRF) backend to enable live, word-by-word text streaming from the AI.

About

NoteSpark: An intelligent notes app that turns your keywords into fully-formed, structured notes using the power of Google's Gemini AI.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published