The Japanese Language Notes Manager is a personal productivity tool designed to help learners of Japanese organize their language study materials. It consists of three main components:
- A local server that stores and manages all notes
- A web interface for comprehensive note management
- A browser extension for quick access and note-taking while browsing
Learning Japanese involves accumulating vocabulary, grammar points, kanji, and cultural notes from various sources. This project solves several problems:
- Centralized storage: All notes in one place instead of scattered across apps
- Quick access: Browser extension for immediate note-taking while reading Japanese content
- Organization: Structured categorization for efficient review
- Local-first approach: Privacy-focused with all data stored on your own machine
- Cross-device availability: Web interface works on any device on your local network
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ │ │ │ │ │
│ Browser Extension │───▶│ Local Node │◀──▶│ SQLite/PostgreSQL │
│ (React-based) │ │ Server (API) │ │ Database │
│ │ │ │ │ │
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘
▲
│
▼
┌──────────────────────┐ ┌──────────────────────┐
│ │ │ │
│ Web Interface │────│ Auto-start Service │
│ (React App) │ │ (Systemd/Launchd) │
│ │ │ │
└──────────────────────┘ └──────────────────────┘
-
Backend Server:
- Primary: Django with REST API (DRF)
- Backup: Node.js/Express alternative
- Manages all CRUD operations for notes
- Runs persistently on localhost
-
Database:
- SQLite (default for simplicity)
- PostgreSQL option for advanced users
- Stores all notes with categories, tags, and metadata
-
Web Interface:
- React-based single-page application
- Full-featured note management
- Advanced filtering and search
-
Browser Extension:
- Provides quick access to notes
- Allows capturing content from web pages
- Minimalist UI for distraction-free use
-
Auto-start Service:
- Ensures server starts on system boot
- Configured for Windows, macOS, and Linux
-
Note Management:
- Create, read, update, and delete notes
- Categorize as Vocabulary/Grammar/Kanji/Phrase
- Add examples and tags
- Markdown formatting support
-
Organization:
- Filter by category
- Tag-based organization
- Full-text search
- Sort by date/alphabetical
-
Quick Capture:
- Browser extension popup
- Save current page content
- Context menu integration
-
Local-First Architecture:
- All data stays on your machine
- No cloud dependencies
- Optional backup/export
-
Cross-Component Sync:
- Web app and extension share the same data
- Real-time updates via API
-
Persistent Service:
- Auto-starts with your computer
- Runs in background
- Python 3.8+ (for Django backend)
- Node.js 16+ (for web interface and extension)
- Modern browser (Chrome/Firefox/Edge)
-
Clone the repository:
git clone https://github.com/yourusername/japanese-notes-manager.git cd japanese-notes-manager -
Set up backend:
cd server pip install -r requirements.txt python manage.py migrate -
Set up frontend:
cd ../web npm install -
Set up extension:
cd ../extension npm install
-
Start the backend server:
cd server python manage.py runserver -
Start the web interface:
cd ../web npm start -
Load the extension:
- In Chrome, go to
chrome://extensions - Enable "Developer mode"
- Click "Load unpacked" and select the
extensiondirectory
- In Chrome, go to
Edit server/config/settings.py:
# Change port if needed
SERVER_PORT = 8000
# Enable CORS for additional domains
CORS_ALLOWED_ORIGINS += [
"http://your-other-domain:port"
]To switch to PostgreSQL:
- Install psycopg2:
pip install psycopg2-binary - Update settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'japanese_notes',
'USER': 'your_db_user',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '5432',
}
}japanese-notes-manager/
├── server/ # Django backend
│ ├── notes_api/ # Main app
│ │ ├── migrations/ # Database migrations
│ │ ├── models.py # Data models
│ │ ├── serializers.py # API serializers
│ │ └── views.py # API views
│ └── config/ # Project settings
│
├── web/ # React web interface
│ ├── public/ # Static files
│ └── src/ # React components
│ ├── components/ # UI components
│ ├── pages/ # Application pages
│ └── services/ # API services
│
└── extension/ # Browser extension
├── src/ # Extension source
│ ├── popup/ # Popup UI
│ ├── background.js # Extension background
│ └── content.js # Content scripts
└── manifest.json # Extension manifest
- Batteries-included framework with admin interface
- ORM for easy database management
- Scalable from personal use to multi-user
- Secure with built-in protections
- Component-based architecture for UI consistency
- Reusable between web app and extension
- State management for responsive interface
- Large ecosystem of supporting libraries
- Zero-configuration - works out of the box
- Serverless - no separate database process
- Portable - single file database
- Sufficient for personal use scale
- Basic note CRUD operations
- Category filtering
- Browser extension integration
- Auto-start service configuration
- Anki export functionality
- Rich text editor integration
- Tag management system
- Backup/restore functionality
- Mobile companion app
- Cross-device sync option
- Spaced repetition integration
- Community plugin system
While this is primarily a personal project, contributions are welcome:
- Fork the repository
- Create a feature branch
- Submit a pull request with:
- Clear description of changes
- Updated documentation if needed
- Passing tests (when applicable)
MIT License - Free for personal and educational use
This README provides comprehensive documentation of your project's purpose, architecture, and technical details - perfect for both users and potential employers reviewing your resume. Would you like me to add any additional sections or modify the existing content?