A comprehensive educational note-taking application designed for students and educators. EduNote combines powerful markdown editing, document management, and AI-assisted learning tools in a modern, intuitive interface.
- Advanced Markdown Editor: Rich text editing with Milkdown editor featuring syntax highlighting and live preview
- Document Management: Upload, view, and organize PDF, Word, text, and markdown files with integrated PDF viewer
- User Authentication: Secure JWT-based authentication system with user registration and login
- Note Organization: Create, edit, and manage notes with document linking and archival capabilities
- Multi-format Support: Handle various document types including PDF, DOCX, TXT, and MD files
- Document-Note Integration: Link notes to uploaded documents for contextual learning
- Quiz Integration: Support for embedding quiz references within notes
- Flashcard System: Integration with flashcard functionality for enhanced learning
- Chat Integration: Built-in chat system for collaborative learning
- Search and Filter: Efficient note and document search capabilities
- Responsive Design: Modern UI with Tailwind CSS, optimized for all devices
EduNote follows a microservices architecture with clear separation of concerns:
### Services Overview
- **Auth Service** (Port 8000): User authentication, JWT token management
- **Notes Service** (Port 8001): Note CRUD operations, markdown processing
- **Document Service** (Port 8002): File upload, storage, and retrieval
- **Frontend** (Port 5173): React application with modern UI components
## Prerequisites
### Required Software
- **Python 3.13+**: For backend services
- **Node.js 16+**: For frontend development
- **Docker Desktop**: For database management
### Platform Support
- Windows 10/11 (with PowerShell)
- macOS 10.15+
- Linux (Ubuntu 18.04+)
## Installation & Setup
### 1. Clone the Repository
```bash
git clone <repository-url>
cd EduNote
# Navigate to database directory
cd database
# Start PostgreSQL with Docker
docker-compose up -d
# Verify database is running
docker-compose ps# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r backend/requirements.txtcd frontend
# Install dependencies
npm install
# Verify installation
npm run dev --dry-runUse the Python service manager to start all backend services:
cd backend
# Activate your virtual environment first:
# Windows: ..\venv\Scripts\activate
# macOS/Linux: source ../venv/bin/activate
python start_services.pyThis will automatically start all three backend services (Auth, Notes, Document) on their respective ports.
cd database
docker-compose up -dOption A: All services at once
cd backend
python start_services.pyOption B: Individual services
# Terminal 1 - Auth Service
cd backend/auth_service
# Activate virtual environment first (see setup instructions above)
python main.py --port 8000
# Terminal 2 - Notes Service
cd backend/note_service
# Activate virtual environment first
python main.py --port 8001
# Terminal 3 - Document Service
cd backend/document_service
# Activate virtual environment first
python main.py --port 8002cd frontend
npm run devAfter successful startup, access the application at:
- Main Application: http://localhost:5173
- Auth API Documentation: http://localhost:8000/docs
- Notes API Documentation: http://localhost:8001/docs
- Document API Documentation: http://localhost:8002/docs
For testing and development:
- Email:
demo@user.com - Password:
password123
POST /auth/login- User loginPOST /auth/register- User registrationPOST /auth/logout- User logoutGET /auth/me- Get current user profile
GET /notes- List user notes (with filters)POST /notes- Create new noteGET /notes/{id}- Get specific notePUT /notes/{id}- Update noteDELETE /notes/{id}- Delete note
POST /documents/upload- Upload documentGET /documents- List user documentsGET /documents/{id}- Get document metadataGET /documents/{id}/download- Download documentGET /documents/{id}/view- View document (PDF)PUT /documents/{id}- Update document metadataDELETE /documents/{id}- Delete document
- Host: localhost
- Port: 5432
- Database: app_db
- Username: app_user
- Password: app_pass
- app_user: User authentication and profiles
- note: Note storage with markdown content and metadata
- document: File metadata and storage information
cd database
# Run pending migrations
python scripts/migrate.py migrate
# Create new migration
python scripts/migrate.py create "description"- Create service directory in
backend/ - Add
main.pywith FastAPI app and port argument parsing - Add
requirements.txtwith service dependencies - Update
backend/start_services.pyto include new service - Assign next available port (8003, 8004, etc.)
cd frontend
# Development server with hot reload
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run linting
npm run lintDB_HOST(default: localhost)DB_PORT(default: 5432)DB_NAME(default: app_db)DB_USER(default: app_user)DB_PASSWORD(default: app_pass)
Documents are stored locally in backend/document_service/uploads/ with:
- UUID-based filenames to prevent conflicts
- Maximum file size: 50MB per upload
- Supported formats: PDF, DOCX, DOC, TXT, MD
- Database metadata tracking for all uploads
# Check if database is running
docker-compose ps
# View database logs
docker-compose logs db -f
# Reset database (WARNING: Data loss)
docker-compose down -v
docker-compose up -d# Check if ports are available
netstat -an | grep :8000
netstat -an | grep :8001
netstat -an | grep :8002
# Check virtual environment
# Make sure you're in the activated virtual environment
python --version
pip list
# Verify database connection
python -c "import psycopg2; print('PostgreSQL connection available')"# Clear npm cache
npm cache clean --force
# Reinstall dependencies
rm -rf node_modules package-lock.json
npm install
# Check for port conflicts
netstat -an | grep :5173- Port conflicts: Change service ports in respective
main.pyfiles - Database connection: Ensure Docker is running and database is started
- Module not found: Verify virtual environment is activated and dependencies are installed
- File upload errors: Check
uploads/directory permissions - CORS issues: Verify Vite proxy configuration in
vite.config.js
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- React 19.1.1: Modern UI library with hooks
- Vite 7.1.6: Fast build tool and development server
- Milkdown 7.16.0: Advanced markdown editor
- Tailwind CSS 3.4.17: Utility-first CSS framework
- Lucide React: Beautiful SVG icon library
- FastAPI 0.118.0: Modern Python web framework
- Uvicorn: ASGI server for FastAPI applications
- Pydantic: Data validation and serialization
- Psycopg2: PostgreSQL database adapter
- BCrypt: Password hashing
- JWT: Token-based authentication
- PostgreSQL 16: Robust relational database
- Docker Compose: Container orchestration
- UUID Extensions: Unique identifier generation
- Migrations: Database schema version control
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Check the troubleshooting section above
- Review API documentation at service
/docsendpoints - Create an issue in the project repository
- Check Docker and service logs for detailed error information
