A modern, distraction-free note-taking web application built with FastAPI, MongoDB, and Bootstrap. Designed specifically for students to organize their academic life efficiently.
- User Authentication: Secure JWT-based authentication with registration and login
- Email Verification: 6-digit code verification system for account security
- Rich Note Creation: Create notes with titles, content, tags, and markdown formatting
- Folder Organization: Organize notes into color-coded folders
- To-Do Integration: Add task lists directly within notes
- Important Notes: Mark crucial notes for quick access
- Dark Mode: Toggle between light and dark themes
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Modern Bootstrap Design: Clean, professional interface
- Rich Text Editor: Basic formatting (bold, italic, underline, links)
- Interactive Elements: Hover effects, smooth transitions, and animations
- Accessibility: Keyboard navigation and screen reader support
- Print-Friendly: Optimized for printing notes
- Quick Stats Dashboard: Overview of notes, folders, and progress
- Tag System: Categorize notes with custom tags
- Search & Filter: Find notes quickly (coming soon)
- Calendar Integration: Sync with Google Calendar (placeholder)
- Image Upload: Add images to notes (coming soon)
- Backend: FastAPI (Python)
- Database: MongoDB
- Frontend: Bootstrap 5 + Jinja2 Templates
- Authentication: JWT with bcrypt password hashing
- Styling: Custom CSS with dark mode support
- Icons: Bootstrap Icons
- Python 3.8+
- MongoDB (local or cloud)
- pip (Python package manager)
-
Clone the repository
git clone <repository-url> cd HelloNotes
-
Install dependencies
pip install -r requirements.txt
-
Configure environment variables Create a
.envfile in the root directory:MONGO_URI=your_mongodb_connection_string SECRET_KEY=your-secret-key-here ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30 DATABASE_NAME=hellonotes # Email Configuration (for Gmail) MAIL_USERNAME=your-email@gmail.com MAIL_PASSWORD=your-app-password MAIL_FROM=your-email@gmail.com
Email Setup Instructions:
- For Gmail, you need to:
- Enable 2-factor authentication on your Google account
- Generate an App Password (not your regular password)
- Use the App Password in
MAIL_PASSWORD
- For other email providers, check their SMTP settings
- For Gmail, you need to:
-
Run the application
uvicorn main:app --reload --host 0.0.0.0 --port 8000
-
Access the application Open your browser and navigate to
http://localhost:8000
HelloNotes/
βββ config/
β βββ db.py # Database configuration
β βββ settings.py # Application settings
βββ models/
β βββ user.py # User data models
β βββ note.py # Note data models
β βββ folder.py # Folder data models
βββ routes/
β βββ auth.py # Authentication routes
β βββ note.py # Note management routes
β βββ folder.py # Folder management routes
βββ templates/
β βββ base.html # Base template
β βββ landing.html # Landing page
β βββ dashboard.html # Main dashboard
β βββ auth/ # Authentication templates
β βββ notes/ # Note templates
β βββ folders/ # Folder templates
βββ static/
β βββ styles.css # Custom CSS
β βββ uploads/ # File uploads directory
βββ utils/
β βββ auth.py # Authentication utilities
βββ main.py # Main application file
βββ requirements.txt # Python dependencies
βββ README.md # This file
The application uses MongoDB. You can use:
- MongoDB Atlas (cloud): Free tier available
- Local MongoDB: Install and run locally
- Docker: Use MongoDB container
- Change the
SECRET_KEYin production - Use HTTPS in production
- Configure proper CORS settings
- Set up rate limiting
- Set up a production server (AWS, DigitalOcean, Heroku, etc.)
- Install dependencies:
pip install -r requirements.txt - Configure environment variables
- Set up a reverse proxy (Nginx recommended)
- Use a production ASGI server (Gunicorn + Uvicorn)
- Set up SSL certificates
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]- JWT Authentication: Secure token-based authentication
- Password Hashing: bcrypt for secure password storage
- Input Validation: Pydantic models for data validation
- SQL Injection Protection: MongoDB with parameterized queries
- XSS Protection: Jinja2 auto-escaping
- CSRF Protection: Form-based protection
{
"_id": "ObjectId",
"email": "string",
"username": "string",
"hashed_password": "string",
"created_at": "datetime",
"is_active": "boolean"
}{
"_id": "ObjectId",
"user_id": "string",
"title": "string",
"content": "string",
"folder_id": "string",
"tags": ["string"],
"is_important": "boolean",
"todos": [
{
"id": "string",
"text": "string",
"completed": "boolean",
"created_at": "datetime"
}
],
"images": ["string"],
"links": ["string"],
"created_at": "datetime",
"updated_at": "datetime"
}{
"_id": "ObjectId",
"user_id": "string",
"name": "string",
"description": "string",
"color": "string",
"created_at": "datetime",
"updated_at": "datetime"
}# Install test dependencies
pip install pytest pytest-asyncio
# Run tests
pytest- Unit tests for models and utilities
- Integration tests for API endpoints
- Frontend testing with Selenium (planned)
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Add tests for new functionality
- Commit your changes:
git commit -am 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
Once the application is running, visit:
- Interactive API Docs:
http://localhost:8000/docs - ReDoc Documentation:
http://localhost:8000/redoc
- Advanced Search: Full-text search with filters
- Image Upload: Drag-and-drop image support
- Google Calendar Integration: Sync events with notes
- Export Options: PDF, Markdown, and Word export
- Collaboration: Share notes with other users
- Mobile App: React Native mobile application
- AI Integration: Smart note suggestions
- Voice Notes: Speech-to-text functionality
- Offline Support: Progressive Web App features
- Advanced Analytics: Study progress tracking
- Plugin System: Extensible architecture
This project is licensed under the MIT License - see the LICENSE file for details.
- FastAPI for the excellent web framework
- Bootstrap for the responsive UI components
- MongoDB for the flexible database solution
- Bootstrap Icons for the beautiful icon set
For support and questions:
- Create an issue on GitHub
- Email: support@hellonotes.com
- Documentation: docs.hellonotes.com
HelloNotes - Making student life more organized, one note at a time! πβ¨