Exin is a web app that shows currency exchange changes and lets you work with multiple currency pairs at the same time.
For each pair, you can also enter multiple amounts in parallel to compare conversions quickly.
This is a simple app built to test the possibilities of lovable.dev.
Use the live app here: https://exin.lovable.app
- Multi-pair workflow with tab-based navigation.
- Multiple amount rows per pair (auto-add rows while typing).
- Two-way conversion editing (
from -> toandto -> from). - Live exchange rate fetching 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.
- PWA setup with service worker registration.
Based on the source code, Exin is built with:
- Frontend framework: React 18 + TypeScript
- Build tool: Vite 5 (
@vitejs/plugin-react-swc) - Routing: React Router (
react-router-dom) - Data fetching/cache: TanStack Query (
@tanstack/react-query) - Styling: Tailwind CSS +
tailwindcss-animate - UI primitives: Radix UI components + shadcn/ui-style component structure
- Charts: Recharts
- Icons: Lucide React
- PWA:
vite-plugin-pwa+virtual:pwa-register - Linting: ESLint + TypeScript ESLint
- Testing: Vitest + Testing Library + JSDOM
- Package managers used in repo: npm and Bun lockfiles are present
- Node.js 18+ (recommended)
- npm (or Bun)
npm installOr with Bun:
bun installnpm run devnpm run buildnpm run previewnpm run lint
npm run testThis repository includes Docker deployment files in the docker/ folder:
Note: docker/deploy-exin.bat is intended for a remote server running Alpine Linux with Docker already installed.
docker/Dockerfile: multi-stage image that:- downloads the project source from GitHub,
- installs dependencies and builds the app,
- serves the built app with Nginx (SPA fallback included).
docker/deploy-exin.bat: Windows batch script that:- asks for SSH host and user,
- connects to your Linux VM over SSH,
- escalates with
suto run all deployment steps as superuser, - downloads only the Dockerfile,
- builds/updates the image,
- recreates the container,
- opens the app URL in your browser.
Run it from the project root:
docker\deploy-exin.batOptional: pass host and user directly.
docker\deploy-exin.bat <SSH host IP> <SSH user>docker/ Dockerfile and Windows deployment script
src/
components/ UI and feature components (tabs, selector, table, chart)
hooks/ Data/query hooks
pages/ Route pages
services/ API integration (`@fawazahmed0/currency-api` + fallback)
data/ Currency catalog and related types
- Exchange rates are requested from
https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-apiwith fallback tohttps://currency-api.pages.dev. - Historical chart data is fetched from dated snapshots and sampled to keep requests manageable.
- The app currently focuses on a compact, fast experimentation flow.
Contributions are welcome. If you want to improve Exin, open an issue or submit a pull request with a clear description of the change.
This project is licensed under the MIT License.