Exin is a currency-exchange calculator for the browser. Work with multiple currency pairs at once, enter several amounts per pair in parallel to compare conversions at a glance, and watch how rates move over time with live data and historical charts. It runs entirely in your browser as a PWA — no backend, no accounts.
Vibe-coded with Claude Code. Originally bootstrapped with Lovable.
- Multi-pair workflow with tab-based navigation.
- Multiple amount rows per pair (rows auto-add while typing).
- Two-way conversion editing (
from → toandto → from). - Live exchange rates from
@fawazahmed0/currency-api(CDN) with a fallback endpoint. - Historical chart data from dated API snapshots with selectable periods (
1W,1M,1Y). - Currency search and pair-selection modal.
- Installable PWA with offline service worker.
Just open ryback2501.github.io/exin — no install required.
Pull and run the latest image:
docker run -d \
--name exin \
-p 8080:80 \
--restart unless-stopped \
ryback2501/exin:latestThe app runs at http://localhost:8080.
Prerequisites: Node.js 20+.
- Clone the repository:
git clone https://github.com/Ryback2501/exin.git cd exin - Install the dependencies:
npm install
- Start it:
Then open the URL Vite prints (
npm run dev
http://localhost:8080/exin/).
To build a production bundle and preview it instead:
npm run build
npm run previewContributions and ideas are welcome. The repository is public — anyone can fork it and open a pull request.
If you have a suggestion, found a bug, or want to discuss a change before implementing it, open an issue — it's the best place to start.
To contribute code:
- Fork the repository
- Create a branch from
dev:git checkout -b feature/your-feature(usefeature/*,bug/*, orchore/*) - Make your changes and commit following Conventional Commits
- Open a pull request targeting the
devbranch
Please keep PRs focused — one feature or fix per PR.