Bygga
Type the product name from the box. Bygga shows every assembly step in 3D, with the parts, screws and tools for each one, and reads it out loud.
Kira panel solar terbaik di Malaysia untuk mengira berapa banyak panel solar yang diperlukan untuk rumah anda. Dapatkan anggaran kos, penjimatan bil elektrik TNB, dan ROI sistem solar dengan mudah. Se
Translation pending
LifestyleTypeScript · CSSGitHub @azuanalias92OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Automatically generate a calculation for DIY Home Solar System
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A solar calculator and electricity tracking toolkit for Malaysian households — live at kirasolar.my.
This repo is the Next.js frontend. It talks to a separate Cloudflare Workers API (Hono + D1).
Requires Node 22 (see .nvmrc).
npm install
npm run dev
Open http://localhost:3000.
Create .env.local in the project root:
NEXT_PUBLIC_API_BASE_URL=http://localhost:8787
NEXT_PUBLIC_GOOGLE_CLIENT_ID=YOUR_GOOGLE_CLIENT_ID
GOOGLE_SITE_VERIFICATION= # optional
Restart npm run dev after changing env vars.
Sign-in uses Google's redirect flow, so it works in every browser without popups. In Google Cloud Console, the OAuth client must list each origin under Authorized JavaScript origins and its /api/auth/google URL under Authorized redirect URIs, for example:
https://kirasolar.my and https://kirasolar.my/api/auth/googlehttp://localhost:3000 and http://localhost:3000/api/auth/google| Command | Description |
|---|---|
npm run dev | Start the dev server |
npm run lint | Run ESLint |
npm run build | Production build (includes type-checking) |
npm run start | Serve the production build |
All routes are locale-prefixed (/ms/... or /en/...). Visiting / redirects based on your saved preference or browser language.
| Route | Page |
|---|---|
/{locale} | Dashboard |
/{locale}/solar-calculator | Solar calculator |
/{locale}/ev-calculator | EV charging cost calculator |
/{locale}/settings | Tariff settings and rates |
Legacy routes (/bill-ev, /ev, /usage, /rates) redirect to their current equivalents.
The frontend expects the API to expose:
POST /auth/google — exchange a Google ID token for a session tokenGET/PUT /calculator/state — store the calculator stateGET/PUT /ev-usage and GET /ev-usage/years — EV usage by yearGET /tariff-rates — rate previewGET /docs — Swagger UIsrc/
├── app/
│ ├── layout.tsx # Root layout, metadata, service worker
│ └── [locale]/ # Internationalized routes
│ ├── page.tsx # Dashboard
│ ├── solar-calculator/
│ ├── ev-calculator/
│ ├── settings/
│ └── items/ # Appliance form
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── dashboard/ # Dashboard sections
│ └── ... # Header, nav, footer, auth button, etc.
├── lib/
│ ├── auth.ts # Client auth storage helpers
│ ├── pdfExport.ts # PDF generation
│ ├── useTranslation.ts # Translation hook
│ └── utils.ts
├── locales/ # en.json, ms.json
└── proxy.ts # Locale routing
public/ # PWA manifest, service worker, sitemaps, OG images
Translations live in src/locales/en.json and src/locales/ms.json. Add new keys to both files and use them via t("section.key") from useTranslation. Missing keys fall back to English.
Deployed on Vercel. Security headers (including CSP) are configured in next.config.mjs — update the CSP when adding new external origins.
Contributions are welcome! Please open a Pull Request. AI coding agents should read AGENTS.md.
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.