Thank you for your interest in contributing to Mingly! This guide covers everything you need to get started.
- Node.js 20+
- npm 9+
- Git
- (Optional) Docker for RAG server
- (Optional) Ollama for local LLM testing
git clone https://github.com/Baldri/mingly.git
cd mingly
npm install
npm run devThis starts both the Vite dev server (renderer) and Electron (main process).
src/
main/ # Electron main process (Node.js)
database/ # sql.js database layer
llm-clients/ # Provider SDKs (Anthropic, OpenAI, Google, Ollama, Generic OpenAI)
server/ # REST + WebSocket API server
services/ # ServiceLayer (transport-agnostic business logic)
security/ # Input sanitization, rate limiting, RBAC, sensitive data detection
mcp/ # Model Context Protocol integration + auto-tool-selector
rag/ # RAG (Retrieval-Augmented Generation) + RAG-Wissen client
ipc/ # Modular IPC handler modules
integrations/ # Slack, Notion, Obsidian, DocMind
tracking/ # Usage analytics + budget management
network/ # Network AI server bridge
utils/ # MCP sanitizer, encrypted store, simple store
renderer/ # React frontend (browser context)
components/ # UI components
stores/ # Zustand state management
utils/ # Utilities (i18n, id-generator, etc.)
server/ # Headless server entry point
shared/ # Types, constants shared between main/renderer
tests/
unit/ # Unit tests (Vitest)
e2e/ # Integration / E2E tests
| Script | Description |
|---|---|
npm run dev |
Start development (Vite + Electron) |
npm run build |
Build main + renderer |
npm run build:server |
Build headless server |
npm run start:server |
Run headless server |
npm test |
Run tests |
npm run test:watch |
Run tests in watch mode |
npm run test:coverage |
Run tests with coverage |
npm run typecheck |
TypeScript type checking |
npm run dist |
Build distributable installers |
- TypeScript everywhere (strict mode)
- React functional components with hooks
- Zustand for state management
- Tailwind CSS for styling
- No
anytypes without justification - Prefer
constoverlet - Use
async/awaitover raw Promises
We use Vitest for all tests. Tests live in tests/ (unit tests) and alongside source files for component tests.
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Watch mode
npm run test:watch- All PRs must pass existing tests
- New features should include tests
- Aim for meaningful coverage, not 100% line coverage
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run tests:
npm test - Run type check:
npm run typecheck - Commit with a descriptive message
- Push and open a PR against
main
- Tests pass (
npm test) - Types check (
npm run typecheck) - No sensitive data (API keys, personal paths)
- Follows existing code style
- Includes tests for new functionality
Use GitHub Issues to report bugs or request features. Include:
- Steps to reproduce
- Expected vs actual behavior
- OS and app version
- Relevant logs (Settings > Export GDPR Data for full audit log)
Be respectful, constructive, and inclusive. We follow the Contributor Covenant.