Thought Vault is a smart notes hub designed to reduce the effort required to organize and retrieve notes.
Users can add notes without manually deciding where they belong. Thought Vault uses text embeddings and machine-learning-based organization to support semantic "vibe search" and an automatically generated topic hierarchy for browsing notes by subject.
- React
- TypeScript
- Vite
- Node.js
- Express
- TypeScript
- Python
- Sentence Transformers
- scikit-learn
- Hugging Face
- PyTorch
- PostgreSQL
- Docker
- Docker Compose
- GitHub Actions
- ESLint
thought-vault/
├── frontend/ React + TypeScript frontend
├── backend/ Node.js + Express API
├── ml-service/ Python machine-learning service
├── .github/
│ └── workflows/ GitHub Actions CI workflows
├── docker-compose.yaml Local Docker development environment
└── README.md
Database schema and migrations will be maintained through the backend rather than a separate application directory.
Browser
/ \
↓ ↓
Frontend Backend API
/ \
↓ ↓
PostgreSQL ML Service
The frontend communicates with the Node/Express backend.
The backend acts as the primary application API and communicates with both PostgreSQL and the Python ML service.
The Python service is responsible for machine-learning functionality such as text embeddings, semantic similarity, search, and clustering.
Create local environment files from the provided examples.
Frontend:
cp frontend/.env.example frontend/.envBackend:
cp backend/.env.example backend/.envLocal .env files must not be committed.
The recommended way to start the complete local development stack is:
docker compose up --buildThis starts:
- Frontend:
http://localhost:5173 - Backend:
http://localhost:3000 - ML service:
http://localhost:8000 - PostgreSQL:
localhost:5433
PostgreSQL uses port 5433 on the host while continuing to use its standard port 5432 inside Docker.
To stop the stack:
docker compose downTo also delete the local PostgreSQL development volume:
docker compose down -vcd frontend
npm install
npm run devcd backend
npm install
npm run devCreate and activate a Python virtual environment:
cd ml-service
python3 -m venv .venv
source .venv/bin/activateInstall dependencies:
pip install -r requirements.txtStart the service:
uvicorn app.main:app --reload --port 8000Run frontend linting:
cd frontend
npm run lintRun backend linting:
cd backend
npm run lintBuild the frontend:
cd frontend
npm run buildBuild the backend:
cd backend
npm run buildGitHub Actions runs automatically on pull requests targeting main and on pushes to main.
The CI workflow currently checks:
- Frontend linting
- Frontend TypeScript/Vite build
- Backend linting
- Backend TypeScript build
- Python dependency installation
- Python syntax compilation
Database integration testing will be added once database functionality and migrations are implemented.
Development should be associated with a GitHub issue.
Typical workflow:
Issue
↓
Create branch from main
↓
Implement changes
↓
Run lint/build checks locally
↓
Push branch
↓
Open pull request
↓
GitHub Actions CI
↓
Code review
↓
Merge into main
Avoid developing directly on main.
Thought Vault is currently in initial MVP development.
The MVP will focus on establishing the core application architecture, note storage, semantic search, and initial machine-learning-based note organization.