An open-source, privacy-first web application for tracking and organizing your online purchases across multiple platforms. Deployed as a static site on GitHub Pages — all data stays in your browser.
https://my-purchases.mobulum.com
Use invitation code demo to explore the app.
- Multi-provider support — Allegro (API + import), Amazon, AliExpress, Temu (CSV/JSON import); eBay, OLX, Vinted, Allegro Lokalnie (coming soon)
- My Purchases Collector import — One-click import of JSON exports from the My Purchases Collector browser extension; automatically assigns items to the correct providers with full deduplication
- Cost calculator — Select purchases and calculate total costs with per-currency breakdown and converted totals
- Currency conversion — Automatic historical exchange rate conversion to your preferred currency
- Custom tagging — Create tag groups (e.g., Category, Location) with custom values and assign them to purchases
- Purchase grouping — Combine related purchases into compound items (e.g., "New PC Build")
- Export / Import — Full data portability via JSON export and import
- 17 languages — English, Polish, German, French, Spanish, Italian, Dutch, Portuguese (BR), Russian, Japanese, Korean, Chinese (Simplified & Traditional), Arabic, Hindi, Bengali, Turkish
- Dark mode — Light, dark, and system-following themes
- Privacy-first — All data stored locally in IndexedDB; no server, no tracking cookies
- Invitation-based access — Credentials delivered via JSON invitation files
| Layer | Technology |
|---|---|
| Framework | React 19 + TypeScript 5.9 |
| Build | Vite 7 |
| Styling | Tailwind CSS v4 |
| State | Zustand 5 |
| Storage | Dexie.js 4 (IndexedDB) |
| i18n | react-i18next |
| Icons | Lucide React |
| Routing | React Router 7 |
| Deployment | GitHub Pages via GitHub Actions |
npm install
npm run devOpen http://localhost:5173 and enter code demo.
├── public/
│ └── invitations/ # Invitation JSON files
├── src/
│ ├── analytics/ # Event tracking system
│ ├── components/ # React components
│ │ ├── common/ # Button, Modal
│ │ ├── currency/ # Currency setup & conversion progress
│ │ ├── data/ # Export/Import dialogs
│ │ ├── invitation/ # Welcome & auth screen
│ │ ├── layout/ # Header, Footer, Layout
│ │ ├── providers/ # Provider sync/import panel + Collector import button
│ │ ├── purchases/ # Purchase list, cards, filters, groups, cost calculator
│ │ └── tags/ # Tag assigner, tag group manager
│ ├── db/ # Dexie.js database & sync logic
│ ├── i18n/ # i18next config + 17 locale files
│ ├── pages/ # Route pages
│ ├── providers/ # Provider implementations
│ │ ├── allegro/ # Allegro (hybrid: API + import)
│ │ ├── amazon/ # Amazon (import only)
│ │ ├── aliexpress/ # AliExpress (import only)
│ │ ├── temu/ # Temu (import only)
│ │ ├── ebay/ # eBay (coming soon)
│ │ ├── olx/ # OLX (coming soon)
│ │ ├── vinted/ # Vinted (coming soon)
│ │ └── allegro-lokalnie/ # Allegro Lokalnie (coming soon)
│ ├── stores/ # Zustand state management
│ ├── types/ # Shared TypeScript interfaces
│ └── utils/ # Helpers, export/import logic
├── docs/ # Project documentation
└── .github/workflows/ # CI/CD pipeline
- Architecture — System design & data flow
- Providers — How provider integrations work
- Invitations — Creating & distributing invitation files
- Internationalization — Adding or updating translations
- Contributing — Development workflow & guidelines
MIT — Copyright (c) 2026 mobulum.com. See LICENSE.