Your second brain: tag, connect, visualize, and chat with your knowledge.
Memora is an intelligent knowledge management system that helps you think better by organizing, connecting, and visualizing your ideas. With AI-powered search and beautiful graph visualizations, Memora transforms how you capture and interact with your knowledge.
- URL Parsing: Automatically extract titles, descriptions, and metadata from web links
- Intelligent Tagging: Organize content with customizable tags and suggestions
- Rich Metadata: Store domain info, favicons, and descriptions for better organization
- Semantic Search: Find content using natural language queries with vector embeddings
- Smart Connections: Discover hidden relationships between your saved content
- Contextual Insights: AI-assisted knowledge discovery and recommendation
- Interactive Node Visualization: See your knowledge as an interconnected web
- Dynamic Relationships: Visualize parent-child content relationships
- Graph Navigation: Explore your knowledge space visually with D3.js
- Modern UI: Clean, responsive interface with dark/light mode support
- Smooth Animations: Fluid interactions powered by Motion library
- Intuitive Design: Focus on content creation and discovery
- Multi-Modal Search: Text-based and vector similarity search
- Real-time Results: Instant search with debounced queries
- Smart Filtering: Filter by tags, favorites, recent items, and more
Memora follows a modern full-stack architecture:
- React 19 with TypeScript for type-safe development
- Vite for lightning-fast development and building
- Tailwind CSS for responsive, utility-first styling
- Motion for smooth animations and micro-interactions
- Zustand for lightweight state management
- React Router for client-side routing
- FastAPI for high-performance Python API
- PostgreSQL for relational data storage
- Elasticsearch for full-text and vector search
- SQLAlchemy for ORM and database migrations
- JWT Authentication for secure user sessions
- Docker Compose for local Elasticsearch setup
- Automated Scripts for easy development environment setup
- Node.js 18+ and Bun (for frontend)
- Python 3.8+ (for backend)
- Docker & Docker Compose (for Elasticsearch)
- PostgreSQL database
git clone https://github.com/whoisasx/Memora.git
cd memoracd elastic-start-local
chmod +x start.sh
./start.shcd server
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export DATABASE_URL="postgresql://username:password@localhost/memora"
export JWT_SECRET_KEY="your-secret-key"
export ELASTICSEARCH_URL="http://localhost:9200"
# Run database migrations
alembic upgrade head
# Start the server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd web
# Install dependencies
bun install
# Set environment variables
echo "VITE_BACKEND_URL=http://localhost:8000" > .env
# Start development server
bun run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
DATABASE_URL=postgresql://username:password@localhost/memora
JWT_SECRET_KEY=your-super-secret-jwt-key
ELASTICSEARCH_URL=http://localhost:9200
DOMAIN_NAME=localhostVITE_BACKEND_URL=http://localhost:8000# Run with auto-reload
uvicorn app.main:app --reload
# Create new migration
alembic revision --autogenerate -m "description"
# Apply migrations
alembic upgrade head
# Run tests (if available)
pytest# Development server
bun run dev
# Build for production
bun run build
# Preview production build
bun run preview
# Lint code
bun run lintThe application uses PostgreSQL with SQLAlchemy ORM. Database models are defined in server/app/models/models.py:
- Users: Authentication and user management
- Contents: Stored URLs with metadata and embeddings
- Tags: Categorization system with usage tracking
POST /auth/signup- User registrationPOST /auth/signin- User loginGET /auth/me- Get current user
GET /contents/- List user contentsPOST /contents/- Add new contentPUT /contents/{id}- Update contentDELETE /contents/{id}- Delete contentPOST /contents/search- Search contents
GET /tags/- List available tagsPOST /tags/search- Search tags
GET /users/{username}- Get user profilePUT /users/{username}- Update user profile
| Category | Technology | Purpose |
|---|---|---|
| Frontend | React 19 + TypeScript | UI Framework |
| Vite | Build Tool | |
| Tailwind CSS | Styling | |
| Motion | Animations | |
| Zustand | State Management | |
| Axios | HTTP Client | |
| Backend | FastAPI | Web Framework |
| SQLAlchemy | ORM | |
| Alembic | Database Migrations | |
| Pydantic | Data Validation | |
| JWT | Authentication | |
| Database | PostgreSQL | Primary Database |
| Elasticsearch | Search & Embeddings | |
| Infrastructure | Docker | Containerization |
| Docker Compose | Local Development |
We welcome contributions! Here's how you can help:
- 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
- Follow the existing code style and conventions
- Write meaningful commit messages
- Add tests for new features when possible
- Update documentation as needed
- Ensure all tests pass before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: Report bugs or request features
- Discussions: Join the community
- FastAPI for the excellent Python web framework
- React Team for the amazing frontend library
- Elasticsearch for powerful search capabilities
- Tailwind CSS for making styling enjoyable
- Motion for beautiful animations
Built with ❤️ for better thinking
⭐ Star this repo if you find it helpful!
