Easy Notes is a full-stack web application built with FastAPI and Bootstrap, designed to help users create, manage, and enhance their note-taking experience with AI-powered smart features. The application provides a clean, intuitive interface for managing notes with advanced capabilities like predictive text and language translation.
- Create, Read, Update, Delete (CRUD): Full functionality for managing notes
- Important Flag: Option to mark notes as important for prioritization
- Responsive Design: Mobile-friendly interface built with Bootstrap
- Next Word Prediction: AI-powered suggestions for the next 3 words while typing
- Tab Key Integration: Quick word completion using the Tab key
- LSTM-Based Model: Utilizes a trained LSTM neural network for accurate word prediction
- English to Hindi Translation: Instant translation of note content
- Transformer-Based Model: Uses a fine-tuned transformer model for high-quality translations
- In-Place Translation: Translate content directly within the note editor or view
- FastAPI: Modern, fast web framework for building APIs
- Supabase: PostgreSQL database for data storage
- Pydantic: Data validation and settings management
- TensorFlow: For deep learning models powering AI features
- Transformers: For language translation capabilities
- HTML/CSS: Core web technologies
- Bootstrap 5: For responsive design and UI components
- JavaScript: For client-side interactivity and API calls
- Jinja2 Templates: Server-side rendering of HTML pages
-
Sentence Predictor:
- LSTM-based neural network
- Trained on text corpus for contextual word prediction
- Provides real-time suggestions during note composition
-
English-Hindi Translator:
- Fine-tuned transformer model
- Trained for English to Hindi translation
- Integrated directly into the note interface
easy-notes/
├── config/ # Configuration files
│ └── db.py # Database configuration
├── english_to_hindi_translator/ # Translation model files
├── models/ # Data models
│ └── note.py # Note model definition
├── routes/ # API routes
│ └── note.py # Note-related endpoints
├── schemas/ # Schema definitions
├── templates/ # HTML templates
│ └── index.html # Main application page
├── main.py # Application entry point
├── sentence_predictor.py # Next word prediction functionality
├── translator.py # Translation functionality
└── README.md # Project documentation
Endpoint | Method | Description |
---|---|---|
/ |
GET | Retrieve all notes |
/ |
POST | Create a new note |
/update/{note_id} |
PUT | Update an existing note |
/delete/{note_id} |
DELETE | Delete a note |
/predict |
POST | Get next word predictions |
/translate |
POST | Translate text from English to Hindi |
- Python 3.8+
- Node.js and npm (for Bootstrap dependencies)
- Git LFS (for handling large model files)
-
Clone the repository
git clone https://github.com/yourusername/easy-notes.git cd easy-notes
-
Set up a virtual environment
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install Python dependencies
pip install fastapi uvicorn jinja2 python-multipart supabase tensorflow transformers
-
Install frontend dependencies
npm install
-
Pull large model files using Git LFS
git lfs pull
-
Run the application
uvicorn main:app --reload
-
Access the application Open your browser and navigate to
http://127.0.0.1:8000
- Fill in the Title, Description, and Content fields
- Optionally check "Mark as Important" to highlight the note
- Click "Save Note" to create your note
- Start typing in the Content field
- The system will suggest the next 3 words as you type
- Press Tab to accept the suggestion
- Type or select the note content you want to translate
- Click the "Translate" button below the content field
- The translated text will appear below the original content
- Use the "Edit" button to modify an existing note
- Use the "Delete" button to remove a note (requires confirmation)
- The sentence prediction model was trained on a text corpus using TensorFlow
- The English to Hindi translation model is a fine-tuned transformer model
The application uses Supabase as its database backend. The database schema includes a "Notes" table with the following fields:
- id: UUID (primary key)
- Title: String
- description: String
- content: String
- important: Boolean
- User authentication and personal note collections
- Additional language support for translation
- Rich text editing for notes
- Tags and categories for better organization
- Export functionality for notes (PDF, etc.)
- Dark mode support
- (@sanatren)