Plan smarter. Simulate your mortgage, adjust variables in real time, and see how your future home truly costs.
A simple web application to simulate mortgage ("mutuo") calculations โ determine monthly payments, understand duration and rate impact, and preview estimated outcomes.
Built with TypeScript, React, Vite, and TailwindCSS. Uses MUI Icons and is structured for i18n (react-i18next).
- ๐งฎ Mortgage amount input
- ๐ Adjustable interest rate
- ๐ Duration (years) selection
- ๐ต Variables such as value, rate, etc.
- ๐ฅ๏ธ Responsive UI with range and text inputs
- โ Input validation with error messaging
- Node.js 18+ and npm 9+ recommended
npm installnpm run devVite will print a local URL (usually http://localhost:5173).
npm run buildThe production build will be in the dist/ folder.
npm run previewnpm run lint- TypeScript
- React
- Vite
- TailwindCSS
- MUI Icons
- i18n: i18next, react-i18next, browser language detector, http backend
/
โโ src/
โ โโ components/ # Reusable UI and feature components
โ โโ pages/ # Route-level pages (e.g., Home, DashboardPage)
โ โโ App.* # App entry (if present)
โ โโ main.tsx # React root bootstrap (typical Vite)
โโ public/ # Static assets
โโ index.html # Vite HTML entry
โโ tailwind.config.js # Tailwind configuration
โโ vite.config.ts # Vite configuration
โโ eslint.config.js # ESLint configuration
โโ tsconfig*.json # TypeScript configs
โโ package.json
Note: The UI uses Tailwind utility classes. Some components may import MUI icons. Internationalization packages are included, so translation files/providers might exist or be planned.
This project includes a GitHub Pages deploy script:
- Ensure the repo is connected to GitHub and
gh-pagespackage is installed (already in devDependencies). - Set the repository settings for Pages to serve from the
gh-pagesbranch (created by the deploy script). - Run:
npm run deploy
- If your project is not at the repo root (or needs a base path), configure
baseinvite.config.tsaccordingly.
Absolutely! Here's the full Docker + Kubernetes section translated and polished in professional English for your README. It keeps all the commands, explanations, and workflow.
docker build -t mutuo-simulator:1.0.0 .docker compose upAccess the app at:
http://localhost:3000/mutuo-simulator
The application is deployed on Kubernetes using:
- Deployment
- Service
- Ingress
Folder structure:
k8s/
โโโ deployment.yaml
โโโ service.yaml
โโโ ingress.yaml
minikube startEnable ingress:
minikube addons enable ingressStart the tunnel (required for Ingress access):
sudo minikube tunnelBuild & load the image
docker compose build
minikube image load mutuo-simulator:1.0.0Apply all resources:
kubectl apply -f k8s/Or individually:
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yamlThe app is exposed via Ingress at:
http://mutuo.localtest.me/mutuo-simulator
If needed, add this to your /etc/hosts:
<MINIKUBE-IP> mutuo.localtest.me
Retrieve the Minikube IP:
kubectl get ingress| Description | Command |
|---|---|
| POD Logs | kubectl logs <pod-name> |
| POD Logs (tail) | kubectl logs -f <pod-name> |
| Description | Command |
|---|---|
| Describe a POD | kubectl describe pod <pod-name> |
| Enter a POD | bash kubectl exec -it <pod-name> -- sh |
| Restart deployment | kubectl rollout restart deployment mutuo-simulator-deployment |
| Check rollout status | kubectl rollout status deployment mutuo-simulator-deployment |
| Check resource status | kubectl get [pods/deployments/svc/all] |
| Description | Command |
|---|---|
| Delete all resources | kubectl delete -f k8s/ |
| Delete Deployment | kubectl delete deployment mutuo-simulator-deployment |
| Delete Service | kubectl delete service service mutuo-simulator-svc |
| Delete Ingress | kubectl delete ingress mutuo-simulator-ingress |
docker build -t mutuo-simulator:latest .
kubectl rollout restart deployment mutuo-simulator-deployment
kubectl get podsThis project is licensed under the GNU General Public License. See the LICENSE file for details.
- React and Vite communities
- TailwindCSS
- MUI Icons
- i18next ecosystem